junos-ex-conf-system

Junos system configuration module

  • Version: 2019-01-01

    junos-ex-conf-system@2019-01-01


    
      module junos-ex-conf-system {
    
        yang-version 1;
    
        namespace
          "http://yang.juniper.net/junos-ex/conf/system";
    
        prefix jc-system;
    
        import junos-common-ddl-extensions {
          prefix junos;
          revision-date "2019-01-01";
        }
        import junos-common-types {
          prefix jt;
          revision-date "2019-01-01";
        }
        import junos-ex-conf-root {
          prefix jc;
          revision-date "2019-01-01";
        }
    
        organization "Juniper Networks, Inc.";
    
        contact "yang-support@juniper.net";
    
        description
          "Junos system configuration module";
    
        revision "2019-01-01" {
          description "Junos: 21.3R1.9";
        }
    
    
        augment /jc:configuration {
          uses system-group;
        }
    
        augment /jc:configuration/jc:groups {
          uses system-group;
        }
    
        grouping system-group {
          container system {
            description "System parameters";
            uses juniper-system;
          }  // container system
        }  // grouping system-group
    
        grouping juniper-system {
          uses apply-advanced;
    
          leaf host-name {
            type string {
              junos:posix-pattern "^[[:alnum:]._-]+$";
              junos:pattern-message "Must be a string of alphanumericals, dashes or underscores";
              length "1 .. 255";
            }
            description
              "Hostname for this router";
          }
    
          container root-authentication {
            description
              "Authentication information for the root login";
            uses authentication-object;
          }  // container root-authentication
    
          container commit {
            description
              "Configuration commit management";
            uses apply-advanced;
    
            container commit-synchronize-server {
              description
                "Commit synchronize server configuration";
              uses apply-advanced;
    
              container traceoptions {
                description
                  "Traceoptions for commit synchronize server";
                uses apply-advanced;
    
                leaf no-remote-trace {
                  junos:must "("system tracing")";
                  junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
                  type empty;
                  description
                    "Disable remote tracing";
                }
    
                container file {
                  description
                    "Trace file information";
                  leaf filename {
                    type string {
                      junos:posix-pattern "![/ %]";
                      junos:pattern-message "Must not contain '/', % or a space";
                      length "1 .. 1024";
                    }
                    description
                      "Name of file in which to write trace information";
                  }
    
                  leaf size {
                    type string;
                    description
                      "Maximum trace file size";
                  }
    
                  leaf files {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "2 .. 1000";
                      }
                    }
                    default "3";
                    description
                      "Maximum number of trace files";
                  }
    
                  choice world-readable-choice {
                    leaf world-readable {
                      type empty;
                      description
                        "Allow any user to read the log file";
                    }
                    leaf no-world-readable {
                      type empty;
                      description
                        "Don't allow any user to read the log file";
                    }
                  }  // choice world-readable-choice
    
                  leaf microsecond-stamp {
                    type empty;
                    description
                      "Timestamp with microsecond granularity";
                  }
                }  // container file
    
                list flag {
                  key "name";
                  description
                    "Tracing parameters";
                  leaf name {
                    type enumeration {
                      enum "ephemeral-commit" {
                        value 0;
                        description
                          "Trace ephemeral database commit synchronize requests";
                      }
                      enum "operational-command" {
                        value 1;
                        description
                          "Trace operational command requests";
                      }
                      enum "debug" {
                        value 2;
                        description
                          "Trace debug level information";
                      }
                      enum "all" {
                        value 3;
                        description
                          "Trace all information";
                      }
                    }
                  }
                }  // list flag
              }  // container traceoptions
            }  // container commit-synchronize-server
    
            choice persist-groups-choice {
              leaf persist-groups-inheritance {
                type empty;
                description
                  "Build configuration groups inheritance path";
              }
              leaf no-persist-groups-inheritance {
                type empty;
                description
                  "Don't build configuration groups inheritance path";
              }
            }  // choice persist-groups-choice
    
            leaf ignore-xpath-failure {
              type empty;
              status deprecated;
              description
                "Ignore xpath failures during commit";
            }
    
            container server {
              description
                "Commit server (batch commit)";
              uses apply-advanced;
    
              leaf maximum-aggregate-pool {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 4294967295";
                  }
                }
                description
                  "Maximum number of transactions to aggregate";
              }
    
              leaf maximum-entries {
                type union {
                  type uint32;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Maximum number of transactions allowed in queue";
              }
    
              leaf commit-interval {
                type union {
                  type uint32;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Number of seconds between commits";
              }
    
              leaf retry-attempts {
                type union {
                  type uint32;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                default "5";
                description
                  "Retry attempts for commit failure due to db lock error";
              }
    
              leaf retry-interval {
                type union {
                  type uint32;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                default "20";
                description
                  "Retry interval in seconds for commit failure";
              }
    
              leaf days-to-keep-error-logs {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 366";
                  }
                }
                description
                  "Number of day to keep error log entries";
              }
    
              leaf redirect-completion-status {
                type string;
                description
                  "Redirect Async commit status to server configured here";
              }
    
              list commit-schedule-profile {
                key "name";
                ordered-by user;
                description
                  "Scheduling profile for asynchronous low priority commits";
                leaf name {
                  type string {
                    length "1 .. 64";
                  }
                  description
                    "Schedule name for low priority commits";
                }
    
                uses apply-advanced;
    
                leaf start-time {
                  type string {
                    junos:posix-pattern "^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])$";
                    junos:pattern-message "Time must be of the format hh:mm";
                  }
                  description
                    "Time when the schedule starts processing low priority jobs (hh:mm)";
                }
    
                leaf end-time {
                  type string {
                    junos:posix-pattern "^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])$";
                    junos:pattern-message "Time must be of the format hh:mm";
                  }
                  description
                    "Time when the schedule stops processing low priority jobs (hh:mm)";
                }
    
                leaf interruptible {
                  type empty;
                  description
                    "Allow the low priority jobs to be interrupted during the schedule";
                }
    
                leaf load-average {
                  type jt:unsigned-float;
                  description
                    "Max load average of system at which schedule starts (last 1 min)";
                }
              }  // list commit-schedule-profile
    
              container traceoptions {
                description
                  "Trace options for commit server";
                uses apply-advanced;
    
                leaf no-remote-trace {
                  junos:must "("system tracing")";
                  junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
                  type empty;
                  description
                    "Disable remote tracing";
                }
    
                container file {
                  description
                    "Trace file information";
                  leaf filename {
                    type string {
                      junos:posix-pattern "![/ %]";
                      junos:pattern-message "Must not contain '/', % or a space";
                      length "1 .. 1024";
                    }
                    description
                      "Name of file in which to write trace information";
                  }
    
                  leaf size {
                    type string;
                    description
                      "Maximum trace file size";
                  }
    
                  leaf files {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "2 .. 1000";
                      }
                    }
                    default "3";
                    description
                      "Maximum number of trace files";
                  }
    
                  choice world-readable-choice {
                    leaf world-readable {
                      type empty;
                      description
                        "Allow any user to read the log file";
                    }
                    leaf no-world-readable {
                      type empty;
                      description
                        "Don't allow any user to read the log file";
                    }
                  }  // choice world-readable-choice
    
                  leaf microsecond-stamp {
                    type empty;
                    description
                      "Timestamp with microsecond granularity";
                  }
                }  // container file
    
                list flag {
                  key "name";
                  description
                    "Tracing parameters";
                  leaf name {
                    type enumeration {
                      enum "all" {
                        value 0;
                        description
                          "Trace all operations";
                      }
                      enum "commit-server" {
                        value 1;
                        description
                          "Trace commit server";
                      }
                      enum "batch" {
                        value 2;
                        description
                          "Trace file batching";
                      }
                      enum "configuration" {
                        value 3;
                        description
                          "Reading of configuration";
                      }
                    }
                  }
                }  // list flag
              }  // container traceoptions
            }  // container server
    
            leaf fast-synchronize {
              junos:must "("chassis redundancy graceful-switchover")";
              junos:must-message "[chassis redundancy graceful-switchover] has to be configured";
              junos:must "("system commit synchronize")";
              junos:must-message "[system commit synchronize] has to be configured";
              type empty;
              description
                "Parallelized commit synchronizing multiple routing-engines";
            }
    
            leaf synchronize {
              type empty;
              description
                "Synchronize commit on both Routing Engines by default";
            }
    
            leaf delta-export {
              type empty;
              description
                "Export only delta configuration during commit";
            }
    
            container notification {
              junos:must "("system services extension-service notification")";
              junos:must-message "Notification services must be configured, mandatory to use commit notifications";
              presence "enable notification";
              description
                "Notify applications upon commit complete";
              uses apply-advanced;
            }  // container notification
    
            leaf peers-synchronize {
              type empty;
              description
                "Synchronize commit on remote peers by default";
            }
    
            list peers {
              key "name";
              max-elements 3;
              ordered-by user;
              description
                "Commit peers-synchronize details";
              uses peers-type;
            }  // list peers
          }  // container commit
    
          container configuration-database {
            description
              "Configuration database parameters";
            uses apply-advanced;
    
            container ephemeral {
              presence "enable ephemeral";
              description
                "Configure ephemeral database";
              uses apply-advanced;
    
              list instance {
                key "name";
                max-elements 8;
                ordered-by user;
                description
                  "Configure ephemeral instances";
                leaf name {
                  type string {
                    junos:posix-pattern "!(^default$|[^a-zA-Z0-9_.-])";
                    junos:pattern-message "Instance name must be a string of alphanumericals, dashes or underscores and must not be default as a name. Default name is used when default ephemeral database is created";
                    length "1 .. 32";
                  }
                  description
                    "Name of ephemeral instance";
                }
    
                uses apply-advanced;
              }  // list instance
    
              leaf commit-synchronize-model {
                type enumeration {
                  enum "asynchronous" {
                    junos:must "((!("chassis redundancy graceful-switchover") || ".. allow-commit-synchronize-with-gres"))";
                    junos:must-message "Asynchronous commit in ephemeral is not supported along with GRES, please refer documentation for more details";
                    value 0;
                    description
                      "Commit synchronize on backup happens asynchronously";
                  }
                  enum "synchronous" {
                    value 1;
                    description
                      "Commit synchronize on backup happens synchronously";
                  }
                }
                default "asynchronous";
                description
                  "Select commit synchronize model for ephemeral";
              }
    
              leaf ignore-ephemeral-default {
                type empty;
                description
                  "Ignore ephemeral default database";
              }
    
              leaf allow-commit-synchronize-with-gres {
                type empty;
                description
                  "Allow ephemeral commit synchronize with GRES";
              }
            }  // container ephemeral
    
            container virtual-memory-mapping {
              description
                "Virtual memory mapping configuration";
              uses apply-advanced;
    
              list process {
                key "name";
                ordered-by user;
                description
                  "Per process configuration";
                leaf name {
                  type string;
                  description
                    "Name of the process";
                }
    
                uses apply-advanced;
    
                leaf fixed-size {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "512 .. 696320";
                    }
                  }
                  units "kilobytes";
                  description
                    "Fixed memory mapped size in kilobytes";
                }
    
                leaf page-pooling-size {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "512 .. 696320";
                    }
                  }
                  units "kilobytes";
                  description
                    "Page pooling memory mapped size in kilobytes";
                }
    
                leaf page-leak-debug {
                  type empty;
                  description
                    "Page leak detection";
                }
              }  // list process
    
              container process-set {
                junos:must "("chassis network-services enhanced-ip")";
                junos:must-message "process-set is allowed only when enhanced-ip is configured";
                description
                  "Set of processes using page pool";
                uses apply-advanced;
    
                container subscriber-management {
                  presence
                    "enable subscriber-management";
                  description
                    "Subscriber management processes will use page pooling";
                  uses apply-advanced;
    
                  leaf fixed-size {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "512 .. 696320";
                      }
                    }
                    units "kilobytes";
                    description
                      "Fixed memory mapped size";
                  }
    
                  leaf page-pooling-size {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "512 .. 696320";
                      }
                    }
                    units "kilobytes";
                    description
                      "Page pooling memory mapped size";
                  }
                }  // container subscriber-management
              }  // container process-set
            }  // container virtual-memory-mapping
    
            leaf extend-size {
              junos:must "(!("system configuration-database max-db-size"))";
              junos:must-message "extend-size and max-db-size are mutually exclusive";
              type empty;
              description
                "Extend configuration database upto 1.5G";
            }
    
            container resize {
              presence "enable resize";
              description
                "Resize configuration database";
              uses apply-advanced;
    
              leaf database-size-on-disk {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 1024";
                  }
                }
                units "Megabytes";
                default "450";
                description
                  "Minimum configuration database size on disk";
              }
    
              leaf database-size-diff {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 1024";
                  }
                }
                units "Megabytes";
                default "100";
                description
                  "Difference between database size and actual usage";
              }
            }  // container resize
          }  // container configuration-database
    
          container scripts {
            description "Scripting mechanisms";
            uses scripts_type;
          }  // container scripts
    
          container login {
            description
              "Names, login classes, and passwords for users";
            uses apply-advanced;
    
            container retry-options {
              description
                "Configure password retry options";
              uses apply-advanced;
    
              leaf tries-before-disconnect {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "2 .. 10";
                  }
                }
                default "3";
                description
                  "Number of times user is allowed to try password";
              }
    
              leaf backoff-threshold {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 3";
                  }
                }
                default "2";
                description
                  "Number of password failures before delay is introduced";
              }
    
              leaf backoff-factor {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "5 .. 10";
                  }
                }
                default "5";
                description
                  "Delay factor after 'backoff-threshold' password failures";
              }
    
              leaf minimum-time {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "20 .. 60";
                  }
                }
                default "20";
                description
                  "Minimum total connection time if all attempts fail";
              }
    
              leaf maximum-time {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "20 .. 300";
                  }
                }
                default "120";
                description
                  "Maximum time the connection will remain for user to enter username and password";
              }
    
              leaf lockout-period {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 43200";
                  }
                }
                units "minutes";
                description
                  "Amount of time user account is locked after 'tries-before-disconnect' failures";
              }
            }  // container retry-options
    
            leaf idle-timeout {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 60";
                }
              }
              units "minutes";
              description
                "Maximum idle time before logout";
            }
    
            list class {
              key "name";
              description "Login class";
              uses login-class-object;
            }  // list class
    
            list user {
              key "name";
              description "Username";
              uses login-user-object;
            }  // list user
    
            container password {
              description
                "Password configuration";
              uses apply-advanced;
    
              leaf minimum-character-changes {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type int32 {
                    range "4 .. 15";
                  }
                }
                description
                  "Minimum number of character changes between old and new passwords";
              }
    
              leaf minimum-reuse {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type int32 {
                    range "1 .. 20";
                  }
                }
                description
                  "Minimum number of old passwords which should not be same as the new password";
              }
    
              leaf maximum-lifetime {
                junos:must "(".. minimum-reuse")";
                junos:must-message "'minimum-reuse' must be configured with maximum-lifetime";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type int32 {
                    range "30 .. 365";
                  }
                }
                description
                  "Maximum password lifetime in days";
              }
    
              leaf minimum-lifetime {
                junos:must "(".. minimum-reuse")";
                junos:must-message "'minimum-reuse' must be configured with minimum-lifetime";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type int32 {
                    range "1 .. 30";
                  }
                }
                description
                  "Minimum password lifetime in days";
              }
    
              leaf minimum-length {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type int32 {
                    range "6 .. 20";
                  }
                }
                description
                  "Minimum password length for all users";
              }
    
              leaf maximum-length {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type int32 {
                    range "20 .. 128";
                  }
                }
                description
                  "Maximum password length for all users";
              }
    
              leaf change-type {
                type enumeration {
                  enum "character-sets" {
                    value 0;
                    description
                      "Count number of character type";
                  }
                  enum "set-transitions" {
                    value 1;
                    description
                      "Count changes in character type";
                  }
                }
                description
                  "Password change type";
              }
    
              leaf minimum-changes {
                type union {
                  type int32;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Minimum number of changes in password";
              }
    
              leaf minimum-numerics {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type int32 {
                    range "1 .. 128";
                  }
                }
                description
                  "Minimum number of numeric class characters in password";
              }
    
              leaf minimum-upper-cases {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type int32 {
                    range "1 .. 128";
                  }
                }
                description
                  "Minimum number of upper-case class characters in password";
              }
    
              leaf minimum-lower-cases {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type int32 {
                    range "1 .. 128";
                  }
                }
                description
                  "Minimum number of lower-case class characters in password";
              }
    
              leaf minimum-punctuations {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type int32 {
                    range "1 .. 128";
                  }
                }
                description
                  "Minimum number of punctuation class characters in password";
              }
    
              leaf format {
                type enumeration {
                  enum "sha1" {
                    value 0;
                    description
                      "Secure Hash Algorithm 1";
                  }
                  enum "sha256" {
                    value 1;
                    description
                      "Secure Hash Algorithm 256 ($5$)";
                  }
                  enum "sha512" {
                    value 2;
                    description
                      "Secure Hash Algorithm 512 ($6$)";
                  }
                  enum "md5" {
                    value 3;
                    description
                      "Message Digest 5";
                  }
                  enum "des" {
                    value 4;
                    description
                      "Digital Encryption Standard";
                  }
                }
                description
                  "Encryption method to use for password";
              }
            }  // container password
    
            container deny-sources {
              description
                "Sources from which logins are denied";
              uses apply-advanced;
    
              leaf-list address {
                type jt:ipprefix-optional;
                ordered-by user;
                description
                  "IPv4/IPv6 addresses, prefix length optional, or hostnames";
              }
            }  // container deny-sources
    
            leaf announcement {
              type string {
                length "1 .. 2048";
              }
              description
                "System announcement message (displayed after login)";
            }
    
            leaf message {
              type string {
                length "1 .. 2048";
              }
              description "System login message";
            }
          }  // container login
    
          container export-format {
            description
              "Setting the properties related to exporting the data";
            uses apply-advanced;
    
            container json {
              description
                "Set the type of JSON format";
              uses apply-advanced;
    
              choice json-type {
                leaf verbose {
                  type empty;
                  description
                    "All the objects will be emitted as JSON arrays";
                }
                leaf ietf {
                  type empty;
                  description
                    "JSON format will be emitted as per ietf draft";
                }
              }  // choice json-type
            }  // container json
    
            container state-data {
              description
                "Setting the properties with respect to state data";
              uses apply-advanced;
    
              container json {
                description
                  "Set the type of JSON format for state data rendering";
                uses apply-advanced;
    
                choice json-type {
                  leaf compact {
                    type empty;
                    description
                      "Display JSON in compact format";
                  }
                }  // choice json-type
              }  // container json
            }  // container state-data
          }  // container export-format
    
          container autoinstallation {
            presence "enable autoinstallation";
            description
              "Autoinstallation configuration";
          }  // container autoinstallation
    
          container services {
            presence "enable services";
            description "System services";
            uses apply-advanced;
    
            container netproxy {
              presence "enable netproxy";
              description
                "Netproxy configuration";
            }  // container netproxy
    
            container finger {
              presence "enable finger";
              description
                "Allow finger requests from remote systems";
              uses apply-advanced;
    
              leaf connection-limit {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 250";
                  }
                }
                units "connections";
                default "75";
                description
                  "Limit number of simultaneous connections";
              }
    
              leaf rate-limit {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 250";
                  }
                }
                units "connections per minute";
                default "150";
                description
                  "Limit incoming connection rate";
              }
            }  // container finger
    
            container ftp {
              presence "enable ftp";
              description
                "Allow FTP file transfers";
              uses apply-advanced;
    
              leaf connection-limit {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 250";
                  }
                }
                units "connections";
                default "75";
                description
                  "Limit number of simultaneous connections";
              }
    
              leaf rate-limit {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 250";
                  }
                }
                units "connections per minute";
                default "150";
                description
                  "Limit incoming connection rate";
              }
    
              leaf-list authentication-order {
                type enumeration {
                  enum "radius" {
                    value 0;
                    description
                      "Remote Authentication Dial-In User Service";
                  }
                  enum "tacplus" {
                    value 1;
                    description
                      "TACACS+ authentication services";
                  }
                  enum "password" {
                    value 2;
                    description
                      "Traditional password authentication";
                  }
                }
                ordered-by user;
              }
            }  // container ftp
    
            container ssh {
              presence "enable ssh";
              description "Allow ssh access";
              uses apply-advanced;
    
              leaf-list authentication-order {
                type enumeration {
                  enum "radius" {
                    value 0;
                    description
                      "Remote Authentication Dial-In User Service";
                  }
                  enum "tacplus" {
                    value 1;
                    description
                      "TACACS+ authentication services";
                  }
                  enum "password" {
                    value 2;
                    description
                      "Traditional password authentication";
                  }
                }
                ordered-by user;
              }
    
              leaf root-login {
                type enumeration {
                  enum "allow" {
                    value 0;
                    description
                      "Allow root access via ssh";
                  }
                  enum "deny" {
                    value 1;
                    description
                      "Do not allow root access via ssh";
                  }
                  enum "deny-password" {
                    value 2;
                    description
                      "Allow for non-password-based authentication methods only";
                  }
                }
                description
                  "Configure root access via ssh";
              }
    
              leaf no-challenge-response {
                type empty;
                description
                  "Disables ssh challenge-response based authentication methods";
              }
    
              leaf no-password-authentication {
                type empty;
                description
                  "Disables ssh password based authentication methods";
              }
    
              leaf no-passwords {
                type empty;
                description
                  "Disables ssh password and challenge-response based authentication";
              }
    
              leaf no-public-keys {
                type empty;
                description
                  "Disables ssh public key based authentication";
              }
    
              choice tcp_forwarding_choices {
                leaf tcp-forwarding {
                  type empty;
                  description
                    "Allow forwarding TCP connections via SSH";
                }
                leaf no-tcp-forwarding {
                  type empty;
                  description
                    "Do not allow forwarding TCP connections via SSH";
                }
              }  // choice tcp_forwarding_choices
    
              leaf-list protocol-version {
                type enumeration {
                  enum "v2" {
                    value 0;
                    description
                      "Version 2 ssh protocol";
                  }
                }
                ordered-by user;
                description
                  "Specify ssh protocol versions supported";
              }
    
              leaf max-sessions-per-connection {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type int32 {
                    range "1 .. 65535";
                  }
                }
                description
                  "Maximum number of sessions per single SSH connection";
              }
    
              leaf max-pre-authentication-packets {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type int32 {
                    range "20 .. 2147483647";
                  }
                }
                description
                  "Maximum number of pre-authentication SSH packets per single SSH connection";
              }
    
              leaf sftp-server {
                type empty;
                description
                  "Globally enable incoming SFTP connections";
              }
    
              leaf-list ciphers {
                type enumeration {
                  enum "3des-cbc" {
                    value 0;
                    description
                      "Triple DES in CBC mode";
                  }
                  enum "aes128-cbc" {
                    value 1;
                    description
                      "128-bit AES with Cipher Block Chaining";
                  }
                  enum "aes192-cbc" {
                    value 2;
                    description
                      "192-bit AES with Cipher Block Chaining";
                  }
                  enum "aes256-cbc" {
                    value 3;
                    description
                      "256-bit AES with Cipher Block Chaining";
                  }
                  enum "aes128-ctr" {
                    value 4;
                    description
                      "128-bit AES with Counter Mode";
                  }
                  enum "aes192-ctr" {
                    value 5;
                    description
                      "192-bit AES with Counter Mode";
                  }
                  enum "aes256-ctr" {
                    value 6;
                    description
                      "256-bit AES with Counter Mode";
                  }
                  enum "aes128-gcm@openssh.com" {
                    value 7;
                    description
                      "128-bit AES with Galois/Counter Mode";
                  }
                  enum "aes256-gcm@openssh.com" {
                    value 8;
                    description
                      "256-bit AES with Galois/Counter Mode";
                  }
                  enum
                    "chacha20-poly1305@openssh.com" {
                    value 9;
                    description
                      "ChaCha20 stream cipher and Poly1305 MAC";
                  }
                  enum "arcfour128" {
                    value 10;
                    description
                      "128-bit RC4 with Cipher Block Chaining ";
                  }
                  enum "arcfour256" {
                    value 11;
                    description
                      "256-bit RC4 with Cipher Block Chaining ";
                  }
                  enum "arcfour" {
                    value 12;
                    description
                      "128-bit RC4 with Cipher Block Chaining ";
                  }
                  enum "blowfish-cbc" {
                    value 13;
                    description
                      "128-bit Blowfish with Cipher Block Chaining ";
                  }
                  enum "cast128-cbc" {
                    value 14;
                    description
                      "128-bit CAST with Cipher Block Chaining ";
                  }
                }
                ordered-by user;
                description
                  "Specify the ciphers allowed for protocol version 2";
              }
    
              leaf-list macs {
                type enumeration {
                  enum "hmac-md5" {
                    value 0;
                    description
                      "Hash-based MAC using Message-Digest 5 (MD5)";
                  }
                  enum
                    "hmac-md5-etm@openssh.com" {
                    value 1;
                    description
                      "Hash-based Encrypt-then-MAC using Message-Digest 5 (MD5)";
                  }
                  enum "hmac-sha1" {
                    value 2;
                    description
                      "Hash-based MAC using Secure Hash Algorithm (SHA1)";
                  }
                  enum
                    "hmac-sha1-etm@openssh.com" {
                    value 3;
                    description
                      "Hash-based Encrypt-then-MAC using Secure Hash Algorithm (SHA1)";
                  }
                  enum "umac-64@openssh.com" {
                    value 4;
                    description
                      "UMAC-64 algorithm specified in RFC4418";
                  }
                  enum "umac-128@openssh.com" {
                    value 5;
                    description
                      "UMAC-128 algorithm specified in RFC4418";
                  }
                  enum "umac-64-etm@openssh.com" {
                    value 6;
                    description
                      "Encrypt-then-MAC using UMAC-64 algorithm specified in RFC4418";
                  }
                  enum
                    "umac-128-etm@openssh.com" {
                    value 7;
                    description
                      "Encrypt-then-MAC using UMAC-128 algorithm specified in RFC4418";
                  }
                  enum "hmac-sha2-256" {
                    value 8;
                    description
                      "Hash-based MAC using Secure Hash Algorithm (SHA2)";
                  }
                  enum
                    "hmac-sha2-256-etm@openssh.com" {
                    value 9;
                    description
                      "Hash-based Encrypt-then-Mac using Secure Hash Algorithm (SHA2)";
                  }
                  enum "hmac-sha2-256-96" {
                    value 10;
                    description
                      "96-bits of Hash-based MAC using SHA2";
                  }
                  enum "hmac-sha2-512" {
                    value 11;
                    description
                      "Hash-based MAC using Secure Hash Algorithm (SHA2)";
                  }
                  enum
                    "hmac-sha2-512-etm@openssh.com" {
                    value 12;
                    description
                      "Hash-based Encrypt-then-Mac using Secure Hash Algorithm (SHA2)";
                  }
                  enum "hmac-sha2-512-96" {
                    value 13;
                    description
                      "96-bits of Hash-based MAC using SHA2";
                  }
                  enum "hmac-ripemd160" {
                    value 14;
                    description
                      "Hash-based MAC using RIPEMD";
                  }
                  enum
                    "hmac-ripemd160-etm@openssh.com" {
                    value 15;
                    description
                      "Hash-based Encrypt-then-MAC using RIPEMD";
                  }
                  enum "hmac-sha1-96" {
                    value 16;
                    description
                      "96-bits of Hash-based MAC using SHA1";
                  }
                  enum
                    "hmac-sha1-96-etm@openssh.com" {
                    value 17;
                    description
                      "96-bits of Hash-based Encrypt-then-MAC using SHA1";
                  }
                  enum "hmac-md5-96" {
                    value 18;
                    description
                      "96-bits of Hash-based MAC using MD5";
                  }
                  enum
                    "hmac-md5-96-etm@openssh.com" {
                    value 19;
                    description
                      "96-bits of Hash-based Encrypt-then-MAC using MD5";
                  }
                }
                ordered-by user;
                description
                  "Message Authentication Code algorithms allowed (SSHv2)";
              }
    
              leaf-list key-exchange {
                type enumeration {
                  enum "curve25519-sha256" {
                    value 0;
                    description
                      "The EC Diffie-Hellman on Curve25519 with SHA2-256 hash";
                  }
                  enum "ecdh-sha2-nistp256" {
                    value 1;
                    description
                      "The EC Diffie-Hellman on nistp256 with SHA2-256";
                  }
                  enum "ecdh-sha2-nistp384" {
                    value 2;
                    description
                      "The EC Diffie-Hellman on nistp384 with SHA2-384";
                  }
                  enum "ecdh-sha2-nistp521" {
                    value 3;
                    description
                      "The EC Diffie-Hellman on nistp521 with SHA2-512";
                  }
                  enum "group-exchange-sha2" {
                    value 4;
                    description
                      "The RFC 4419 group exchange with SHA2-256 hash";
                  }
                  enum "group-exchange-sha1" {
                    value 5;
                    description
                      "The RFC 4419 group exchange with SHA1 hash";
                  }
                  enum "dh-group14-sha1" {
                    value 6;
                    description
                      "The RFC 4253 mandated group14 with SHA1 hash";
                  }
                  enum "dh-group1-sha1" {
                    value 7;
                    description
                      "The RFC 4253 mandated group1 with SHA1 hash";
                  }
                }
                ordered-by user;
                description
                  "Specify ssh key-exchange for Diffie-Hellman keys";
              }
    
              leaf client-alive-count-max {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 255";
                  }
                }
                default "3";
                description
                  "Threshold of missing client-alive responses that triggers a disconnect";
              }
    
              leaf client-alive-interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 65535";
                  }
                }
                units "seconds";
                default "0";
                description
                  "Frequency of client-alive requests";
              }
    
              container hostkey-algorithm {
                presence
                  "enable hostkey-algorithm";
                description
                  "Specify permissible SSH host-key algorithms";
                uses apply-advanced;
    
                choice ssh-dss-choice {
                  leaf no-ssh-dss {
                    type empty;
                    description
                      "Disallow generation of 1024-bit DSA host-key";
                  }
                  container ssh-dss {
                    presence "enable ssh-dss";
                    status deprecated;
                    description
                      "Allow generation of 1024-bit DSA host-key";
                    uses apply-advanced;
    
                    choice allow-deny {
                      leaf allow {
                        type empty;
                        status deprecated;
                        description
                          "Allow generation of 1024-bit DSA host-key";
                      }
                      leaf deny {
                        type empty;
                        status deprecated;
                        description
                          "Disallow generation of 1024-bit DSA host-key";
                      }
                    }  // choice allow-deny
                  }  // container ssh-dss
                }  // choice ssh-dss-choice
    
                choice ssh-rsa-choice {
                  leaf no-ssh-rsa {
                    type empty;
                    description
                      "Disallow generation of RSA host-key";
                  }
                  container ssh-rsa {
                    presence "enable ssh-rsa";
                    description
                      "Allow generation of RSA host-key";
                    uses apply-advanced;
    
                    choice allow-deny {
                      leaf allow {
                        type empty;
                        status deprecated;
                        description
                          "Allow generation of RSA host-key";
                      }
                      leaf deny {
                        type empty;
                        status deprecated;
                        description
                          "Disallow generation of RSA host-key";
                      }
                    }  // choice allow-deny
                  }  // container ssh-rsa
                }  // choice ssh-rsa-choice
    
                choice ssh-ecdsa-choice {
                  leaf no-ssh-ecdsa {
                    type empty;
                    description
                      "Disallow generation of ECDSA host-key";
                  }
                  container ssh-ecdsa {
                    presence "enable ssh-ecdsa";
                    description
                      "Allow generation of ECDSA host-key";
                    uses apply-advanced;
    
                    choice allow-deny {
                      leaf allow {
                        type empty;
                        status deprecated;
                        description
                          "Allow generation of ECDSA host-key";
                      }
                      leaf deny {
                        type empty;
                        status deprecated;
                        description
                          "Disallow generation of ECDSA host-key";
                      }
                    }  // choice allow-deny
                  }  // container ssh-ecdsa
                }  // choice ssh-ecdsa-choice
    
                choice ssh-ed25519-choice {
                  leaf no-ssh-ed25519 {
                    type empty;
                    description
                      "Disallow generation of ED25519 host-key";
                  }
                  leaf ssh-ed25519 {
                    type empty;
                    description
                      "Allow generation of ED25519 host-key";
                  }
                }  // choice ssh-ed25519-choice
              }  // container hostkey-algorithm
    
              leaf fingerprint-hash {
                type enumeration {
                  enum "sha2-256" {
                    value 0;
                    description
                      "Enable use of SHA2-256";
                  }
                  enum "md5" {
                    value 1;
                    description
                      "Enable use of MD5";
                  }
                }
                description
                  "Configure hash algorithm used when displaying key fingerprints";
              }
    
              leaf authorized-keys-command {
                junos:must "(".. authorized-keys-command-user")";
                junos:must-message "'authorized-keys-command-user' must be configured with authorized-keys-command";
                type string {
                  length "1 .. 1024";
                }
                description
                  "Specifies a command string to be used to look up the user's public keys";
              }
    
              leaf authorized-keys-command-user {
                junos:must "(".. authorized-keys-command")";
                junos:must-message "'authorized-keys-command' must be configured with authorized-keys-command-user";
                type string {
                  length "1 .. 256";
                }
                description
                  "Specifies the user under whose account the authorized-keys-command is run";
              }
    
              container rekey {
                description
                  "Limits before session keys are renegotiated";
                uses apply-advanced;
    
                leaf data-limit {
                  type string;
                  units "bytes";
                  description
                    "Data limit before renegotiating session keys";
                }
    
                leaf time-limit {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 1440";
                    }
                  }
                  units "minutes";
                  description
                    "Time limit before renegotiating session keys";
                }
              }  // container rekey
    
              leaf port {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 65535";
                  }
                }
                default "22";
                description
                  "Port number to accept incoming connections";
              }
    
              leaf log-key-changes {
                type empty;
                description
                  "Log changes to authorized keys to syslog";
              }
    
              leaf connection-limit {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 250";
                  }
                }
                units "connections";
                default "75";
                description
                  "Limit number of simultaneous connections";
              }
    
              leaf rate-limit {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 250";
                  }
                }
                units "connections per minute";
                default "150";
                description
                  "Limit incoming connection rate";
              }
            }  // container ssh
    
            container telnet {
              presence "enable telnet";
              description "Allow telnet login";
              uses apply-advanced;
    
              leaf connection-limit {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 250";
                  }
                }
                units "connections";
                default "75";
                description
                  "Limit number of simultaneous connections";
              }
    
              leaf rate-limit {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 250";
                  }
                }
                units "connections per minute";
                default "150";
                description
                  "Limit incoming connection rate";
              }
    
              leaf-list authentication-order {
                type enumeration {
                  enum "radius" {
                    value 0;
                    description
                      "Remote Authentication Dial-In User Service";
                  }
                  enum "tacplus" {
                    value 1;
                    description
                      "TACACS+ authentication services";
                  }
                  enum "password" {
                    value 2;
                    description
                      "Traditional password authentication";
                  }
                }
                ordered-by user;
              }
            }  // container telnet
    
            container xnm-clear-text {
              presence "enable xnm-clear-text";
              description
                "Allow clear text-based JUNOScript connections";
              uses apply-advanced;
    
              leaf connection-limit {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 250";
                  }
                }
                units "connections";
                default "75";
                description
                  "Limit number of simultaneous connections";
              }
    
              leaf rate-limit {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 250";
                  }
                }
                units "connections per minute";
                default "150";
                description
                  "Limit incoming connection rate";
              }
            }  // container xnm-clear-text
    
            container xnm-ssl {
              presence "enable xnm-ssl";
              description
                "Allow SSL-based JUNOScript connections";
              uses apply-advanced;
    
              leaf local-certificate {
                junos:must "("security certificates local $$")";
                junos:must-message "certificate must be configured under 'security certificates local'";
                type string;
                description
                  "Name of local X.509 certificate to use";
              }
    
              choice ssl-renegotiation-choice {
                leaf ssl-renegotiation {
                  type empty;
                  description
                    "Allow SSL renegotiation";
                }
                leaf no-ssl-renegotiation {
                  type empty;
                  description
                    "Don't allow SSL renegotiation";
                }
              }  // choice ssl-renegotiation-choice
    
              leaf connection-limit {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 250";
                  }
                }
                units "connections";
                default "75";
                description
                  "Limit number of simultaneous connections";
              }
    
              leaf rate-limit {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 250";
                  }
                }
                units "connections per minute";
                default "150";
                description
                  "Limit incoming connection rate";
              }
            }  // container xnm-ssl
    
            container jeb {
              presence "enable jeb";
              description
                "Configure the Juniper Juniper Entropy Beacon service";
              uses apply-advanced;
    
              leaf port {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1025 .. 65535";
                  }
                }
                default "57005";
                description "JEB Service port";
              }
    
              leaf rbg {
                type enumeration {
                  enum "default-rng" {
                    value 0;
                    description "Default CSPRNG";
                  }
                  enum "hmac-drbg" {
                    junos:must "("system rng hmac-drbg")";
                    junos:must-message "system rng must be set to hmac-drbg";
                    value 1;
                    description
                      "HMAC DRBG, NIST SP800-90A";
                  }
                  enum "jrbc" {
                    value 2;
                    description
                      "Juniper Random Bit Conditioner";
                  }
                }
                description
                  "Random Bit Generator";
              }
    
              leaf max-seed-size {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 65536";
                  }
                }
                default "4096";
                description
                  "Maximum allowed size for a requested seed";
              }
    
              container tls {
                presence "enable tls";
                description
                  "Configure TLS Attributes for JEB Service";
                uses apply-advanced;
    
                leaf cert-bundle {
                  type string;
                  description
                    "Certificate Bundle File";
                }
    
                leaf certificate {
                  type string;
                  description
                    "TLS Server Certificate";
                }
    
                leaf key {
                  type string;
                  description "Private Key File";
                }
              }  // container tls
            }  // container jeb
    
            container extension-service {
              description
                "Enable JUNOS extension services";
              uses apply-advanced;
    
              container request-response {
                description
                  "Allow request-response API execution";
                uses apply-advanced;
    
                container grpc {
                  description
                    "Grpc server configuration";
                  uses apply-advanced;
    
                  choice request-response-type {
                    container ssl {
                      description
                        "SSL based API connection settings";
                      uses apply-advanced;
    
                      leaf address {
                        type jt:ipaddr;
                        default "::";
                        description
                          "Address to listen for incoming connections";
                      }
    
                      leaf port {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 65535";
                          }
                        }
                        default "32767";
                        description
                          "Port number to accept incoming connections";
                      }
    
                      leaf-list local-certificate {
                        type string;
                        ordered-by user;
                        description
                          "Name of local X.509 certificate to use";
                      }
    
                      container mutual-authentication {
                        description
                          "Enable TLS mutual authentication";
                        uses apply-advanced;
    
                        leaf certificate-authority {
                          junos:must "(("security pki ca-profile $$" || "security pki ca-profile-group $$"))";
                          junos:must-message "ca-profile must be configured under 'security pki ca-profile' or 'security pki ca-profile-group'";
                          type string {
                            junos:posix-pattern "^.{1,32}$";
                            junos:pattern-message "Must be string of 32 characters or less";
                          }
                          description
                            "Certificate authority profile";
                        }
    
                        leaf client-certificate-request {
                          type enumeration {
                            enum
                              "no-certificate" {
                              value 0;
                              description
                                "Client certificate is not requested";
                            }
                            enum
                              "request-certificate" {
                              value 1;
                              description
                                "Request certificate from client, do not verify";
                            }
                            enum
                              "request-certificate-and-verify" {
                              value 2;
                              description
                                "Request certificate from client, verify if provided";
                            }
                            enum
                              "require-certificate" {
                              value 3;
                              description
                                "Client certificate is mandatory, do not verify";
                            }
                            enum
                              "require-certificate-and-verify" {
                              value 4;
                              description
                                "Client certificate is mandatory, certificate is verified";
                            }
                          }
                          default
                            "require-certificate-and-verify";
                          description
                            "Specify requirements for client certificate";
                        }
                      }  // container mutual-authentication
                    }  // container ssl
                  }  // choice request-response-type
    
                  leaf max-connections {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 30";
                      }
                    }
                    default "5";
                    description
                      "Maximum number of connections";
                  }
    
                  leaf routing-instance {
                    junos:must "("routing-instances $$")";
                    junos:must-message "Referenced routing instance must be defined under [edit routing-instances] hierarchy level or in case of managment routing-instance 'mgmt_junos' make sure 'system management-instance' configuration is set";
                    type string {
                      junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
                      junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
                    }
                    description
                      "Routing instance for grpc";
                  }
                }  // container grpc
              }  // container request-response
    
              container notification {
                presence "enable notification";
                description
                  "Enable Notification Services";
                uses apply-advanced;
    
                leaf port {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 65535";
                    }
                  }
                  default "1883";
                  description
                    "Port number to accept incoming connections";
                }
    
                leaf max-connections {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 20";
                    }
                  }
                  default "20";
                  description
                    "Maximum number of connections";
                }
    
                leaf broker-socket-send-buffer-size {
                  type union {
                    type uint32;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  default "65536";
                  description
                    "Socket send buffer size for the broker to publish the messages";
                }
    
                container allow-clients {
                  description
                    "Client IPs from which notifications are allowed";
                  uses apply-advanced;
    
                  leaf-list address {
                    type jt:ipprefix-optional;
                    ordered-by user;
                    description
                      "IPv4/IPv6 addresses, prefix length optional, or hostnames";
                  }
                }  // container allow-clients
              }  // container notification
    
              container traceoptions {
                description
                  "Trace options for JSD";
                uses apply-advanced;
    
                leaf no-remote-trace {
                  junos:must "("system tracing")";
                  junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
                  type empty;
                  description
                    "Disable remote tracing";
                }
    
                container file {
                  description
                    "Trace file information";
                  leaf filename {
                    type string {
                      junos:posix-pattern "![/ %]";
                      junos:pattern-message "Must not contain '/', % or a space";
                      length "1 .. 1024";
                    }
                    description
                      "Name of file in which to write trace information";
                  }
    
                  leaf size {
                    type string;
                    description
                      "Maximum trace file size";
                  }
    
                  leaf files {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "2 .. 1000";
                      }
                    }
                    default "10";
                    description
                      "Maximum number of trace files";
                  }
    
                  choice world-readable-choice {
                    leaf world-readable {
                      type empty;
                      description
                        "Allow any user to read the log file";
                    }
                    leaf no-world-readable {
                      type empty;
                      description
                        "Don't allow any user to read the log file";
                    }
                  }  // choice world-readable-choice
    
                  leaf match {
                    type jt:regular-expression;
                    description
                      "Regular expression for lines to be logged";
                  }
                }  // container file
    
                container level {
                  description
                    "Trace verbosity level";
                  choice level-name {
                    leaf error {
                      type empty;
                      description
                        "Only trace error events";
                    }
                  }  // choice level-name
                }  // container level
    
                list flag {
                  key "name";
                  ordered-by user;
                  description
                    "Tracing parameters";
                  leaf name {
                    type enumeration {
                      enum "timer" {
                        value 0;
                        description
                          "Trace internal timer events";
                      }
                      enum "timeouts" {
                        value 1;
                        description
                          "Trace timeouts ";
                      }
                      enum "routing-socket" {
                        value 2;
                        description
                          "Trace routing socket calls";
                      }
                      enum "general" {
                        value 3;
                        description
                          "Trace general events";
                      }
                      enum "config" {
                        value 4;
                        description
                          "Trace config events";
                      }
                      enum "grpc" {
                        value 5;
                        description
                          "Trace grpc related events";
                      }
                      enum "libgrpc-debug" {
                        value 6;
                        description
                          "Trace all lib grpc related events";
                      }
                      enum "libgrpc-errors" {
                        value 7;
                        description
                          "Trace lib grpc errors";
                      }
                      enum "libgrpc-info" {
                        value 8;
                        description
                          "Trace lib grpc info and errors";
                      }
                      enum "notification" {
                        value 9;
                        description
                          "Trace notification events";
                      }
                      enum "all" {
                        value 10;
                        description
                          "Trace everything";
                      }
                    }
                  }
                }  // list flag
              }  // container traceoptions
            }  // container extension-service
    
            container netconf {
              description
                "Allow NETCONF connections";
              uses apply-advanced;
    
              container ssh {
                presence "enable ssh";
                description
                  "Allow NETCONF over SSH";
                uses apply-advanced;
    
                leaf connection-limit {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 250";
                    }
                  }
                  units "connections";
                  default "75";
                  description
                    "Limit number of simultaneous connections";
                }
    
                leaf rate-limit {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 250";
                    }
                  }
                  units "connections per minute";
                  default "150";
                  description
                    "Limit incoming connection rate";
                }
    
                leaf client-alive-count-max {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 255";
                    }
                  }
                  default "3";
                  description
                    "Threshold of missing client-alive responses that triggers a disconnect";
                }
    
                leaf client-alive-interval {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 65535";
                    }
                  }
                  units "seconds";
                  default "0";
                  description
                    "Frequency of client-alive requests";
                }
    
                leaf port {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type int32 {
                      range "1 .. 65535";
                    }
                  }
                  default "830";
                  description
                    "Service port number";
                }
              }  // container ssh
    
              container tls {
                description
                  "Allow NETCONF over TLS";
                uses apply-advanced;
    
                leaf local-certificate {
                  junos:must "((".. default-client-identity" || ".. client-identity"))";
                  junos:must-message "Either 'client-identity' OR 'default-client-identity' must be configured";
                  type string {
                    junos:posix-pattern "^.{1,32}$";
                    junos:pattern-message "Must be string of 32 characters or less";
                  }
                  description
                    "Local Certificate ID";
                }
    
                list client-identity {
                  key "name";
                  ordered-by user;
                  description
                    "Individual TLS/NETCONF client information";
                  leaf name {
                    type string {
                      length "1 .. 31";
                    }
                    description "Client ID";
                  }
    
                  uses apply-advanced;
    
                  leaf fingerprint {
                    junos:must "(unique ".. .. client-identity <*> fingerprint $$")";
                    junos:must-message "Fingerprint must be unique for each client";
                    type string {
                      junos:posix-pattern "^([0-9a-fA-F]){2}(:([0-9a-fA-F]){2}){0,254}$";
                      junos:pattern-message "Invalid fingerprint. Refer x509c2n:tls-fingerprint format";
                    }
                    description
                      "Client certificate fingerprint in x509c2n:tls-fingerprint format";
                  }
    
                  leaf map-type {
                    type enumeration {
                      enum "specified" {
                        junos:must "(".. username")";
                        junos:must-message "When the map-type is 'specified', 'username' is mandatory";
                        value 0;
                        description
                          "Use the specified username as NETCONF username";
                      }
                      enum "san-dirname-cn" {
                        value 1;
                        description
                          "Use the common name (CN) field of SAN DirName as NETCONF username";
                      }
                    }
                    description "Map Type";
                  }
    
                  leaf username {
                    junos:must "(".. map-type specified")";
                    junos:must-message "map-type must be 'specified' to use this username. If it is anything other than 'specified', remove this username";
                    type string {
                      junos:posix-pattern "^[[:alnum:]_]{1,}[.]{0,1}[[:alnum:]_-]{0,}[.]{0,1}[[:alnum:]_-]{0,}$";
                      junos:pattern-message "Must contain characters (alphanumerics, underscores or hyphens) beginning with an alphanumeric or an underscore character.";
                    }
                    description
                      "NETCONF username if the map-type is specified";
                  }
                }  // list client-identity
    
                container default-client-identity {
                  description
                    "Default TLS/NETCONF client information";
                  uses apply-advanced;
    
                  leaf map-type {
                    type enumeration {
                      enum "specified" {
                        junos:must "(".. username")";
                        junos:must-message "When the map-type is 'specified', 'username' is mandatory";
                        value 0;
                        description
                          "Use the specified username as NETCONF username";
                      }
                      enum "san-dirname-cn" {
                        value 1;
                        description
                          "Use the common name (CN) field of SAN DirName as NETCONF username";
                      }
                    }
                    description "Map Type";
                  }
    
                  leaf username {
                    junos:must "(".. map-type specified")";
                    junos:must-message "map-type must be 'specified' to use this username. If it is anything other than 'specified', remove this username";
                    type string {
                      junos:posix-pattern "^[[:alnum:]_]{1,}[.]{0,1}[[:alnum:]_-]{0,}[.]{0,1}[[:alnum:]_-]{0,}$";
                      junos:pattern-message "Must contain characters (alphanumerics, underscores or hyphens) beginning with an alphanumeric or an underscore character.";
                    }
                    description
                      "NETCONF username if the map-type is specified";
                  }
                }  // container default-client-identity
    
                container traceoptions {
                  description
                    "NETCONF over TLS trace options";
                  uses apply-advanced;
    
                  leaf no-remote-trace {
                    junos:must "("system tracing")";
                    junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
                    type empty;
                    description
                      "Disable remote tracing";
                  }
    
                  container file {
                    description
                      "Trace file information";
                    leaf filename {
                      type string {
                        junos:posix-pattern "![/ %]";
                        junos:pattern-message "Must not contain '/', % or a space";
                        length "1 .. 1024";
                      }
                      description
                        "Name of file in which to write trace information";
                    }
    
                    leaf size {
                      type string;
                      description
                        "Maximum trace file size";
                    }
    
                    leaf files {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "2 .. 1000";
                        }
                      }
                      default "3";
                      description
                        "Maximum number of trace files";
                    }
    
                    choice world-readable-choice {
                      leaf world-readable {
                        type empty;
                        description
                          "Allow any user to read the log file";
                      }
                      leaf no-world-readable {
                        type empty;
                        description
                          "Don't allow any user to read the log file";
                      }
                    }  // choice world-readable-choice
    
                    leaf match {
                      type jt:regular-expression;
                      description
                        "Regular expression for lines to be logged";
                    }
                  }  // container file
    
                  leaf level {
                    type enumeration {
                      enum "error" {
                        value 0;
                        description
                          "Match error conditions";
                      }
                      enum "warning" {
                        value 1;
                        description
                          "Match warning messages";
                      }
                      enum "notice" {
                        value 2;
                        description
                          "Match conditions that should be handled specially";
                      }
                      enum "info" {
                        value 3;
                        description
                          "Match informational messages";
                      }
                      enum "verbose" {
                        value 4;
                        description
                          "Match verbose messages";
                      }
                      enum "all" {
                        value 5;
                        description
                          "Match all levels";
                      }
                    }
                    default "error";
                    description
                      "Level of debugging output";
                  }
    
                  list flag {
                    key "name";
                    ordered-by user;
                    description
                      "Tracing parameters";
                    leaf name {
                      type enumeration {
                        enum "general" {
                          value 0;
                          description
                            "Log the tls-proxyd infra related messages";
                        }
                        enum "pki" {
                          value 1;
                          description
                            "Log the PKI related messages";
                        }
                        enum "plugin" {
                          value 2;
                          description
                            "Log the plugin messages";
                        }
                        enum "app" {
                          value 3;
                          description
                            "Log the application data in plain text";
                        }
                        enum "all" {
                          value 4;
                          description
                            "Log the entire communication";
                        }
                      }
                    }
                  }  // list flag
                }  // container traceoptions
              }  // container tls
    
              container unified {
                description
                  "Schema options for unified netconf";
                uses apply-advanced;
    
                leaf unhide {
                  type empty;
                  description
                    "Unhide unified netconf get from CLI";
                }
              }  // container unified
    
              container hello-message {
                description
                  "Configuration for NETCONF 'hello' message";
                uses apply-advanced;
    
                container yang-module-capabilities {
                  description
                    "Advertise YANG module capabilities of the device";
                  uses apply-advanced;
    
                  leaf advertise-native-yang-modules {
                    type empty;
                    description
                      "Advertise Junos native YANG modules";
                  }
    
                  leaf advertise-custom-yang-modules {
                    type empty;
                    description
                      "Advertise custom YANG modules installed on the device";
                  }
    
                  leaf advertise-standard-yang-modules {
                    type empty;
                    description
                      "Advertise standard YANG modules supported by the device";
                  }
                }  // container yang-module-capabilities
              }  // container hello-message
    
              container netconf-monitoring {
                description
                  "NETCONF monitoring feature (RFC 6022) related configuration";
                uses apply-advanced;
    
                container netconf-state-schemas {
                  description
                    "Configuration to retrieve the schemas supported by the NETCONF server";
                  uses apply-advanced;
    
                  leaf retrieve-custom-yang-modules {
                    type empty;
                    description
                      "Retrieve the custom YANG modules installed on the device";
                  }
    
                  leaf retrieve-standard-yang-modules {
                    type empty;
                    description
                      "Retrieve the standard YANG modules supported by the device";
                  }
                }  // container netconf-state-schemas
              }  // container netconf-monitoring
    
              leaf rfc-compliant {
                type empty;
                description
                  "Make the NETCONF sessions compliant to RFC 4741";
              }
    
              leaf yang-compliant {
                type empty;
                description
                  "Make the NETCONF sessions compliant to yang schemas";
              }
    
              leaf flatten-commit-results {
                junos:must "(".. rfc-compliant")";
                junos:must-message "The option 'flatten-commit-results' is only applicable when 'rfc-compliant' is configured";
                type empty;
                description
                  "Suppress the 'commit-results' XML subtree in 'commit' rpc response";
              }
    
              container yang-modules {
                description
                  "Tweak settings for YANG modules served on this device";
                uses apply-advanced;
    
                leaf device-specific {
                  type empty;
                  description
                    "Serve YANG modules specific to this device";
                }
    
                leaf emit-extensions {
                  type empty;
                  description
                    "Enable serving of Junos YANG extension modules";
                }
              }  // container yang-modules
    
              container traceoptions {
                description
                  "NETCONF trace options";
                uses apply-advanced;
    
                leaf no-remote-trace {
                  junos:must "("system tracing")";
                  junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
                  type empty;
                  description
                    "Disable remote tracing";
                }
    
                container file {
                  description
                    "Trace file information";
                  leaf filename {
                    type string {
                      junos:posix-pattern "![/ %]";
                      junos:pattern-message "Must not contain '/', % or a space";
                      length "1 .. 1024";
                    }
                    description
                      "Name of file in which to write trace information";
                  }
    
                  leaf size {
                    type string;
                    description
                      "Maximum trace file size";
                  }
    
                  leaf files {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "2 .. 1000";
                      }
                    }
                    default "3";
                    description
                      "Maximum number of trace files";
                  }
    
                  choice world-readable-choice {
                    leaf world-readable {
                      type empty;
                      description
                        "Allow any user to read the log file";
                    }
                    leaf no-world-readable {
                      type empty;
                      description
                        "Don't allow any user to read the log file";
                    }
                  }  // choice world-readable-choice
    
                  leaf match {
                    type jt:regular-expression;
                    description
                      "Regular expression for lines to be logged";
                  }
                }  // container file
    
                list flag {
                  key "name";
                  ordered-by user;
                  description
                    "Tracing parameters";
                  leaf name {
                    type enumeration {
                      enum "all" {
                        value 0;
                        description
                          "Log the entire communication";
                      }
                      enum "incoming" {
                        value 1;
                        description
                          "Log all incoming data";
                      }
                      enum "outgoing" {
                        value 2;
                        description
                          "Log all outgoing data";
                      }
                      enum "debug" {
                        value 3;
                        description
                          "Log debug level information";
                      }
                    }
                  }
                }  // list flag
    
                leaf on-demand {
                  type empty;
                  description
                    "Enable on-demand tracing";
                }
              }  // container traceoptions
    
              container notification {
                presence "enable notification";
                description
                  "Enable Netconf notification service";
                uses apply-advanced;
    
                leaf interleave {
                  type empty;
                  description
                    "Enable interleaving";
                }
              }  // container notification
            }  // container netconf
    
            container tftp-server {
              junos:must "("services app-engine")";
              junos:must-message "TFTP server can be enabled only when app-engine is configured";
              presence "enable tftp-server";
              description
                "Enable TFTP file transfers";
              uses apply-advanced;
    
              leaf connection-limit {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 250";
                  }
                }
                units "connections";
                default "75";
                description
                  "Limit number of simultaneous connections";
              }
    
              leaf rate-limit {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 250";
                  }
                }
                units "connections per minute";
                default "150";
                description
                  "Limit incoming connection rate";
              }
            }  // container tftp-server
    
            leaf dtcp-only {
              type empty;
              description
                "Allow subscriber DTCP based lawful intercept only";
            }
    
            container rest {
              description
                "Allow RPC execution over HTTP(S) connection";
              uses apply-advanced;
    
              container http {
                presence "enable http";
                description
                  "Unencrypted HTTP connection settings";
                uses apply-advanced;
    
                leaf port {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1024 .. 65535";
                    }
                  }
                  default "3000";
                  description
                    "Port number to accept HTTP connections";
                }
    
                leaf-list addresses {
                  type jt:ipv4addr;
                  ordered-by user;
                  description
                    "List of addresses to listen for incoming connections";
                }
              }  // container http
    
              container https {
                description
                  "Encrypted HTTPS connections";
                uses apply-advanced;
    
                leaf port {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1024 .. 65535";
                    }
                  }
                  default "3443";
                  description
                    "Port number to accept HTTPS connections";
                }
    
                leaf-list addresses {
                  type jt:ipv4addr;
                  ordered-by user;
                  description
                    "List of addresses to listen for incoming connections";
                }
    
                leaf server-certificate {
                  type string {
                    junos:posix-pattern "^.{1,32}$";
                    junos:pattern-message "Must be string of 32 characters or less";
                  }
                  description
                    "Local certificate identifier";
                }
    
                leaf ca-chain {
                  junos:must "(("security pki ca-profile $$" || "security pki ca-profile-group $$"))";
                  junos:must-message "ca-profile must be configured under
     'security pki ca-profile' or
     'security pki ca-profile-group'";
                  type string {
                    junos:posix-pattern "^.{1,32}$";
                    junos:pattern-message "Must be string of 32 characters or less";
                  }
                  description
                    "Certificate authority chain profile";
                }
    
                leaf-list cipher-list {
                  type enumeration {
                    enum "rsa-with-rc4-128-md5" {
                      value 0;
                      description
                        "RSA, 128bit rc4, md5 hash";
                    }
                    enum "rsa-with-rc4-128-sha" {
                      value 1;
                      description
                        "RSA, 128bit rc4, sha hash";
                    }
                    enum
                      "rsa-with-3des-ede-cbc-sha" {
                      value 2;
                      description
                        "RSA, 3des ede/cbc, sha hash";
                    }
                    enum
                      "dhe-rsa-with-3des-ede-cbc-sha" {
                      value 3;
                      description
                        "DHE/rsa, 3es/ede cbc, sha hash";
                    }
                    enum
                      "rsa-with-aes-128-cbc-sha" {
                      value 4;
                      description
                        "RSA, 128 bit aes/cbc, sha hash";
                    }
                    enum
                      "dhe-rsa-with-aes-128-cbc-sha" {
                      value 5;
                      description
                        "DHE/rsa, 128 bit aes/cbc, sha hash";
                    }
                    enum
                      "rsa-with-aes-256-cbc-sha" {
                      value 6;
                      description
                        "RSA, 256 bit aes/cbc, sha hash";
                    }
                    enum
                      "dhe-rsa-with-aes-256-cbc-sha" {
                      value 7;
                      description
                        "DHE/rsa, 256 bit aes/cbc, sha hash";
                    }
                    enum
                      "ecdhe-rsa-with-rc4-128-sha" {
                      value 8;
                      description
                        "ECDHE/rsa, 128 bit rc4, sha hash";
                    }
                    enum
                      "ecdhe-rsa-with-3des-ede-cbc-sha" {
                      value 9;
                      description
                        "ECDHE/rsa, 128bit 3des ede/cbc sha hash";
                    }
                    enum
                      "ecdhe-rsa-with-aes-128-cbc-sha" {
                      value 10;
                      description
                        "ECDHE/rsa, 128 bit aes/cbc, sha hash";
                    }
                    enum
                      "ecdhe-rsa-with-aes-256-cbc-sha" {
                      value 11;
                      description
                        "ECDHE/rsa, 256 bit aes/cbc, sha hash";
                    }
                    enum
                      "rsa-with-aes-128-cbc-sha256" {
                      value 12;
                      description
                        "RSA, 128 bit aes/cbc, sha256 hash ";
                    }
                    enum
                      "rsa-with-aes-256-cbc-sha256" {
                      value 13;
                      description
                        "RSA, 256 bit aes/cbc, sha256 hash";
                    }
                    enum
                      "dhe-rsa-with-aes-128-cbc-sha256" {
                      value 14;
                      description
                        "DHE/rsa, 128 bit aes/cbc, sha256 hash";
                    }
                    enum
                      "dhe-rsa-with-aes-256-cbc-sha256" {
                      value 15;
                      description
                        "DHE/rsa, 256 bit aes/cbc, sha256 hash";
                    }
                    enum
                      "rsa-with-aes-128-gcm-sha256" {
                      value 16;
                      description
                        "RSA, 128 bit aes/gcm, sha256 hash";
                    }
                    enum
                      "rsa-with-aes-256-gcm-sha384" {
                      value 17;
                      description
                        "RSA, 256 bit aes/gcm, sha384 hash";
                    }
                    enum
                      "dhe-rsa-with-aes-128-gcm-sha256" {
                      value 18;
                      description
                        "DHE/rsa, 128 bit aes/gcm, sha256 hash";
                    }
                    enum
                      "dhe-rsa-with-aes-256-gcm-sha384" {
                      value 19;
                      description
                        "DHE/rsa, 256 bit aes/gcm, sha384 hash";
                    }
                    enum
                      "ecdhe-rsa-with-aes-128-cbc-sha256" {
                      value 20;
                      description
                        "ECDHE/rsa, 128 bit aes/cbc, sha256 hash";
                    }
                    enum
                      "ecdhe-rsa-with-aes-256-cbc-sha384" {
                      value 21;
                      description
                        "ECDHE/rsa, 256 bit aes/cbc, sha384 hash";
                    }
                    enum
                      "ecdhe-rsa-with-aes-128-gcm-sha256" {
                      value 22;
                      description
                        "ECDHE/rsa, 128 bit aes/gcm, sha256 hash";
                    }
                    enum
                      "ecdhe-rsa-with-aes-256-gcm-sha384" {
                      value 23;
                      description
                        "ECDHE/rsa, 256 bit aes/gcm, sha384 hash";
                    }
                  }
                  ordered-by user;
                  description
                    "List of allowed cipher suites in order of preference";
                }
    
                container mutual-authentication {
                  description
                    "Enable TLS mutual authentication";
                  uses apply-advanced;
    
                  leaf certificate-authority {
                    type string {
                      junos:posix-pattern "^.{1,32}$";
                      junos:pattern-message "Must be string of 32 characters or less";
                    }
                    description
                      "Certificate authority profile";
                  }
                }  // container mutual-authentication
              }  // container https
    
              container control {
                description
                  "Control of the rest-api process";
                uses apply-advanced;
    
                leaf-list allowed-sources {
                  type jt:ipv4addr;
                  ordered-by user;
                  description
                    "List of allowed source IP addresses";
                }
    
                leaf connection-limit {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type int32;
                  }
                  description
                    "Maximum number of simultaneous connections";
                }
              }  // container control
    
              container traceoptions {
                description
                  "Trace options for rest-api service";
                uses apply-advanced;
    
                leaf flag {
                  type enumeration {
                    enum "lighttpd" {
                      value 0;
                      description
                        "Enable tracing for lighttpd";
                    }
                    enum "juise" {
                      value 1;
                      description
                        "Enable tracing for JUISE";
                    }
                    enum "all" {
                      value 2;
                      description
                        "Enable all traces";
                    }
                  }
                  description
                    "Area to enable tracing";
                }
              }  // container traceoptions
    
              leaf enable-explorer {
                type empty;
                description
                  "Enable REST API explorer tool";
              }
    
              leaf routing-instance {
                junos:must "("routing-instances $$")";
                junos:must-message "Referenced routing instance must be defined under [edit routing-instances] hierarchy level";
                type string {
                  junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
                  junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
                }
                description "Routing instance";
              }
            }  // container rest
    
            container dhcp-local-server {
              description
                "Dynamic Host Configuration Protocol server configuration";
              uses jdhcp-local-server-type;
            }  // container dhcp-local-server
    
            container database-replication {
              junos:must "(("chassis redundancy graceful-switchover" || "chassis cluster redundancy-group"))";
              junos:must-message "'database-replication' statement cannot be included without 'chassis redundancy graceful-switchover' or 'chassis cluster redundancy-group' statement";
              description
                "Database replication configuration";
              uses bdbrepd-type;
            }  // container database-replication
    
            container web-management {
              junos:must "((". http" || ". https"))";
              junos:must-message "HTTP or HTTPS web services must be enabled";
              description
                "Web management configuration";
              uses apply-advanced;
    
              container traceoptions {
                description
                  "Web management trace options";
                uses httpd_traceoptions_type;
              }  // container traceoptions
    
              leaf management-url {
                type string;
                description
                  "URL path for web management access";
              }
    
              container https {
                presence "enable https";
                description
                  "Encrypted HTTPS connections";
                uses apply-advanced;
    
                leaf port {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 65535";
                    }
                  }
                  default "443";
                  description
                    "TCP port for incoming HTTPS connections";
                }
    
                choice certificate-choice {
                  leaf local-certificate {
                    junos:must "("security certificates local $$")";
                    junos:must-message "certificate must be configured under 'security certificates local'";
                    type string;
                    description
                      "X.509 certificate to use (from configuration)";
                  }
                  leaf pki-local-certificate {
                    type string {
                      junos:posix-pattern "^.{1,32}$";
                      junos:pattern-message "Must be string of 32 characters or less";
                    }
                    description
                      "X.509 certificate to use (from PKI local store)";
                  }
                  leaf system-generated-certificate {
                    type empty;
                    description
                      "X.509 certificate generated automatically by system";
                  }
                }  // choice certificate-choice
    
                leaf-list interface {
                  type union {
                    type jt:interface-name;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  ordered-by user;
                  description
                    "Interfaces that accept HTTPS access";
                }
              }  // container https
    
              container control {
                description
                  "Control of the web management process";
                uses apply-advanced;
    
                leaf max-threads {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 16";
                    }
                  }
                  default "5";
                  description
                    "Maximum simultaneous threads to handle requests";
                }
              }  // container control
    
              container session {
                description "Session parameters";
                uses apply-advanced;
    
                leaf idle-timeout {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 1440";
                    }
                  }
                  units "minutes";
                  default "30";
                  description
                    "Default timeout of web-management sessions";
                }
    
                leaf session-limit {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 1024";
                    }
                  }
                  description
                    "Maximum number of web-management sessions to allow";
                }
              }  // container session
            }  // container web-management
    
            container static-subscribers {
              description
                "Static Subscriber Client configuration";
              uses jsscd-static-subscribers-type;
            }  // container static-subscribers
    
            container subscriber-management {
              description
                "Subscriber management configuration";
              uses smid-type;
            }  // container subscriber-management
    
            container resource-monitor {
              description
                "Resource monitor configuration";
              uses resource-monitor-type;
            }  // container resource-monitor
    
            container bbe-stats-service {
              description
                "Bbe statistics configuration";
              uses bbe-stats-type;
            }  // container bbe-stats-service
    
            container dhcp {
              junos:must "(!("forwarding-options dhcp-relay group"))";
              junos:must-message "Incompatible with 'forwarding-options dhcp-relay'";
              junos:must "(!(any "routing-instances <*> forwarding-options dhcp-relay group"))";
              junos:must-message "Incompatible with 'forwarding-options dhcp-relay group'";
              junos:must "(!(any "routing-instances <*> system services dhcp-local-server group"))";
              junos:must-message "Incompatible with 'system services dhcp-local-server group'";
              junos:must "(!("system services dhcp-local-server group"))";
              junos:must-message "Incompatible with 'system services dhcp-local-server group'";
              description
                "Configure DHCP server";
              uses apply-advanced;
    
              leaf maximum-lease-time {
                type string;
                units "seconds";
                description
                  "Maximum lease time advertised to clients";
              }
    
              leaf default-lease-time {
                type string;
                units "seconds";
                description
                  "Default lease time advertised to clients";
              }
    
              leaf domain-name {
                type string {
                  junos:posix-pattern "^[[:alnum:]._-]+$";
                  junos:pattern-message "Invalid domain-name string";
                  length "1 .. 254";
                }
                description
                  "Domain name advertised to clients";
              }
    
              list name-server {
                key "name";
                ordered-by user;
                description
                  "Domain name servers available to the client";
                leaf name {
                  type jt:ipv4addr;
                  description
                    "DNS server's IPv4 address";
                }
    
                uses apply-advanced;
              }  // list name-server
    
              list domain-search {
                key "name";
                ordered-by user;
                description
                  "Domain search list used to resolve hostnames";
                leaf name {
                  type string;
                  description
                    "DNS search suffix";
                }
    
                uses apply-advanced;
              }  // list domain-search
    
              list wins-server {
                key "name";
                ordered-by user;
                description
                  "NetBIOS name servers";
                leaf name {
                  type jt:ipv4addr;
                  description
                    "WINS server's IPv4 address";
                }
    
                uses apply-advanced;
              }  // list wins-server
    
              list router {
                key "name";
                ordered-by user;
                description
                  "Routers advertised to clients";
                leaf name {
                  type jt:ipv4addr;
                  description
                    "Router's IPv4 address";
                }
    
                uses apply-advanced;
              }  // list router
    
              leaf boot-file {
                type string;
                description
                  "Boot filename advertised to clients";
              }
    
              leaf boot-server {
                type string {
                  junos:posix-pattern "^[[:alnum:]._/:-]+$";
                  junos:pattern-message "Invalid boot-server string";
                }
                description
                  "Boot server advertised to clients";
              }
    
              leaf next-server {
                type jt:ipv4addr;
                description
                  "Next server that clients need to contact";
              }
    
              leaf server-identifier {
                type jt:ipv4addr;
                description
                  "DHCP server identifier advertised to clients";
              }
    
              list option {
                key "name";
                ordered-by user;
                description "DHCP option";
                leaf name {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 255";
                    }
                  }
                  description
                    "DHCP option identifier code";
                }
    
                choice option-type-choice {
                  leaf flag {
                    type enumeration {
                      enum "true" {
                        value 0;
                        description "True value";
                      }
                      enum "false" {
                        value 1;
                        description
                          "False value";
                      }
                      enum "on" {
                        value 2;
                        description "On value";
                      }
                      enum "off" {
                        value 3;
                        description "Off value";
                      }
                    }
                    description
                      "Boolean flag value";
                  }
                  leaf byte {
                    type union {
                      type uint8;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description
                      "Unsigned 8-bit value";
                  }
                  leaf short {
                    type union {
                      type int16;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description
                      "Signed 16-bit numeric value";
                  }
                  leaf unsigned-short {
                    type union {
                      type uint16;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description
                      "Unsigned 16-bit numeric value";
                  }
                  leaf integer {
                    type union {
                      type int32;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description
                      "Signed 32-bit numeric value";
                  }
                  leaf unsigned-integer {
                    type union {
                      type uint32;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description
                      "Unsigned 32-bit numeric value";
                  }
                  leaf string {
                    type string {
                      length "1 .. 254";
                    }
                    description
                      "Character string value";
                  }
                  leaf ip-address {
                    type jt:ipv4addr;
                    description
                      "IP address value";
                  }
                  container array {
                    presence "enable array";
                    description
                      "Array of values";
                    uses apply-advanced;
    
                    choice option-type-array-choice {
                      leaf-list flag {
                        type enumeration {
                          enum "true" {
                            value 0;
                            description
                              "True value";
                          }
                          enum "false" {
                            value 1;
                            description
                              "False value";
                          }
                          enum "on" {
                            value 2;
                            description
                              "On value";
                          }
                          enum "off" {
                            value 3;
                            description
                              "Off value";
                          }
                        }
                        ordered-by user;
                        description
                          "Array of boolean flag values";
                      }
                      leaf-list byte {
                        type union {
                          type uint8;
                          type string {
                            pattern "<.*>|$.*";
                          }
                        }
                        ordered-by user;
                        description
                          "Array of unsigned 8-bit values";
                      }
                      leaf-list short {
                        type union {
                          type int16;
                          type string {
                            pattern "<.*>|$.*";
                          }
                        }
                        ordered-by user;
                        description
                          "Array of signed 16-bit numeric values";
                      }
                      leaf-list unsigned-short {
                        type union {
                          type uint16;
                          type string {
                            pattern "<.*>|$.*";
                          }
                        }
                        ordered-by user;
                        description
                          "Array of 16-bit numeric values";
                      }
                      leaf-list integer {
                        type union {
                          type int32;
                          type string {
                            pattern "<.*>|$.*";
                          }
                        }
                        ordered-by user;
                        description
                          "Array of signed 32-bit numeric values";
                      }
                      leaf-list unsigned-integer {
                        type union {
                          type uint32;
                          type string {
                            pattern "<.*>|$.*";
                          }
                        }
                        ordered-by user;
                        description
                          "Array of unsigned 32-bit numeric values";
                      }
                      leaf-list string {
                        type string {
                          length "1 .. 254";
                        }
                        ordered-by user;
                        description
                          "Array of character string values";
                      }
                      leaf-list ip-address {
                        type jt:ipv4addr;
                        ordered-by user;
                        description
                          "Array of IP address values";
                      }
                    }  // choice option-type-array-choice
                  }  // container array
                  leaf byte-stream {
                    type string;
                    description
                      "Stream of unsigned 8-bit values within quotes";
                  }
                }  // choice option-type-choice
              }  // list option
    
              container sip-server {
                description
                  "SIP servers to clients";
                uses apply-advanced;
    
                list name {
                  key "name";
                  ordered-by user;
                  description
                    "Names of SIP servers";
                  leaf name {
                    junos:must "(!(any ".. .. address <*>"))";
                    junos:must-message "Cannot configure sip-server by both name and address";
                    type string;
                    description
                      "SIP server name";
                  }
    
                  uses apply-advanced;
                }  // list name
    
                list address {
                  key "name";
                  ordered-by user;
                  description
                    "IP addresses of SIP servers";
                  leaf name {
                    type jt:ipv4addr;
                    description
                      "SIP server's IPv4 address";
                  }
    
                  uses apply-advanced;
                }  // list address
              }  // container sip-server
    
              container traceoptions {
                description
                  "DHCP server trace options";
                uses dhcp-traceoptions-type;
              }  // container traceoptions
    
              list pool {
                key "name";
                ordered-by user;
                description "DHCP address pool";
                leaf name {
                  type jt:ipprefix;
                  description
                    "Logical subnet address/netmask";
                }
    
                uses apply-advanced;
    
                container address-range {
                  presence
                    "enable address-range";
                  description
                    "Range of addresses to choose from";
                  leaf low {
                    type jt:ipv4addr;
                    description
                      "Lowest address in the range";
                  }
    
                  leaf high {
                    type jt:ipv4addr;
                    description
                      "Highest address in the range";
                  }
                }  // container address-range
    
                list exclude-address {
                  key "name";
                  ordered-by user;
                  description
                    "Address to exclude from pool";
                  leaf name {
                    type jt:ipv4addr;
                    description "IPv4 address";
                  }
    
                  uses apply-advanced;
                }  // list exclude-address
    
                leaf maximum-lease-time {
                  type string;
                  units "seconds";
                  description
                    "Maximum lease time advertised to clients";
                }
    
                leaf default-lease-time {
                  type string;
                  units "seconds";
                  description
                    "Default lease time advertised to clients";
                }
    
                leaf domain-name {
                  type string {
                    junos:posix-pattern "^[[:alnum:]._-]+$";
                    junos:pattern-message "Invalid domain-name string";
                    length "1 .. 254";
                  }
                  description
                    "Domain name advertised to clients";
                }
    
                list name-server {
                  key "name";
                  ordered-by user;
                  description
                    "Domain name servers available to the client";
                  leaf name {
                    type jt:ipv4addr;
                    description
                      "DNS server's IPv4 address";
                  }
    
                  uses apply-advanced;
                }  // list name-server
    
                list domain-search {
                  key "name";
                  ordered-by user;
                  description
                    "Domain search list used to resolve hostnames";
                  leaf name {
                    type string;
                    description
                      "DNS search suffix";
                  }
    
                  uses apply-advanced;
                }  // list domain-search
    
                list wins-server {
                  key "name";
                  ordered-by user;
                  description
                    "NetBIOS name servers";
                  leaf name {
                    type jt:ipv4addr;
                    description
                      "WINS server's IPv4 address";
                  }
    
                  uses apply-advanced;
                }  // list wins-server
    
                list router {
                  key "name";
                  ordered-by user;
                  description
                    "Routers advertised to clients";
                  leaf name {
                    type jt:ipv4addr;
                    description
                      "Router's IPv4 address";
                  }
    
                  uses apply-advanced;
                }  // list router
    
                leaf boot-file {
                  type string;
                  description
                    "Boot filename advertised to clients";
                }
    
                leaf boot-server {
                  type string {
                    junos:posix-pattern "^[[:alnum:]._/:-]+$";
                    junos:pattern-message "Invalid boot-server string";
                  }
                  description
                    "Boot server advertised to clients";
                }
    
                leaf next-server {
                  type jt:ipv4addr;
                  description
                    "Next server that clients need to contact";
                }
    
                leaf server-identifier {
                  type jt:ipv4addr;
                  description
                    "DHCP server identifier advertised to clients";
                }
    
                list option {
                  key "name";
                  ordered-by user;
                  description "DHCP option";
                  leaf name {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 255";
                      }
                    }
                    description
                      "DHCP option identifier code";
                  }
    
                  choice option-type-choice {
                    leaf flag {
                      type enumeration {
                        enum "true" {
                          value 0;
                          description
                            "True value";
                        }
                        enum "false" {
                          value 1;
                          description
                            "False value";
                        }
                        enum "on" {
                          value 2;
                          description "On value";
                        }
                        enum "off" {
                          value 3;
                          description
                            "Off value";
                        }
                      }
                      description
                        "Boolean flag value";
                    }
                    leaf byte {
                      type union {
                        type uint8;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Unsigned 8-bit value";
                    }
                    leaf short {
                      type union {
                        type int16;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Signed 16-bit numeric value";
                    }
                    leaf unsigned-short {
                      type union {
                        type uint16;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Unsigned 16-bit numeric value";
                    }
                    leaf integer {
                      type union {
                        type int32;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Signed 32-bit numeric value";
                    }
                    leaf unsigned-integer {
                      type union {
                        type uint32;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Unsigned 32-bit numeric value";
                    }
                    leaf string {
                      type string {
                        length "1 .. 254";
                      }
                      description
                        "Character string value";
                    }
                    leaf ip-address {
                      type jt:ipv4addr;
                      description
                        "IP address value";
                    }
                    container array {
                      presence "enable array";
                      description
                        "Array of values";
                      uses apply-advanced;
    
                      choice option-type-array-choice {
                        leaf-list flag {
                          type enumeration {
                            enum "true" {
                              value 0;
                              description
                                "True value";
                            }
                            enum "false" {
                              value 1;
                              description
                                "False value";
                            }
                            enum "on" {
                              value 2;
                              description
                                "On value";
                            }
                            enum "off" {
                              value 3;
                              description
                                "Off value";
                            }
                          }
                          ordered-by user;
                          description
                            "Array of boolean flag values";
                        }
                        leaf-list byte {
                          type union {
                            type uint8;
                            type string {
                              pattern "<.*>|$.*";
                            }
                          }
                          ordered-by user;
                          description
                            "Array of unsigned 8-bit values";
                        }
                        leaf-list short {
                          type union {
                            type int16;
                            type string {
                              pattern "<.*>|$.*";
                            }
                          }
                          ordered-by user;
                          description
                            "Array of signed 16-bit numeric values";
                        }
                        leaf-list unsigned-short {
                          type union {
                            type uint16;
                            type string {
                              pattern "<.*>|$.*";
                            }
                          }
                          ordered-by user;
                          description
                            "Array of 16-bit numeric values";
                        }
                        leaf-list integer {
                          type union {
                            type int32;
                            type string {
                              pattern "<.*>|$.*";
                            }
                          }
                          ordered-by user;
                          description
                            "Array of signed 32-bit numeric values";
                        }
                        leaf-list unsigned-integer {
                          type union {
                            type uint32;
                            type string {
                              pattern "<.*>|$.*";
                            }
                          }
                          ordered-by user;
                          description
                            "Array of unsigned 32-bit numeric values";
                        }
                        leaf-list string {
                          type string {
                            length "1 .. 254";
                          }
                          ordered-by user;
                          description
                            "Array of character string values";
                        }
                        leaf-list ip-address {
                          type jt:ipv4addr;
                          ordered-by user;
                          description
                            "Array of IP address values";
                        }
                      }  // choice option-type-array-choice
                    }  // container array
                    leaf byte-stream {
                      type string;
                      description
                        "Stream of unsigned 8-bit values within quotes";
                    }
                  }  // choice option-type-choice
                }  // list option
    
                container sip-server {
                  description
                    "SIP servers to clients";
                  uses apply-advanced;
    
                  list name {
                    key "name";
                    ordered-by user;
                    description
                      "Names of SIP servers";
                    leaf name {
                      junos:must "(!(any ".. .. address <*>"))";
                      junos:must-message "Cannot configure sip-server by both name and address";
                      type string;
                      description
                        "SIP server name";
                    }
    
                    uses apply-advanced;
                  }  // list name
    
                  list address {
                    key "name";
                    ordered-by user;
                    description
                      "IP addresses of SIP servers";
                    leaf name {
                      type jt:ipv4addr;
                      description
                        "SIP server's IPv4 address";
                    }
    
                    uses apply-advanced;
                  }  // list address
                }  // container sip-server
              }  // list pool
    
              list static-binding {
                key "name";
                ordered-by user;
                description
                  "DHCP client's hardware address";
                leaf name {
                  type jt:mac-addr;
                  description
                    "Ethernet hardware address belonging to host";
                }
    
                uses apply-advanced;
    
                list fixed-address {
                  key "name";
                  ordered-by user;
                  description
                    "Possible IP addresses to assign to host";
                  leaf name {
                    type jt:ipaddr;
                    description "IPv4 address";
                  }
    
                  uses apply-advanced;
                }  // list fixed-address
    
                leaf host-name {
                  type string {
                    junos:posix-pattern "^[[:alnum:]._-]+$";
                    junos:pattern-message "Invalid host-name string";
                  }
                  description
                    "Hostname for this client";
                }
    
                container client-identifier {
                  description
                    "Client identifier option";
                  choice client-identifier-choice {
                    leaf ascii {
                      type string;
                      description
                        "Client identifier as an ASCII string";
                    }
                    leaf hexadecimal {
                      type string {
                        junos:posix-pattern "^[[:xdigit:]]+$";
                        junos:pattern-message "Must be hexadecimal digits (0-9, a-f, A-F)";
                      }
                      description
                        "Client identifier as a hexadecimal string";
                    }
                  }  // choice client-identifier-choice
                }  // container client-identifier
    
                leaf domain-name {
                  type string {
                    junos:posix-pattern "^[[:alnum:]._-]+$";
                    junos:pattern-message "Invalid domain-name string";
                    length "1 .. 254";
                  }
                  description
                    "Domain name advertised to clients";
                }
    
                list name-server {
                  key "name";
                  ordered-by user;
                  description
                    "Domain name servers available to the client";
                  leaf name {
                    type jt:ipv4addr;
                    description
                      "DNS server's IPv4 address";
                  }
    
                  uses apply-advanced;
                }  // list name-server
    
                list domain-search {
                  key "name";
                  ordered-by user;
                  description
                    "Domain search list used to resolve hostnames";
                  leaf name {
                    type string;
                    description
                      "DNS search suffix";
                  }
    
                  uses apply-advanced;
                }  // list domain-search
    
                list wins-server {
                  key "name";
                  ordered-by user;
                  description
                    "NetBIOS name servers";
                  leaf name {
                    type jt:ipv4addr;
                    description
                      "WINS server's IPv4 address";
                  }
    
                  uses apply-advanced;
                }  // list wins-server
    
                list router {
                  key "name";
                  ordered-by user;
                  description
                    "Routers advertised to clients";
                  leaf name {
                    type jt:ipv4addr;
                    description
                      "Router's IPv4 address";
                  }
    
                  uses apply-advanced;
                }  // list router
    
                leaf boot-file {
                  type string;
                  description
                    "Boot filename advertised to clients";
                }
    
                leaf boot-server {
                  type string {
                    junos:posix-pattern "^[[:alnum:]._/:-]+$";
                    junos:pattern-message "Invalid boot-server string";
                  }
                  description
                    "Boot server advertised to clients";
                }
    
                leaf next-server {
                  type jt:ipv4addr;
                  description
                    "Next server that clients need to contact";
                }
    
                leaf server-identifier {
                  type jt:ipv4addr;
                  description
                    "DHCP server identifier advertised to clients";
                }
    
                list option {
                  key "name";
                  ordered-by user;
                  description "DHCP option";
                  leaf name {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 255";
                      }
                    }
                    description
                      "DHCP option identifier code";
                  }
    
                  choice option-type-choice {
                    leaf flag {
                      type enumeration {
                        enum "true" {
                          value 0;
                          description
                            "True value";
                        }
                        enum "false" {
                          value 1;
                          description
                            "False value";
                        }
                        enum "on" {
                          value 2;
                          description "On value";
                        }
                        enum "off" {
                          value 3;
                          description
                            "Off value";
                        }
                      }
                      description
                        "Boolean flag value";
                    }
                    leaf byte {
                      type union {
                        type uint8;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Unsigned 8-bit value";
                    }
                    leaf short {
                      type union {
                        type int16;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Signed 16-bit numeric value";
                    }
                    leaf unsigned-short {
                      type union {
                        type uint16;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Unsigned 16-bit numeric value";
                    }
                    leaf integer {
                      type union {
                        type int32;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Signed 32-bit numeric value";
                    }
                    leaf unsigned-integer {
                      type union {
                        type uint32;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Unsigned 32-bit numeric value";
                    }
                    leaf string {
                      type string {
                        length "1 .. 254";
                      }
                      description
                        "Character string value";
                    }
                    leaf ip-address {
                      type jt:ipv4addr;
                      description
                        "IP address value";
                    }
                    container array {
                      presence "enable array";
                      description
                        "Array of values";
                      uses apply-advanced;
    
                      choice option-type-array-choice {
                        leaf-list flag {
                          type enumeration {
                            enum "true" {
                              value 0;
                              description
                                "True value";
                            }
                            enum "false" {
                              value 1;
                              description
                                "False value";
                            }
                            enum "on" {
                              value 2;
                              description
                                "On value";
                            }
                            enum "off" {
                              value 3;
                              description
                                "Off value";
                            }
                          }
                          ordered-by user;
                          description
                            "Array of boolean flag values";
                        }
                        leaf-list byte {
                          type union {
                            type uint8;
                            type string {
                              pattern "<.*>|$.*";
                            }
                          }
                          ordered-by user;
                          description
                            "Array of unsigned 8-bit values";
                        }
                        leaf-list short {
                          type union {
                            type int16;
                            type string {
                              pattern "<.*>|$.*";
                            }
                          }
                          ordered-by user;
                          description
                            "Array of signed 16-bit numeric values";
                        }
                        leaf-list unsigned-short {
                          type union {
                            type uint16;
                            type string {
                              pattern "<.*>|$.*";
                            }
                          }
                          ordered-by user;
                          description
                            "Array of 16-bit numeric values";
                        }
                        leaf-list integer {
                          type union {
                            type int32;
                            type string {
                              pattern "<.*>|$.*";
                            }
                          }
                          ordered-by user;
                          description
                            "Array of signed 32-bit numeric values";
                        }
                        leaf-list unsigned-integer {
                          type union {
                            type uint32;
                            type string {
                              pattern "<.*>|$.*";
                            }
                          }
                          ordered-by user;
                          description
                            "Array of unsigned 32-bit numeric values";
                        }
                        leaf-list string {
                          type string {
                            length "1 .. 254";
                          }
                          ordered-by user;
                          description
                            "Array of character string values";
                        }
                        leaf-list ip-address {
                          type jt:ipv4addr;
                          ordered-by user;
                          description
                            "Array of IP address values";
                        }
                      }  // choice option-type-array-choice
                    }  // container array
                    leaf byte-stream {
                      type string;
                      description
                        "Stream of unsigned 8-bit values within quotes";
                    }
                  }  // choice option-type-choice
                }  // list option
    
                container sip-server {
                  description
                    "SIP servers to clients";
                  uses apply-advanced;
    
                  list name {
                    key "name";
                    ordered-by user;
                    description
                      "Names of SIP servers";
                    leaf name {
                      junos:must "(!(any ".. .. address <*>"))";
                      junos:must-message "Cannot configure sip-server by both name and address";
                      type string;
                      description
                        "SIP server name";
                    }
    
                    uses apply-advanced;
                  }  // list name
    
                  list address {
                    key "name";
                    ordered-by user;
                    description
                      "IP addresses of SIP servers";
                    leaf name {
                      type jt:ipv4addr;
                      description
                        "SIP server's IPv4 address";
                    }
    
                    uses apply-advanced;
                  }  // list address
                }  // container sip-server
              }  // list static-binding
            }  // container dhcp
    
            container outbound-https {
              description
                "Initiate outbound HTTPS connection";
              uses apply-advanced;
    
              list client {
                key "name";
                ordered-by user;
                description
                  "Define a device initiated outbound https connection";
                leaf name {
                  type string;
                  description
                    "Client application identifier";
                }
    
                uses apply-advanced;
    
                leaf device-id {
                  type string;
                  description
                    "Unique ID used by client to identify this device";
                }
    
                leaf secret {
                  type jt:unreadable;
                  description
                    "Shared secret between client and this device";
                }
    
                leaf waittime {
                  type union {
                    type uint32;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description
                    "Wait time to retry if none of the gRPC servers are available";
                }
    
                leaf reconnect-strategy {
                  type enumeration {
                    enum "sticky" {
                      value 0;
                      description
                        "Attempt to reconnect to the gRPC server last connected to";
                    }
                    enum "in-order" {
                      value 1;
                      description
                        "Attempt to reconnect to the first gRPC server configured";
                    }
                  }
                  default "in-order";
                  description
                    "Strategy used to reconnect to a gRPC server in the list";
                }
    
                list servers {
                  key "name";
                  ordered-by user;
                  description
                    "Client application servers";
                  leaf name {
                    type string;
                    description
                      "GRPC server IP or hostname";
                  }
    
                  uses apply-advanced;
    
                  leaf port {
                    type union {
                      type uint16;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description
                      "GRPC server port";
                  }
    
                  leaf trusted-cert {
                    type string;
                    description
                      "Certificate chain content without newlines";
                  }
                }  // list servers
              }  // list client
            }  // container outbound-https
    
            container service-deployment {
              description
                "Configuration for Service Deployment (SDXD) management application";
              uses apply-advanced;
    
              leaf local-certificate {
                junos:must "("security certificates local $$")";
                junos:must-message "certificate must be configured under 'security certificates local'";
                type string {
                  length "1 .. 1024";
                }
                description
                  "Name of local X.509 certificate to use";
              }
    
              leaf source-address {
                type jt:ipv4addr;
                description
                  "Local IPv4 address to be used as source address for traffic to SDX";
              }
    
              list servers {
                key "name";
                max-elements 3;
                ordered-by user;
                description
                  "Service deployment system configuration";
                leaf name {
                  type jt:ipv4addr;
                  description
                    "IPv4 address of SDX server";
                }
    
                uses apply-advanced;
    
                leaf port {
                  type union {
                    type uint16;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description
                    "TCP port of SDX server";
                }
    
                leaf user {
                  junos:must "("system login user $$")";
                  junos:must-message "Referenced user must be configured";
                  type string;
                  description
                    "Username used by SDX when logging into the router";
                }
    
                container security-options {
                  description
                    "Specify mechanism to secure the connection";
                  uses apply-advanced;
    
                  choice protocol {
                    leaf tls {
                      type empty;
                      description
                        "Use TLS for transport layer security";
                    }
                    leaf ssl3 {
                      type empty;
                      description
                        "Use SSLv3 for transport layer security";
                    }
                  }  // choice protocol
                }  // container security-options
              }  // list servers
    
              container traceoptions {
                description
                  "Service deployment daemon trace options";
                uses apply-advanced;
    
                leaf no-remote-trace {
                  junos:must "("system tracing")";
                  junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
                  type empty;
                  description
                    "Disable remote tracing";
                }
    
                container file {
                  description
                    "Trace file information";
                  leaf filename {
                    type string {
                      junos:posix-pattern "![/ %]";
                      junos:pattern-message "Must not contain '/', % or a space";
                      length "1 .. 1024";
                    }
                    description
                      "Name of file in which to write trace information";
                  }
    
                  leaf size {
                    type string;
                    description
                      "Maximum trace file size";
                  }
    
                  leaf files {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "2 .. 1000";
                      }
                    }
                    default "3";
                    description
                      "Maximum number of trace files";
                  }
    
                  choice world-readable-choice {
                    leaf world-readable {
                      type empty;
                      description
                        "Allow any user to read the log file";
                    }
                    leaf no-world-readable {
                      type empty;
                      description
                        "Don't allow any user to read the log file";
                    }
                  }  // choice world-readable-choice
    
                  leaf match {
                    type jt:regular-expression;
                    description
                      "Regular expression for lines to be logged";
                  }
                }  // container file
    
                list flag {
                  key "name";
                  ordered-by user;
                  description "Tracing options";
                  leaf name {
                    type enumeration {
                      enum "beep" {
                        value 0;
                        description
                          "Trace BEEP protocol events";
                      }
                      enum "profile" {
                        value 1;
                        description
                          "Trace BEEP profile events";
                      }
                      enum "application" {
                        value 2;
                        description
                          "Trace application events";
                      }
                      enum "io" {
                        value 3;
                        description
                          "Trace I/O activities";
                      }
                      enum "all" {
                        value 4;
                        description
                          "Trace everything";
                      }
                    }
                  }
                }  // list flag
              }  // container traceoptions
            }  // container service-deployment
    
            container outbound-ssh {
              description
                "Initiate outbound SSH connection";
              uses apply-advanced;
    
              leaf routing-instance {
                junos:must "("routing-instances $$")";
                junos:must-message "Referenced routing-instance must be defined under
    [edit routing-instances] hierarchy";
                type string {
                  junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
                  junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
                }
                description
                  "Routing instance through which client is reachable";
              }
    
              container traceoptions {
                description
                  "Outbound SSH trace options";
                uses apply-advanced;
    
                leaf no-remote-trace {
                  junos:must "("system tracing")";
                  junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
                  type empty;
                  description
                    "Disable remote tracing";
                }
    
                container file {
                  description
                    "Trace file information";
                  leaf filename {
                    type string {
                      junos:posix-pattern "![/ %]";
                      junos:pattern-message "Must not contain '/', % or a space";
                      length "1 .. 1024";
                    }
                    description
                      "Name of file in which to write trace information";
                  }
    
                  leaf size {
                    type string;
                    description
                      "Maximum trace file size";
                  }
    
                  leaf files {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "2 .. 1000";
                      }
                    }
                    default "3";
                    description
                      "Maximum number of trace files";
                  }
    
                  choice world-readable-choice {
                    leaf world-readable {
                      type empty;
                      description
                        "Allow any user to read the log file";
                    }
                    leaf no-world-readable {
                      type empty;
                      description
                        "Don't allow any user to read the log file";
                    }
                  }  // choice world-readable-choice
    
                  leaf match {
                    type jt:regular-expression;
                    description
                      "Regular expression for lines to be logged";
                  }
                }  // container file
    
                list flag {
                  key "name";
                  ordered-by user;
                  description
                    "Tracing parameters";
                  leaf name {
                    type enumeration {
                      enum "configuration" {
                        value 0;
                        description
                          "Trace configuration events";
                      }
                      enum "connectivity" {
                        value 1;
                        description
                          "Trace TCP connection handling";
                      }
                      enum "all" {
                        value 2;
                        description
                          "Trace everything";
                      }
                    }
                  }
                }  // list flag
              }  // container traceoptions
    
              list client {
                key "name";
                ordered-by user;
                description
                  "Define a device initiated SSH connection";
                leaf name {
                  type string;
                  description
                    "Client application identifier";
                }
    
                uses apply-advanced;
    
                leaf disable-ssh-security-settings {
                  type empty;
                  status deprecated;
                  description
                    "Disable ssh security parameter defined under [system services ssh]";
                }
    
                leaf device-id {
                  type string;
                  description
                    "Unique ID used by client to identify this device";
                }
    
                leaf secret {
                  type jt:unreadable;
                  description
                    "Shared secret between client and this device";
                }
    
                container keep-alive {
                  presence "enable keep-alive";
                  uses apply-advanced;
    
                  leaf retry {
                    type union {
                      type uint32;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    default "3";
                    description
                      "Maximum number of connection attempts";
                  }
    
                  leaf timeout {
                    type union {
                      type uint32;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    default "15";
                    description
                      "Timeout value for conection attempts";
                  }
                }  // container keep-alive
    
                leaf reconnect-strategy {
                  type enumeration {
                    enum "sticky" {
                      value 0;
                      description
                        "Attempt to reconnect to the server last connected to";
                    }
                    enum "in-order" {
                      value 1;
                      description
                        "Attempt to reconnect to the first server configured";
                    }
                  }
                  default "in-order";
                  description
                    "Strategy used to reconnect to a server";
                }
    
                leaf services {
                  type enumeration {
                    enum "netconf" {
                      value 0;
                      description
                        "Enable invoking NETCONF sub-system";
                    }
                  }
                  description
                    "The subsystem(s) that can be invoked";
                }
    
                list servers {
                  key "name";
                  ordered-by user;
                  description
                    "Client application servers";
                  leaf name {
                    type string;
                    description
                      "Client address to connect to";
                  }
    
                  uses apply-advanced;
    
                  leaf port {
                    type union {
                      type uint16;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description
                      "Client port to connect to";
                  }
    
                  leaf retry {
                    type union {
                      type uint32;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    default "3";
                    description
                      "Maximum number of connection attempts";
                  }
    
                  leaf timeout {
                    type union {
                      type uint32;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    default "15";
                    description
                      "Timeout value for conection attempts";
                  }
                }  // list servers
              }  // list client
            }  // container outbound-ssh
          }  // container services
    
          leaf auto-snapshot {
            type empty;
            description
              "Enable auto-snapshot when boots from alternate slice";
          }
    
          leaf unattended-boot {
            type empty;
            description
              "Enable Unattended Boot mode";
          }
    
          leaf domain-name {
            type string {
              junos:posix-pattern "^[[:alnum:]._-]+$";
              junos:pattern-message "Must be a string of alphanumericals, dashes or underscores";
              length "1 .. 255";
            }
            description
              "Domain name for this router";
          }
    
          leaf-list domain-search {
            type string;
            ordered-by user;
            description
              "List of domain names to search";
          }
    
          leaf no-hidden-commands {
            type empty;
            description
              "Deny hidden commands for all users except root";
          }
    
          container statistics-timeout {
            description
              "Statistics - Configurable Timeout";
            uses apply-advanced;
    
            leaf statistics-timeout-value {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type int32 {
                  range "1000 .. 60000";
                }
              }
              description
                "Statistics - Configurable Timeout value in milliseconds(1000 to 60000)";
            }
          }  // container statistics-timeout
    
          container backup-router {
            description
              "IPv4 router to use while booting";
            leaf address {
              type jt:ipv4addr;
              description
                "Address of router to use while booting";
            }
    
            leaf-list destination {
              type jt:ipv4prefix;
              ordered-by user;
              description
                "Destination network reachable through the router";
            }
          }  // container backup-router
    
          container inet6-backup-router {
            description
              "IPv6 router to use while booting";
            leaf address {
              type jt:ipv6addr;
              description
                "Address of router to use while booting";
            }
    
            leaf-list destination {
              type jt:ipv6prefix;
              ordered-by user;
              description
                "Destination network reachable through the router";
            }
          }  // container inet6-backup-router
    
          leaf time-zone {
            type string {
              junos:posix-pattern "^[a-zA-Z0-9:_+-/,\\.]{3,}$";
              junos:pattern-message "Invalid string";
            }
            units
              "<continent>/<major-city> or <time-zone>";
            default "UTC";
            description
              "Time zone name or POSIX-compliant time zone string";
          }
    
          leaf use-imported-time-zones {
            type empty;
            description
              "Use locally generated time-zone database";
          }
    
          leaf regex-additive-logic {
            type empty;
            description
              "Set regex-additive-logic";
          }
    
          leaf switchover-on-routing-crash {
            junos:must "(("routing-options nonstop-routing" || "routing-options warm-standby"))";
            junos:must-message "Nonstop routing or Warm standby must be enabled";
            type empty;
            description
              "On failure, switch mastership to other Routing Engine";
          }
    
          leaf default-address-selection {
            type empty;
            description
              "Use system address for locally originated traffic";
          }
    
          leaf ndcpp-compliant {
            type empty;
            description
              "Enable NDcPP compliance";
          }
    
          leaf nd-maxmcast-solicit {
            type union {
              type int32;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description
              "Set Maximum multicast solicit";
          }
    
          leaf nd-maxucast-retry {
            type union {
              type int32;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description
              "Set Maximum unicast retry count";
          }
    
          leaf nd-retransmit-timer {
            type union {
              type int32;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description "Set retransmit timer";
          }
    
          leaf nd-system-cache-limit {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type int32 {
                range "200 .. 2000000";
              }
            }
            description
              "Set max system cache size for IPv6 nexthops";
          }
    
          leaf arp-system-cache-limit {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type int32 {
                range "200 .. 2000000";
              }
            }
            description
              "Set max system cache size for ARP nexthops";
          }
    
          leaf no-neighbor-learn {
            type empty;
            description
              "Disable neighbor address learning";
          }
    
          leaf no-multicast-echo {
            type empty;
            description
              "Disable ICMP echo on multicast addresses";
          }
    
          leaf extended-echo {
            type empty;
            description
              "Enable ICMP extended echo processing";
          }
    
          leaf no-redirects {
            type empty;
            description "Disable ICMP redirects";
          }
    
          leaf no-redirects-ipv6 {
            type empty;
            description
              "Disable IPV6 ICMP redirects";
          }
    
          leaf nd-override-preferred-src {
            type empty;
            description
              "Do not use preferred source address for unnumbered interface as the source of NA/NS";
          }
    
          leaf no-ping-record-route {
            type empty;
            description
              "Do not insert IP address in ping replies";
          }
    
          leaf no-ping-time-stamp {
            type empty;
            description
              "Do not insert time stamp in ping replies";
          }
    
          leaf dump-device {
            type string;
            description
              "Device to record memory snapshots on operating system failure";
          }
    
          container arp {
            description "ARP settings";
            uses apply-advanced;
    
            leaf aging-timer {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type int32 {
                  range "1 .. 240";
                }
              }
              units "minutes";
              description
                "Change the ARP aging time value";
            }
    
            container interfaces {
              description
                "Logical interface on which to specify ARP aging timer";
              uses apply-advanced;
    
              list arp-interface {
                key "name";
                uses arp-interface-type;
              }  // list arp-interface
            }  // container interfaces
    
            leaf passive-learning {
              type empty;
              description "ARP passive learning";
            }
    
            leaf purging {
              type empty;
              description
                "ARP purging when link goes down";
            }
    
            leaf gratuitous-arp-on-ifup {
              type empty;
              description
                "Gratuitous ARP announcement on interface up";
            }
    
            leaf gratuitous-arp-delay {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 4000000";
                }
              }
              description
                "Delay gratuitous ARP request";
            }
    
            leaf non-subscriber-no-reply {
              type empty;
              description
                "Do not reply to ARP requests from non-subscribers";
            }
    
            leaf unicast-mode-on-expire {
              type empty;
              description
                "Send unicast ARP request on expiry timer";
            }
          }  // container arp
    
          leaf-list personality-file-list-of-directories {
            type string;
            ordered-by user;
            description
              "List of Optional directories for personality-tarball of device";
          }
    
          leaf saved-core-files {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 10";
              }
            }
            default "5";
            description
              "Number of saved core files per executable";
          }
    
          choice saved-core-context-choice {
            leaf saved-core-context {
              type empty;
              description
                "Save context information for core files";
            }
            leaf no-saved-core-context {
              type empty;
              description
                "Don't save context information for core files";
            }
          }  // choice saved-core-context-choice
    
          container kernel-replication {
            presence "enable kernel-replication";
            description "Kernel replication";
            uses apply-advanced;
          }  // container kernel-replication
    
          leaf mirror-flash-on-disk {
            type empty;
            description
              "Mirror contents of the flash drive onto hard drive";
          }
    
          container icmp-rate-limit {
            junos:must "(!("system internet-options icmpv4-rate-limit"))";
            junos:must-message "incompatible with 'system internet-options icmpv4-rate-limit'";
            status deprecated;
            description
              "Rate-limiting parameters for ICMP messages";
            leaf packet-rate {
              type union {
                type uint32;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              default "1000";
              description
                "ICMP rate-limiting packets earned per second";
            }
    
            leaf bucket-size {
              type union {
                type uint32;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              units "seconds";
              default "5";
              description
                "ICMP rate-limiting maximum bucket size";
            }
          }  // container icmp-rate-limit
    
          leaf tcp-ack-rst-syn {
            type empty;
            status deprecated;
            description
              "Send ACKs for in-window RSTs and SYN packets on TCP connections";
          }
    
          leaf management-instance {
            type empty;
            description
              "Enable Management VRF Instance";
          }
    
          container demux-options {
            description
              "Tunable options for demux link local address generation";
            uses apply-advanced;
    
            leaf use-underlying-interface-mac {
              type empty;
              description
                "Use underlying interface MAC for link local address";
            }
          }  // container demux-options
    
          container internet-options {
            description
              "Tunable options for Internet operation";
            uses apply-advanced;
    
            container icmpv4-rate-limit {
              junos:must "(!("system icmp-rate-limit"))";
              junos:must-message "incompatible with 'system icmp-rate-limit'";
              description
                "Rate-limiting parameters for ICMPv4 messages";
              leaf packet-rate {
                type union {
                  type uint32;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                default "1000";
                description
                  "ICMP rate-limiting packets earned per second";
              }
    
              leaf bucket-size {
                type union {
                  type uint32;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                units "seconds";
                default "5";
                description
                  "ICMP rate-limiting maximum bucket size";
              }
            }  // container icmpv4-rate-limit
    
            container icmpv6-rate-limit {
              description
                "Rate-limiting parameters for ICMPv6 messages";
              leaf packet-rate {
                type union {
                  type uint32;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                default "1000";
                description
                  "ICMPv6 rate-limiting packets earned per second";
              }
    
              leaf bucket-size {
                type union {
                  type uint32;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                units "seconds";
                default "5";
                description
                  "ICMPv6 rate-limiting maximum bucket size";
              }
            }  // container icmpv6-rate-limit
    
            choice path-mtu-discovery-choice {
              leaf path-mtu-discovery {
                type empty;
                description
                  "Enable Path MTU discovery on TCP connections";
              }
              leaf no-path-mtu-discovery {
                type empty;
                description
                  "Don't enable Path MTU discovery on TCP connections";
              }
            }  // choice path-mtu-discovery-choice
    
            choice gre-path-mtu-discovery-choice {
              leaf gre-path-mtu-discovery {
                type empty;
                description
                  "Enable path MTU discovery for GRE tunnels";
              }
              leaf no-gre-path-mtu-discovery {
                type empty;
                description
                  "Don't enable path MTU discovery for GRE tunnels";
              }
            }  // choice gre-path-mtu-discovery-choice
    
            choice ipip-path-mtu-discovery-choice {
              leaf ipip-path-mtu-discovery {
                type empty;
                description
                  "Enable path MTU discovery for IP-IP tunnels";
              }
              leaf no-ipip-path-mtu-discovery {
                type empty;
                description
                  "Don't enable path MTU discovery for IP-IP tunnels";
              }
            }  // choice ipip-path-mtu-discovery-choice
    
            container source-port {
              description
                "Source port selection parameters";
              uses apply-advanced;
    
              leaf upper-limit {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "5000 .. 65535";
                  }
                }
                description
                  "Specify upper limit of source port selection range";
              }
            }  // container source-port
    
            choice source-quench-choice {
              leaf source-quench {
                type empty;
                description
                  "React to incoming ICMP Source Quench messages";
              }
              leaf no-source-quench {
                type empty;
                description
                  "Don't react to incoming ICMP Source Quench messages";
              }
            }  // choice source-quench-choice
    
            leaf tcp-drop-synfin-set {
              type empty;
              description
                "Drop TCP packets that have both SYN and FIN flags";
            }
    
            leaf no-tcp-rfc1323 {
              junos:must "("system internet-options no-tcp-rfc1323-paws")";
              junos:must-message "RFC 1323 Protection Against Wrapped Sequence Number extension must be disabled";
              type empty;
              description
                "Disable RFC 1323 TCP extensions";
            }
    
            leaf no-tcp-rfc1323-paws {
              type empty;
              description
                "Disable RFC 1323 Protection Against Wrapped Sequence Number extension";
            }
    
            choice ipv6-reject-zero-hop-limit-choice {
              leaf ipv6-reject-zero-hop-limit {
                type empty;
                description
                  "Enable dropping IPv6 packets with zero hop-limit";
              }
              leaf no-ipv6-reject-zero-hop-limit {
                type empty;
                description
                  "Don't enable dropping IPv6 packets with zero hop-limit";
              }
            }  // choice ipv6-reject-zero-hop-limit-choice
    
            leaf ipv6-duplicate-addr-detection-transmits {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 20";
                }
              }
              default "3";
              description
                "IPv6 Duplicate address detection transmits";
            }
    
            choice ipv6-path-mtu-discovery-choice {
              leaf ipv6-path-mtu-discovery {
                type empty;
                description
                  "Enable IPv6 Path MTU discovery";
              }
              leaf no-ipv6-path-mtu-discovery {
                type empty;
                description
                  "Don't enable IPv6 Path MTU discovery";
              }
            }  // choice ipv6-path-mtu-discovery-choice
    
            leaf ipv6-path-mtu-discovery-timeout {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "5 .. 71582788";
                }
              }
              units "minutes";
              default "10";
              description
                "IPv6 Path MTU Discovery timeout";
            }
    
            leaf no-tcp-reset {
              type enumeration {
                enum "drop-tcp-with-syn-only" {
                  value 0;
                  description
                    "Drop only those TCP Packets with SYN bit";
                }
                enum "drop-all-tcp" {
                  value 1;
                  description
                    "Drop all TCP Packets";
                }
              }
              description
                "Do not send RST TCP packet for packets sent to non-listening ports";
            }
          }  // container internet-options
    
          leaf-list authentication-order {
            type enumeration {
              enum "radius" {
                value 0;
                description
                  "Remote Authentication Dial-In User Service";
              }
              enum "tacplus" {
                value 1;
                description
                  "TACACS+ authentication services";
              }
              enum "password" {
                value 2;
                description
                  "Traditional password authentication";
              }
            }
            ordered-by user;
          }
    
          container location {
            description
              "Location of the system, in various forms";
            uses location-type;
          }  // container location
    
          container ports {
            description
              "Craft interface RS-232 ports";
            uses apply-advanced;
    
            container console {
              description "Console port";
              uses tty_port_object;
            }  // container console
    
            container auxiliary {
              description "Auxiliary port";
              uses tty_port_object;
            }  // container auxiliary
          }  // container ports
    
          container diag-port-authentication {
            description
              "Authentication for the diagnostic port";
            uses apply-advanced;
    
            leaf plain-text-password-value {
              type string;
              description "Plain text password";
            }
    
            leaf encrypted-password {
              type string {
                length "1 .. 128";
              }
              description
                "Encrypted password string";
            }
          }  // container diag-port-authentication
    
          container pic-console-authentication {
            description
              "Authentication for the console port on PICs";
            uses apply-advanced;
    
            leaf plain-text-password-value {
              type string;
              description "Plain text password";
            }
    
            leaf encrypted-password {
              type string {
                length "1 .. 128";
              }
              description
                "Encrypted password string";
            }
          }  // container pic-console-authentication
    
          container boot-loader-authentication {
            description
              "Authentication for the boot loader";
            uses apply-advanced;
    
            leaf plain-text-password-value {
              type string;
              description "Plain text password";
            }
    
            leaf encrypted-password {
              type string {
                length "1 .. 128";
              }
              description
                "Encrypted password string";
            }
          }  // container boot-loader-authentication
    
          list name-server {
            key "name";
            ordered-by user;
            description "DNS name servers";
            uses nameserver-object;
          }  // list name-server
    
          list radius-server {
            key "name";
            ordered-by user;
            description
              "RADIUS server configuration";
            uses radius-server-object;
          }  // list radius-server
    
          container dynamic-profile-options {
            description
              "Dynamic profile options";
            uses dynamic-profile-option-object;
          }  // container dynamic-profile-options
    
          list tacplus-server {
            key "name";
            ordered-by user;
            description
              "TACACS+ server configuration";
            uses tacplus-server-object;
          }  // list tacplus-server
    
          container password-options {
            description
              "Local password options, password should be configured at [system authentication-order]";
            uses apply-advanced;
    
            leaf tacplus-authorization {
              type empty;
              description
                "TACACS+ authorization for locally authenticated users";
            }
          }  // container password-options
    
          container ldap-server {
            presence "enable ldap-server";
            description
              "LDAP server configuration";
            uses apply-advanced;
    
            leaf-list address {
              type jt:hostname;
              max-elements 2;
              ordered-by user;
              description
                "LDAP authentication server address";
            }
    
            leaf-list port {
              type union {
                type uint32;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              max-elements 2;
              ordered-by user;
              description
                "LDAP authentication server port number";
            }
    
            leaf base {
              type string;
              description "LDAP base";
            }
    
            leaf binddn {
              type string;
              description "LDAP binddn";
            }
    
            leaf bindpw {
              type string;
              description "LDAP bindpw";
            }
    
            leaf routing-instance {
              junos:must "("routing-instances $$")";
              junos:must-message "Referenced routing instance must be defined under [edit routing-instances] hierarchy level";
              type string {
                junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
                junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
              }
              description
                "LDAP routing instance";
            }
    
            leaf ldaps-cert {
              type string;
              description
                "LDAPS client certificate id";
            }
          }  // container ldap-server
    
          container radius-options {
            description "RADIUS options";
            uses apply-advanced;
    
            leaf password-protocol {
              type enumeration {
                enum "mschap-v2" {
                  value 0;
                  description "MSCHAP version 2";
                }
              }
              description
                "Specify password protocol used in RADIUS packets";
            }
    
            leaf enhanced-accounting {
              type empty;
              description
                "Include authentication method, remote port and user-privileges in 'login' accounting";
            }
    
            container attributes {
              description
                "Configure RADIUS attributes";
              uses apply-advanced;
    
              leaf nas-ip-address {
                type jt:ipaddr;
                description
                  "Value of NAS-IP-Address in outgoing RADIUS packets";
              }
    
              leaf nas-id {
                type string {
                  length "3 .. 64";
                }
                description
                  "Value of NAS-ID in outgoing RADIUS packets";
              }
            }  // container attributes
          }  // container radius-options
    
          container tacplus-options {
            description "TACACS+ options";
            uses apply-advanced;
    
            leaf service-name {
              type string;
              description "TACACS+ service name";
            }
    
            leaf authorization-time-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "15 .. 1440";
                }
              }
              units "minutes";
              description
                "TACACS+ authorization refresh time interval";
            }
    
            choice strict-authorization-choice {
              leaf strict-authorization {
                type empty;
                description
                  "Deny login if authorization request fails";
              }
              leaf no-strict-authorization {
                type empty;
                description
                  "Don't deny login if authorization request fails";
              }
            }  // choice strict-authorization-choice
    
            choice cmd-attribute {
              leaf no-cmd-attribute-value {
                type empty;
                description
                  "In start/stop requests, set 'cmd' attribute value to empty string";
              }
              leaf exclude-cmd-attribute {
                type empty;
                description
                  "In start/stop requests, do not include 'cmd' attribute";
              }
            }  // choice cmd-attribute
    
            leaf enhanced-accounting {
              type empty;
              description
                "Include authentication method, remote port and user-privileges in 'login' accounting";
            }
    
            leaf timestamp-and-timezone {
              type empty;
              description
                "In start/stop accounting packets, include 'start-time', 'stop-time' and 'timezone' attributes";
            }
          }  // container tacplus-options
    
          container accounting {
            description
              "System accounting configuration";
            uses apply-advanced;
    
            leaf-list events {
              type enumeration {
                enum "login" {
                  value 0;
                  description "Login session";
                }
                enum "change-log" {
                  value 1;
                  description
                    "Configuration changes";
                }
                enum "interactive-commands" {
                  value 2;
                  description "Commands";
                }
              }
              description "Events to be logged";
            }
    
            leaf enhanced-avs-max {
              junos:must "(("system radius-options enhanced-accounting" || "system tacplus-options enhanced-accounting"))";
              junos:must-message "configure enhanced-accounting at one of [sytem radius-options] or [system tacplus-options]";
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type int32 {
                  range "7 .. 15";
                }
              }
              default "7";
              description
                "No. of AV pairs each of which can store a max of 250 Bytes";
            }
    
            container traceoptions {
              description
                "Trace options for system accounting";
              uses apply-advanced;
    
              leaf no-remote-trace {
                junos:must "("system tracing")";
                junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
                type empty;
                description
                  "Disable remote tracing";
              }
    
              container file {
                description
                  "Trace file information";
                leaf filename {
                  type string {
                    junos:posix-pattern "![/ %]";
                    junos:pattern-message "Must not contain '/', % or a space";
                    length "1 .. 1024";
                  }
                  description
                    "Name of file in which to write trace information";
                }
    
                leaf size {
                  type string;
                  description
                    "Maximum trace file size";
                }
    
                leaf files {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "2 .. 1000";
                    }
                  }
                  default "3";
                  description
                    "Maximum number of trace files";
                }
    
                choice world-readable-choice {
                  leaf world-readable {
                    type empty;
                    description
                      "Allow any user to read the log file";
                  }
                  leaf no-world-readable {
                    type empty;
                    description
                      "Don't allow any user to read the log file";
                  }
                }  // choice world-readable-choice
              }  // container file
    
              list flag {
                key "name";
                ordered-by user;
                description "Tracing parameters";
                leaf name {
                  type enumeration {
                    enum "all" {
                      value 0;
                      description
                        "Trace all operations";
                    }
                    enum "events" {
                      value 1;
                      description
                        "Trace accounting events and their processing";
                    }
                    enum "config" {
                      value 2;
                      description
                        "Trace configuration processing";
                    }
                    enum "radius" {
                      value 3;
                      description
                        "Trace RADIUS processing";
                    }
                    enum "tacplus" {
                      value 4;
                      description
                        "Trace TACPLUS processing";
                    }
                  }
                }
              }  // list flag
            }  // container traceoptions
    
            container destination {
              description
                "Destination for system accounting records";
              uses apply-advanced;
    
              container radius {
                junos:must "((". server" || "system radius-server"))";
                junos:must-message "Configure RADIUS server at [system accounting destination radius server] or [system radius-server]";
                presence "enable radius";
                description
                  "Configure RADIUS accounting";
                uses apply-advanced;
    
                list server {
                  key "name";
                  ordered-by user;
                  description
                    "RADIUS accounting server configuration";
                  uses radius-server-object;
                }  // list server
              }  // container radius
    
              container tacplus {
                junos:must "((". server" || "system tacplus-server"))";
                junos:must-message "Configure TACPLUS server at [system accounting destination tacplus server] or [system tacplus-server]";
                presence "enable tacplus";
                description
                  "Send TACACS+ accounting records";
                uses apply-advanced;
    
                list server {
                  key "name";
                  ordered-by user;
                  description
                    "TACACS+ server configuration";
                  uses tacplus-server-object;
                }  // list server
              }  // container tacplus
            }  // container destination
          }  // container accounting
    
          leaf allow-v4mapped-packets {
            type empty;
            description
              "Allow processing for packets with V4 mapped address";
          }
    
          leaf allow-6pe-traceroute {
            type empty;
            description
              "Allow IPv4-mapped v6 address in tag icmp6 TTL expired packet";
          }
    
          leaf allow-l3vpn-traceroute-src-select {
            type empty;
            description
              "Select best src addr for icmp ttl expiry error in case l3vpn";
          }
    
          leaf allow-6vpe-traceroute-src-select {
            type empty;
            description
              "Select best src addr for icmp6 ttl expiry error in case 6vpe";
          }
    
          leaf donot-disable-ip6op-ondad {
            type empty;
            description
              "Do not disable IP operation on interface, if DAD fails on EUI-64 link local address ";
          }
    
          container schema {
            description "System schema";
            uses apply-advanced;
    
            container openconfig {
              description
                "Openconfig schema options";
              uses apply-advanced;
    
              leaf unhide {
                type empty;
                description
                  "Unhide openconfig from CLI";
              }
            }  // container openconfig
          }  // container schema
    
          list static-host-mapping {
            key "name";
            ordered-by user;
            description
              "Static hostname database mapping";
            leaf name {
              type string {
                junos:posix-pattern "^[[:alnum:]._-]+$";
                junos:pattern-message "Must be a string of alphanumericals, dashes or underscores";
              }
              description
                "Fully qualified name of system";
            }
    
            uses apply-advanced;
    
            leaf-list inet {
              type jt:ipv4addr;
              ordered-by user;
              description "IP address";
            }
    
            leaf-list inet6 {
              type jt:ipv6addr;
              ordered-by user;
              description "IPv6 address";
            }
    
            leaf sysid {
              type jt:sysid;
              description
                "ISO/IS-IS system identifier";
            }
    
            leaf-list alias {
              type string;
              ordered-by user;
              description "Hostname alias";
            }
          }  // list static-host-mapping
    
          container syslog {
            description
              "System logging facility";
            uses apply-advanced;
    
            container archive {
              presence "enable archive";
              description
                "Archive file information";
              uses archive-object;
            }  // container archive
    
            list user {
              key "name";
              ordered-by user;
              description
                "Notify a user of the event";
              leaf name {
                type string {
                  junos:posix-pattern "^([[:alnum:]_-]+|[*])$";
                  junos:pattern-message "Must be a string of alphanumericals, dashes or underscores";
                }
                description
                  "Name of user to notify";
              }
    
              uses apply-advanced;
    
              list contents {
                key "name";
                uses syslog-object;
              }  // list contents
    
              leaf match {
                type jt:regular-expression;
                description
                  "Regular expression for lines to be logged";
              }
    
              leaf allow-duplicates {
                type empty;
                description
                  "Do not suppress the repeated message";
              }
    
              leaf-list match-strings {
                type string;
                max-elements 50;
                ordered-by user;
                description
                  "Matching string(s) for lines to be logged";
              }
            }  // list user
    
            list host {
              key "name";
              ordered-by user;
              description "Host to be notified";
              leaf name {
                type string;
                description
                  "Name of host to notify";
              }
    
              uses apply-advanced;
    
              list contents {
                key "name";
                uses syslog-object;
              }  // list contents
    
              leaf match {
                type jt:regular-expression;
                description
                  "Regular expression for lines to be logged";
              }
    
              leaf allow-duplicates {
                type empty;
                description
                  "Do not suppress the repeated message";
              }
    
              leaf port {
                type union {
                  type uint16;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description "Port number";
              }
    
              leaf facility-override {
                type enumeration {
                  enum "authorization" {
                    value 0;
                    description
                      "Authorization system";
                  }
                  enum "daemon" {
                    value 1;
                    description
                      "Various system processes";
                  }
                  enum "ftp" {
                    value 2;
                    description "FTP process";
                  }
                  enum "kernel" {
                    value 3;
                    description "Kernel";
                  }
                  enum "user" {
                    value 4;
                    description "User processes";
                  }
                  enum "local0" {
                    value 5;
                    description
                      "Local logging option number 0";
                  }
                  enum "local1" {
                    value 6;
                    description
                      "Local logging option number 1";
                  }
                  enum "local2" {
                    value 7;
                    description
                      "Local logging option number 2";
                  }
                  enum "local3" {
                    value 8;
                    description
                      "Local logging option number 3";
                  }
                  enum "local4" {
                    value 9;
                    description
                      "Local logging option number 4";
                  }
                  enum "local5" {
                    value 10;
                    description
                      "Local logging option number 5";
                  }
                  enum "local6" {
                    value 11;
                    description
                      "Local logging option number 6";
                  }
                  enum "local7" {
                    value 12;
                    description
                      "Local logging option number 7";
                  }
                }
                description
                  "Alternate facility for logging to remote host";
              }
    
              leaf log-prefix {
                type string {
                  junos:posix-pattern "![ =:]";
                  junos:pattern-message "Should not contain '=' or ':'";
                }
                description
                  "Prefix for all logging to this host";
              }
    
              leaf source-address {
                type jt:ipaddr;
                description
                  "Use specified address as source address";
              }
    
              leaf routing-instance {
                junos:must "("routing-instances $$")";
                junos:must-message "Referenced routing instance must be defined under [edit routing-instances] hierarchy level";
                type string {
                  junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
                  junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
                }
                description "Routing instance";
              }
    
              leaf explicit-priority {
                type empty;
                description
                  "Include priority and facility in messages";
              }
    
              leaf exclude-hostname {
                type empty;
                description
                  "Exclude hostname field in messages";
              }
    
              leaf transport {
                type enumeration {
                  enum "tcp" {
                    value 0;
                    description
                      "TCP as transport for syslog";
                  }
                  enum "udp" {
                    value 1;
                    description
                      "UDP as transport for syslog";
                  }
                  enum "tls" {
                    value 2;
                    description
                      "TLS as transport for syslog";
                  }
                }
                default "udp";
                description "Transport type";
              }
    
              container tlsdetails {
                presence "enable tlsdetails";
                description "TLS for TCP";
                uses apply-advanced;
    
                leaf local-certificate {
                  type string {
                    junos:posix-pattern "^.{1,32}$";
                    junos:pattern-message "Must be string of 32 characters or less";
                  }
                  description
                    "Local Certificate ID";
                }
    
                container mutual-authentication {
                  description
                    "Enable TLS mutual authentication";
                  uses apply-advanced;
    
                  leaf certificate-authority {
                    junos:must "(("security pki ca-profile $$" || "security pki ca-profile-group $$"))";
                    junos:must-message "ca-profile must be configured under 'security pki ca-profile' or 'security pki ca-profile-group'";
                    type string {
                      junos:posix-pattern "^.{1,32}$";
                      junos:pattern-message "Must be string of 32 characters or less";
                    }
                    description
                      "Certificate authority profile";
                  }
                }  // container mutual-authentication
    
                list trusted-ca-group {
                  key "name";
                  ordered-by user;
                  description
                    "Trusted Certificate Authority group configuration";
                  leaf name {
                    type string {
                      length "1 .. 63";
                    }
                    description
                      "Name of the trusted CA group";
                  }
    
                  uses apply-advanced;
    
                  leaf-list ca-profiles {
                    type string {
                      length "1 .. 63";
                    }
                    max-elements 20;
                    ordered-by user;
                    description
                      "Name of the CA profiles (maximum 20)";
                  }
                }  // list trusted-ca-group
              }  // container tlsdetails
    
              leaf-list match-strings {
                type string;
                max-elements 50;
                ordered-by user;
                description
                  "Matching string(s) for lines to be logged";
              }
    
              container structured-data {
                presence
                  "enable structured-data";
                description
                  "Log system message in structured format";
                uses apply-advanced;
    
                choice format {
                  leaf brief {
                    type empty;
                    description
                      "Omit English-language text from end of logged message";
                  }
                }  // choice format
              }  // container structured-data
            }  // list host
    
            leaf allow-duplicates {
              type empty;
              description
                "Do not suppress the repeated message for all targets";
            }
    
            list file {
              key "name";
              description
                "File in which to log data";
              leaf name {
                type string {
                  junos:posix-pattern "![/ %]";
                  junos:pattern-message "Must not contain '/', % or a space";
                  length "1 .. 1024";
                }
                description
                  "Name of file in which to log data";
              }
    
              uses apply-advanced;
    
              list contents {
                key "name";
                uses syslog-object;
              }  // list contents
    
              leaf match {
                type jt:regular-expression;
                description
                  "Regular expression for lines to be logged";
              }
    
              leaf allow-duplicates {
                type empty;
                description
                  "Do not suppress the repeated message";
              }
    
              container archive {
                presence "enable archive";
                description
                  "Archive file information";
                uses archive-object;
              }  // container archive
    
              leaf explicit-priority {
                junos:must "(!(".. structured-data"))";
                junos:must-message "'explicit-priority' cannot be configured if 'structured-data' is configured";
                type empty;
                description
                  "Include priority and facility in messages";
              }
    
              leaf-list match-strings {
                type string;
                max-elements 50;
                ordered-by user;
                description
                  "Matching string(s) for lines to be logged";
              }
    
              container structured-data {
                presence
                  "enable structured-data";
                description
                  "Log system message in structured format";
                uses apply-advanced;
    
                choice format {
                  leaf brief {
                    type empty;
                    description
                      "Omit English-language text from end of logged message";
                  }
                }  // choice format
              }  // container structured-data
            }  // list file
    
            list console {
              key "name";
              description "Console logging";
              leaf name {
                type enumeration {
                  enum "any" {
                    value 0;
                    description "All facilities";
                  }
                  enum "authorization" {
                    value 1;
                    description
                      "Authorization system";
                  }
                  enum "daemon" {
                    value 2;
                    description
                      "Various system processes";
                  }
                  enum "ftp" {
                    value 3;
                    description "FTP process";
                  }
                  enum "ntp" {
                    value 4;
                    description "NTP process";
                  }
                  enum "security" {
                    value 5;
                    description
                      "Security related";
                  }
                  enum "kernel" {
                    value 6;
                    description "Kernel";
                  }
                  enum "user" {
                    value 7;
                    description "User processes";
                  }
                  enum "dfc" {
                    value 8;
                    description
                      "Dynamic flow capture";
                  }
                  enum "external" {
                    value 9;
                    description
                      "Local external applications";
                  }
                  enum "firewall" {
                    value 10;
                    description
                      "Firewall filtering system";
                  }
                  enum "pfe" {
                    value 11;
                    description
                      "Packet Forwarding Engine";
                  }
                  enum "conflict-log" {
                    value 12;
                    description
                      "Configuration conflict log";
                  }
                  enum "change-log" {
                    value 13;
                    description
                      "Configuration change log";
                  }
                  enum "interactive-commands" {
                    value 14;
                    description
                      "Commands executed by the UI";
                  }
                }
                description "Facility type";
              }
    
              choice level {
                leaf any {
                  type empty;
                  description "All levels";
                }
                leaf emergency {
                  type empty;
                  description "Panic conditions";
                }
                leaf alert {
                  type empty;
                  description
                    "Conditions that should be corrected immediately";
                }
                leaf critical {
                  type empty;
                  description
                    "Critical conditions";
                }
                leaf error {
                  type empty;
                  description "Error conditions";
                }
                leaf warning {
                  type empty;
                  description "Warning messages";
                }
                leaf notice {
                  type empty;
                  description
                    "Conditions that should be handled specially";
                }
                leaf info {
                  type empty;
                  description
                    "Informational messages";
                }
                leaf none {
                  type empty;
                  description "No messages";
                }
              }  // choice level
            }  // list console
    
            container time-format {
              presence "enable time-format";
              description
                "Additional information to include in system log timestamp";
              leaf year {
                type empty;
                description
                  "Include year in timestamp";
              }
    
              leaf millisecond {
                type empty;
                description
                  "Include milliseconds in timestamp";
              }
            }  // container time-format
    
            leaf source-address {
              type jt:ipaddr;
              description
                "Use specified address as source address";
            }
    
            leaf routing-instance {
              junos:must "("routing-instances $$")";
              junos:must-message "Referenced routing instance must be defined under [edit routing-instances] hierarchy level";
              type string {
                junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
                junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
              }
              description "Routing instance";
            }
    
            leaf log-rotate-frequency {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 59";
                }
              }
              units "minutes";
              default "15";
              description "Rotate log frequency";
            }
    
            container server {
              junos:must "("services app-engine")";
              junos:must-message "Syslog server can be enabled only when app-engine is configured";
              presence "enable server";
              description "Enable syslog server";
              uses apply-advanced;
    
              list routing-instances {
                key "name";
                ordered-by user;
                description
                  "Enable/disable syslog server in routing-instances";
                leaf name {
                  type string;
                  description
                    "Routing instance name";
                }
    
                uses apply-advanced;
    
                container disable {
                  presence "enable disable";
                  description
                    "Disable syslog server in this routing instance";
                }  // container disable
              }  // list routing-instances
            }  // container server
    
            leaf alternate-format {
              type empty;
              description
                "Append node name with daemon name instead of hostname(default) in the log entries";
            }
    
            container grpc-replay {
              description "GRPC streaming";
              uses apply-advanced;
    
              list contents {
                key "name";
                uses syslog-object;
              }  // list contents
    
              leaf-list match-strings {
                type string;
                max-elements 50;
                ordered-by user;
                description
                  "Matching string(s) for lines to be logged";
              }
    
              leaf last {
                type union {
                  type uint32;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                units "minutes";
                description
                  "Store last x minutes events";
              }
            }  // container grpc-replay
          }  // container syslog
    
          container tracing {
            description
              "System wide option for remote tracing";
            container destination-override {
              description
                "Override tracing destination";
              container syslog {
                description
                  "Send trace messages to remote syslog server";
                leaf host {
                  type jt:ipv4addr;
                  description
                    "IPv4 address of remote syslog server";
                }
              }  // container syslog
            }  // container destination-override
          }  // container tracing
    
          choice compress-configuration-files-choice {
            leaf compress-configuration-files {
              type empty;
              description
                "Compress the router configuration files";
            }
            leaf no-compress-configuration-files {
              type empty;
              description
                "Don't compress the router configuration files";
            }
          }  // choice compress-configuration-files-choice
    
          leaf max-configurations-on-flash {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 49";
              }
            }
            default "3";
            description
              "Number of configuration files stored on flash";
          }
    
          container archival {
            description
              "System archival management";
            uses apply-advanced;
    
            container configuration {
              description
                "Automatic configuration uploads to host(s)";
              uses apply-advanced;
    
              choice transfer-method {
                leaf transfer-interval {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "15 .. 2880";
                    }
                  }
                  units "minutes";
                  description
                    "Frequency at which file transfer happens";
                }
                leaf transfer-on-commit {
                  type empty;
                  description
                    "Transfer after each commit";
                }
              }  // choice transfer-method
    
              leaf routing-instance {
                junos:must "("system management-instance")";
                junos:must-message "'system management-instance' must be configured";
                junos:must "("routing-instances $$")";
                junos:must-message "Referenced routing instance must be defined under [edit routing-instances] hierarchy level";
                type string {
                  junos:posix-pattern "^mgmt_junos";
                  junos:pattern-message "Only routing-instance supported is mgmt_junos";
                }
                description
                  "Routing instance through which server is reachable";
              }
    
              list archive-sites {
                key "name";
                ordered-by user;
                description
                  "List of archive destinations";
                leaf name {
                  type string;
                  description
                    "URLs to receive configuration files";
                }
    
                leaf password {
                  type jt:unreadable;
                  description
                    "Password for login into the archive site";
                }
              }  // list archive-sites
            }  // container configuration
          }  // container archival
    
          container extensions {
            presence "enable extensions";
            description
              "Configuration for extensions to JUNOS";
            uses apply-advanced;
    
            list providers {
              key "name";
              ordered-by user;
              leaf name {
                type string {
                  junos:posix-pattern "^[a-z][a-z0-9]*$";
                  junos:pattern-message "Must be a string of alphanumericals starting with a letter";
                }
              }
    
              uses apply-advanced;
    
              list license-type {
                key "name";
                ordered-by user;
                leaf name {
                  type string {
                    junos:posix-pattern "^[a-z][a-z0-9]*$";
                    junos:pattern-message "Must be a string of alphanumericals starting with a letter";
                  }
                  description
                    "Type of the license";
                }
    
                leaf-list deployment-scope {
                  type string;
                  ordered-by user;
                }
              }  // list license-type
            }  // list providers
    
            container extension-service {
              presence
                "enable extension-service";
              description
                "Enable JUNOS extension service";
              uses apply-advanced;
    
              container application {
                presence "enable application";
                description
                  "JUNOS extension service application";
                uses apply-advanced;
    
                leaf refresh {
                  type empty;
                  description
                    "Refresh all operation scripts from their source";
                }
    
                leaf refresh-from {
                  type string {
                    length "1 .. 254";
                  }
                  description
                    "Refresh all operation scripts from a given base URL";
                }
    
                list file {
                  key "name";
                  description
                    "Configuration for each extension-service application";
                  uses jet_scripts_file_type;
                }  // list file
    
                container traceoptions {
                  description
                    "Trace options for extension-service applications";
                  uses script_traceoptions;
                }  // container traceoptions
    
                leaf max-datasize {
                  type string;
                  units "bytes";
                  description
                    "Maximum data segment size for apps execution";
                }
              }  // container application
            }  // container extension-service
    
            container resource-limits {
              description
                "Process resource limits";
              uses apply-advanced;
    
              list process {
                key "name";
                ordered-by user;
                leaf name {
                  type string;
                  description "Process name";
                }
    
                uses apply-advanced;
    
                container resources {
                  presence "enable resources";
                  description "Resource limits";
                  uses resources-type;
                }  // container resources
              }  // list process
    
              list package {
                key "name";
                ordered-by user;
                leaf name {
                  type string;
                  description "Package name";
                }
    
                uses apply-advanced;
    
                container resources {
                  presence "enable resources";
                  description "Resource limits";
                  uses resources-type;
                }  // container resources
              }  // list package
            }  // container resource-limits
          }  // container extensions
    
          container license {
            description
              "License information for the router";
            uses license-object;
          }  // container license
    
          container proxy {
            description
              "Proxy information for the router";
            uses proxy-object;
          }  // container proxy
    
          container kernel-options {
            description
              "Kernel options: selectively enable few knobs";
            uses apply-advanced;
    
            leaf select-active-unilist-member {
              type empty;
              status deprecated;
              description
                "Select active unilist member for host path forwarding";
            }
          }  // container kernel-options
    
          container fips {
            description "FIPS configuration";
            uses apply-advanced;
    
            container chassis {
              description
                "FIPS chassis boundary configuration";
              uses apply-advanced;
    
              leaf level {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type int32 {
                    range "0 .. 2";
                  }
                }
                description
                  "FIPS chassis level configuration";
              }
            }  // container chassis
    
            leaf level {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type int32 {
                  range "0 .. 2";
                }
              }
              description "FIPS 140 level";
            }
    
            container self-test {
              description
                "Configure FIPS self-test execution";
              uses apply-advanced;
    
              leaf after-key-generation {
                type enumeration {
                  enum "enable" {
                    value 0;
                    status deprecated;
                    description
                      "Enable FIPS self-test after cryptographic key generation";
                  }
                  enum "disable" {
                    value 1;
                    status deprecated;
                    description
                      "Disable FIPS self-test after cryptographic key generation";
                  }
                }
                status deprecated;
                description
                  "FIPS self-test after cryptographic key generation";
              }
    
              container periodic {
                description
                  "Configure periodic FIPS self-test";
                uses apply-advanced;
    
                leaf start-time {
                  type string {
                    junos:posix-pattern "^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])$";
                    junos:pattern-message "Time must be of the format hh:mm";
                  }
                  description
                    "Time when the periodic FIPS self-tests are to be executed (hh:mm)";
                }
    
                leaf day-of-month {
                  junos:must "(".. start-time")";
                  junos:must-message "'start-time' for FIPS self-test execution must be configured";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type int32 {
                      range "1 .. 31";
                    }
                  }
                  description
                    "Day of the month when FIPS self-tests are to be executed";
                }
    
                leaf month {
                  junos:must "(".. start-time")";
                  junos:must-message "'start-time' for FIPS self-test execution must be configured";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type int32 {
                      range "1 .. 12";
                    }
                  }
                  description
                    "The month when FIPS self-tests are to be executed";
                }
    
                leaf day-of-week {
                  junos:must "(".. start-time")";
                  junos:must-message "'start-time' for FIPS self-test execution must be configured";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type int32 {
                      range "1 .. 7";
                    }
                  }
                  description
                    "Day of the week when the FIPS self-tests are to be executed (where 1 - Monday, 7 - Sunday)";
                }
              }  // container periodic
            }  // container self-test
          }  // container fips
    
          container rng {
            description
              "Configure system CSPRNG";
            uses apply-advanced;
    
            choice algorithm {
              leaf fortuna {
                type empty;
                description "Fortuna";
              }
              leaf hmac-drbg {
                type empty;
                description
                  "HMAC DRBG, NIST SP800-90A";
              }
            }  // choice algorithm
          }  // container rng
    
          container health-monitor {
            presence "enable health-monitor";
            description
              "Kernel health monitoring system";
            uses apply-advanced;
    
            container ifstate-clients {
              presence "enable ifstate-clients";
              description
                "Configure health monitor for ifstate clients on ifstate consumption";
              uses apply-advanced;
    
              container peer-stuck {
                presence "enable peer-stuck";
                description
                  "PFE/RE/Smart PIC peers ifstate consumption";
                uses apply-advanced;
    
                leaf threshold-level {
                  type enumeration {
                    enum "low" {
                      value 0;
                      description "Low - 180s";
                    }
                    enum "medium" {
                      value 1;
                      description
                        "Medium - 360s";
                    }
                    enum "high" {
                      value 2;
                      description "High - 540s";
                    }
                  }
                  default "medium";
                  description
                    "Threshold level to categorize peers as stuck";
                }
    
                leaf action {
                  type enumeration {
                    enum "alarm" {
                      value 0;
                      description
                        "An alarm will be raised";
                    }
                    enum "alarm-with-cores" {
                      value 1;
                      description
                        "Live cores(stuck peer and vmcore) along with Alarm";
                    }
                    enum "restart" {
                      value 2;
                      description
                        "The stuck peers will be restarted";
                    }
                  }
                  default "alarm";
                  description
                    "Set an action on stuck peers";
                }
              }  // container peer-stuck
    
              container non-peer-stuck {
                presence "enable non-peer-stuck";
                description
                  "Non-peer clients(daemons) on ifstate consumption";
                uses apply-advanced;
    
                leaf threshold-level {
                  type enumeration {
                    enum "low" {
                      value 0;
                      description "Low - 180s";
                    }
                    enum "medium" {
                      value 1;
                      description
                        "Medium - 360s(Default)";
                    }
                    enum "high" {
                      value 2;
                      description "High - 540s";
                    }
                  }
                  default "medium";
                  description
                    "Threshold level to categorize non-peer ifstate clients as stuck";
                }
    
                leaf action {
                  type enumeration {
                    enum "alarm" {
                      value 0;
                      description
                        "An alarm will be raised";
                    }
                    enum "alarm-with-cores" {
                      value 1;
                      description
                        "Live cores(stuck client and vmcore) along with Alarm";
                    }
                    enum "restart" {
                      value 2;
                      description
                        "The stuck non-peer ifstate clients will be restarted";
                    }
                  }
                  default "alarm";
                  description
                    "Set an action on stuck non-peer ifstate clients";
                }
              }  // container non-peer-stuck
    
              container all-clients-stuck {
                presence
                  "enable all-clients-stuck";
                description
                  "All ifstate clients on ifstate consumption";
                uses apply-advanced;
    
                leaf threshold-level {
                  type enumeration {
                    enum "low" {
                      value 0;
                      description "Low - 180s";
                    }
                    enum "medium" {
                      value 1;
                      description
                        "Medium - 360s(Default)";
                    }
                    enum "high" {
                      value 2;
                      description "High - 540s";
                    }
                  }
                  default "medium";
                  description
                    "Threshold level to categorize all ifsate clients as stuck";
                }
    
                leaf action {
                  type enumeration {
                    enum "alarm" {
                      value 0;
                      description
                        "An alarm will be raised";
                    }
                    enum "alarm-with-cores" {
                      value 1;
                      description
                        "Live cores(stuck ifstate client and vmcore) along with Alarm";
                    }
                    enum "restart" {
                      value 2;
                      description
                        "The stuck non-peer ifstate clients will be restarted";
                    }
                  }
                  default "alarm";
                  description
                    "Set an action on all stuck ifstate clients";
                }
              }  // container all-clients-stuck
            }  // container ifstate-clients
          }  // container health-monitor
    
          leaf netlink-async-mode {
            type empty;
            description
              "Enable async mode in nlsd";
          }
    
          container auto-configuration {
            presence "enable auto-configuration";
            description
              "System Autoconfiguration";
            uses apply-advanced;
    
            container traceoptions {
              description
                "Autoconfiguration trace options";
              uses autoconf_traceoptions_type;
            }  // container traceoptions
          }  // container auto-configuration
    
          container processes {
            description "Process control";
            uses apply-advanced;
    
            container routing {
              description "Routing process";
              uses apply-advanced;
    
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable routing process";
                }
              }  // choice enable-disable
    
              leaf failover {
                type enumeration {
                  enum "other-routing-engine" {
                    value 0;
                    description
                      "On failure, switch mastership to other Routing Engine";
                  }
                  enum "alternate-media" {
                    value 1;
                    description
                      "On failure, reboot off alternate media";
                  }
                }
                description
                  "How to handle failure of routing process";
              }
    
              choice mode {
                leaf force-32-bit {
                  type empty;
                  description
                    "Always use 32-bit mode";
                }
                leaf force-64-bit {
                  type empty;
                  description
                    "Always use 64-bit mode";
                }
                leaf auto-64-bit {
                  type empty;
                  description
                    "Use 64-bit mode if RE memory is sufficient";
                }
              }  // choice mode
    
              container bgp {
                description
                  "BGP protocol control";
                uses apply-advanced;
    
                container rib-sharding {
                  junos:must "((!(any "routing-instances <*> protocols mvpn hot-root-standby") || ".. rib-sharding no-l3vpn"))";
                  junos:must-message "Can't be configured together with hot-root-standby in mvpn";
                  junos:must "(!("routing-options forwarding-table fib-agent"))";
                  junos:must-message "Can't be configured together with fib-agent";
                  junos:must "(!(any "routing-options dynamic-tunnels <*> bgp-signal"))";
                  junos:must-message "Can't be configured together with routing-options dynamic-tunnels bgp-signal";
                  junos:must "(!("routing-options nonstop-routing"))";
                  junos:must-message "Can't be configured together with routing-options nonstop-routing";
                  junos:must "(!("protocols bgp multipath list-nexthop"))";
                  junos:must-message "Can't be configured together with bgp multipath list-nexthop";
                  junos:must "(!("routing-options resolution scheme"))";
                  junos:must-message "Can't be configured together with routing-options resolution scheme";
                  junos:must "(!("routing-options transport-class"))";
                  junos:must-message "Can't be configured together with routing-options transport-class";
                  junos:must "(".. update-threading")";
                  junos:must-message "Must be configured together with update-threading";
                  presence "enable rib-sharding";
                  description
                    "Enable BGP RIB sharding";
                  uses apply-advanced;
    
                  leaf number-of-shards {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 31";
                      }
                    }
                    description
                      "Set number of sharding threads";
                  }
                }  // container rib-sharding
    
                container update-threading {
                  junos:must "(!("routing-options forwarding-table fib-agent"))";
                  junos:must-message "Can't be configured together with fib-agent";
                  junos:must "(!("routing-options nonstop-routing"))";
                  junos:must-message "Update threading can't be configured together with routing-options nonstop-routing";
                  presence
                    "enable update-threading";
                  description
                    "Enable BGP update threading";
                  uses apply-advanced;
    
                  leaf number-of-threads {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 128";
                      }
                    }
                    description
                      "Set number of update threads";
                  }
                }  // container update-threading
              }  // container bgp
            }  // container routing
    
            container software-forwarding {
              description
                "Software forwarding process";
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable software forwarding process";
                }
              }  // choice enable-disable
            }  // container software-forwarding
    
            container packet-forwarding-engine {
              description
                "Packet forwarding engine process";
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable packet forwarding engine process";
                }
              }  // choice enable-disable
            }  // container packet-forwarding-engine
    
            container chassis-control {
              description
                "Chassis control process";
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable chassis control process";
                }
              }  // choice enable-disable
            }  // container chassis-control
    
            container service-pics {
              description "Service PICs process";
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable service PICs process";
                }
              }  // choice enable-disable
    
              leaf failover {
                type enumeration {
                  enum "other-routing-engine" {
                    value 0;
                    description
                      "On failure, switch mastership to other Routing Engine";
                  }
                  enum "alternate-media" {
                    value 1;
                    description
                      "On failure, reboot off alternate media";
                  }
                }
                description
                  "How to handle failure of service PICs process";
              }
            }  // container service-pics
    
            container ntp {
              description "Network time process";
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable network time process";
                }
              }  // choice enable-disable
    
              leaf failover {
                type enumeration {
                  enum "other-routing-engine" {
                    value 0;
                    description
                      "On failure, switch mastership to other Routing Engine";
                  }
                  enum "alternate-media" {
                    value 1;
                    description
                      "On failure, reboot off alternate media";
                  }
                }
                description
                  "How to handle failure of network time process";
              }
            }  // container ntp
    
            container watchdog {
              description "Watchdog timer";
              choice enable-disable {
                leaf enable {
                  type empty;
                  description
                    "Enable watchdog timer";
                }
                leaf disable {
                  type empty;
                  description
                    "Disable watchdog timer";
                }
              }  // choice enable-disable
    
              leaf timeout {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 3600";
                  }
                }
                units "seconds";
                description
                  "Watchdog timer value";
              }
            }  // container watchdog
    
            container process-monitor {
              description
                "Process health monitor process";
              uses apply-advanced;
    
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable Process health monitor process";
                }
              }  // choice enable-disable
    
              container traceoptions {
                description
                  "Process health monitor trace options";
                uses pmond-traceoptions-type;
              }  // container traceoptions
            }  // container process-monitor
    
            container resource-cleanup {
              description
                "Resource cleanup process";
              uses apply-advanced;
    
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable Resource cleanup process";
                }
              }  // choice enable-disable
    
              container traceoptions {
                description
                  "Resource cleanup process trace options";
                uses res-cleanupd-traceoptions-type;
              }  // container traceoptions
            }  // container resource-cleanup
    
            container routing-socket-proxy {
              description
                "Routing socket proxy process";
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable routing socket proxy process";
                }
              }  // choice enable-disable
    
              leaf failover {
                type enumeration {
                  enum "other-routing-engine" {
                    value 0;
                    description
                      "On failure, switch mastership to other Routing Engine";
                  }
                  enum "alternate-media" {
                    value 1;
                    description
                      "On failure, reboot off alternate media";
                  }
                }
                description
                  "How to handle failure of routing socket proxy process";
              }
            }  // container routing-socket-proxy
    
            container web-management {
              description
                "Web management process";
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable web management process";
                }
              }  // choice enable-disable
    
              leaf failover {
                type enumeration {
                  enum "other-routing-engine" {
                    value 0;
                    description
                      "On failure, switch mastership to other Routing Engine";
                  }
                  enum "alternate-media" {
                    value 1;
                    description
                      "On failure, reboot off alternate media";
                  }
                }
                description
                  "How to handle failure of web management process";
              }
            }  // container web-management
    
            container named-service {
              presence "enable named-service";
              description "DNS server process";
              uses apply-advanced;
    
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable dns server process";
                }
              }  // choice enable-disable
    
              leaf failover {
                type enumeration {
                  enum "other-routing-engine" {
                    value 0;
                    description
                      "On failure, switch mastership to other Routing Engine";
                  }
                  enum "alternate-media" {
                    value 1;
                    description
                      "On failure, reboot off alternate media";
                  }
                }
                description
                  "How to handle failure of dns server process";
              }
            }  // container named-service
    
            container cfm {
              description
                "Ethernet OAM connectivity fault management process";
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable CFM process";
                }
              }  // choice enable-disable
            }  // container cfm
    
            container general-authentication-service {
              description
                "General authentication service process";
              uses apply-advanced;
    
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable general-authentication service process";
                }
              }  // choice enable-disable
    
              container traceoptions {
                description
                  "General authentication service trace options";
                uses apply-advanced;
    
                leaf no-remote-trace {
                  junos:must "("system tracing")";
                  junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
                  type empty;
                  description
                    "Disable remote tracing";
                }
    
                container file {
                  description
                    "Trace file information";
                  leaf filename {
                    type string {
                      junos:posix-pattern "![/ %]";
                      junos:pattern-message "Must not contain '/', % or a space";
                      length "1 .. 1024";
                    }
                    description
                      "Name of file in which to write trace information";
                  }
    
                  leaf size {
                    type string;
                    description
                      "Maximum trace file size";
                  }
    
                  leaf files {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "2 .. 1000";
                      }
                    }
                    default "3";
                    description
                      "Maximum number of trace files";
                  }
    
                  choice world-readable-choice {
                    leaf world-readable {
                      type empty;
                      description
                        "Allow any user to read the log file";
                    }
                    leaf no-world-readable {
                      type empty;
                      description
                        "Don't allow any user to read the log file";
                    }
                  }  // choice world-readable-choice
    
                  leaf match {
                    type jt:regular-expression;
                    description
                      "Regular expression for lines to be logged";
                  }
                }  // container file
    
                container filter {
                  presence "enable filter";
                  description
                    "Filter to control trace messages";
                  uses apply-advanced;
                }  // container filter
    
                list flag {
                  key "name";
                  ordered-by user;
                  description
                    "Tracing parameters";
                  leaf name {
                    type enumeration {
                      enum "configuration" {
                        value 0;
                        description
                          "Trace configuration events";
                      }
                      enum "framework" {
                        value 1;
                        description
                          "Trace authentication framework events";
                      }
                      enum "radius" {
                        value 2;
                        description
                          "Trace radius authentication events";
                      }
                      enum
                        "local-authentication" {
                        value 3;
                        description
                          "Trace local authentication events";
                      }
                      enum "ldap" {
                        value 4;
                        description
                          "Trace ldap authentication events";
                      }
                      enum "address-assignment" {
                        value 5;
                        description
                          "Trace address-assignment events";
                      }
                      enum "jsrc" {
                        value 6;
                        description
                          "Trace jsrc events";
                      }
                      enum "gx-plus" {
                        value 7;
                        description
                          "Trace gx-plus events";
                      }
                      enum "session-db" {
                        value 8;
                        description
                          "Trace session DB events";
                      }
                      enum "profile-db" {
                        value 9;
                        description
                          "Trace profile DB events";
                      }
                      enum "lib-stats" {
                        value 10;
                        description
                          "Trace lib stats events";
                      }
                      enum "user-access" {
                        value 11;
                        description
                          "Trace subscriber events";
                      }
                      enum "nasreq" {
                        value 12;
                        description
                          "Trace nasreq events";
                      }
                      enum "ocs-backup" {
                        value 13;
                        description
                          "Trace osc-backup events";
                      }
                      enum "s6a" {
                        value 14;
                        description
                          "Trace s6a events";
                      }
                      enum "nas-5g" {
                        value 15;
                        description
                          "Trace nas-5g events";
                      }
                      enum "all" {
                        value 16;
                        description
                          "Trace everything";
                      }
                    }
                  }
                }  // list flag
              }  // container traceoptions
            }  // container general-authentication-service
    
            container dhcp-service {
              description
                "Dynamic Host Configuration Protocol general configuration";
              uses apply-advanced;
    
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable dhcp service process";
                }
              }  // choice enable-disable
    
              leaf failover {
                type enumeration {
                  enum "other-routing-engine" {
                    value 0;
                    description
                      "On failure, switch mastership to other Routing Engine";
                  }
                  enum "alternate-media" {
                    value 1;
                    description
                      "On failure, reboot off alternate media";
                  }
                }
                description
                  "How to handle failure of dhcp service process";
              }
    
              container persistent-storage {
                description
                  "DHCP persistent storage configuration parameters";
                uses apply-advanced;
    
                leaf file-name {
                  type string {
                    length "1 .. 64";
                  }
                  description "File name";
                }
    
                leaf backup-interval {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 48";
                    }
                  }
                  description
                    "Number of hours after which backup file will be created";
                }
              }  // container persistent-storage
    
              container traceoptions {
                description
                  "Trace options for DHCP";
                uses jdhcp-traceoptions-level-type;
              }  // container traceoptions
    
              container interface-traceoptions {
                description
                  "Interface trace options for DHCP";
                uses jdhcp-interface-traceoptions-level-type;
              }  // container interface-traceoptions
    
              container log {
                description "Output the logs";
                uses apply-advanced;
    
                container session {
                  description "Logs of sessions";
                  uses apply-advanced;
    
                  leaf client {
                    type empty;
                    description
                      "Logs of the client";
                  }
    
                  leaf server {
                    type empty;
                    description
                      "Logs of the server";
                  }
    
                  leaf relay {
                    type empty;
                    description
                      "Logs of the relay";
                  }
    
                  leaf all {
                    type empty;
                    description
                      "Logs of the cleint, server and relay";
                  }
    
                  container dhcpv6 {
                    description "Logs of DHCPv6";
                    uses apply-advanced;
    
                    leaf client {
                      type empty;
                      description
                        "Logs of the client";
                    }
    
                    leaf server {
                      type empty;
                      description
                        "Logs of the server";
                    }
    
                    leaf relay {
                      type empty;
                      description
                        "Logs of the relay";
                    }
    
                    leaf dynamic-server {
                      type empty;
                      description
                        "Logs of the dynamic-server";
                    }
    
                    leaf all {
                      type empty;
                      description
                        "Logs of the cleint, server, relay and dynamic-server";
                    }
                  }  // container dhcpv6
                }  // container session
              }  // container log
    
              container dhcp-snooping-file {
                description
                  "DHCP snooping persistence file, write-interval and timeout";
                uses apply-advanced;
    
                leaf location {
                  type jt:filename;
                  description
                    "Location of DHCP snooping entries file";
                }
    
                leaf write-interval {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "60 .. 86400";
                    }
                  }
                  units "seconds";
                  description
                    "Time interval for writing DHCP snooping entries";
                }
              }  // container dhcp-snooping-file
    
              container dhcpv6-snooping-file {
                description
                  "DHCPv6 snooping persistence file and write-interval timeout";
                uses apply-advanced;
    
                leaf location {
                  type jt:filename;
                  description
                    "Location of DHCPv6 snooping entries file";
                }
    
                leaf write-interval {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "60 .. 86400";
                    }
                  }
                  units "seconds";
                  description
                    "Time interval in seconds for writing DHCPv6 snooping entries";
                }
              }  // container dhcpv6-snooping-file
    
              container ltv-syslog-interval {
                description
                  "Lease time violation syslog interval";
                uses apply-advanced;
    
                leaf syslog-interval {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "600 .. 86400";
                    }
                  }
                  units "seconds";
                  description
                    "Syslog interval in secs";
                }
              }  // container ltv-syslog-interval
    
              leaf accept-max-tcp-connections {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 100";
                  }
                }
                default "5";
                description
                  "Max TCP connections served globally at a time";
              }
    
              leaf request-max-tcp-connections {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 100";
                  }
                }
                default "3";
                description
                  "Max TCP connections requested globally at a time";
              }
            }  // container dhcp-service
    
            container diameter-service {
              description "Diameter process";
              uses apply-advanced;
    
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable diameter process";
                }
              }  // choice enable-disable
    
              container traceoptions {
                description
                  "Diameter service trace options";
                uses apply-advanced;
    
                leaf no-remote-trace {
                  junos:must "("system tracing")";
                  junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
                  type empty;
                  description
                    "Disable remote tracing";
                }
    
                container file {
                  description
                    "Trace file information";
                  leaf filename {
                    type string {
                      junos:posix-pattern "![/ %]";
                      junos:pattern-message "Must not contain '/', % or a space";
                      length "1 .. 1024";
                    }
                    description
                      "Name of file in which to write trace information";
                  }
    
                  leaf size {
                    type string;
                    description
                      "Maximum trace file size";
                  }
    
                  leaf files {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "2 .. 1000";
                      }
                    }
                    default "3";
                    description
                      "Maximum number of trace files";
                  }
    
                  choice world-readable-choice {
                    leaf world-readable {
                      type empty;
                      description
                        "Allow any user to read the log file";
                    }
                    leaf no-world-readable {
                      type empty;
                      description
                        "Don't allow any user to read the log file";
                    }
                  }  // choice world-readable-choice
    
                  leaf match {
                    type jt:regular-expression;
                    description
                      "Regular expression for lines to be logged";
                  }
                }  // container file
    
                leaf level {
                  type enumeration {
                    enum "error" {
                      value 0;
                      description
                        "Match error conditions";
                    }
                    enum "warning" {
                      value 1;
                      description
                        "Match warning messages";
                    }
                    enum "notice" {
                      value 2;
                      description
                        "Match conditions that should be handled specially";
                    }
                    enum "info" {
                      value 3;
                      description
                        "Match informational messages";
                    }
                    enum "verbose" {
                      value 4;
                      description
                        "Match verbose messages";
                    }
                    enum "all" {
                      value 5;
                      description
                        "Match all levels";
                    }
                  }
                  default "error";
                  description
                    "Level of debugging output";
                }
    
                list flag {
                  key "name";
                  ordered-by user;
                  description
                    "Aread to enabe debugging output";
                  leaf name {
                    type enumeration {
                      enum "framework" {
                        value 0;
                        description
                          "Trace Diameter framework";
                      }
                      enum "configuration" {
                        value 1;
                        description
                          "Trace configuration events";
                      }
                      enum "memory-management" {
                        value 2;
                        description
                          "Trace memory management events";
                      }
                      enum "daemon" {
                        value 3;
                        description
                          "Trace daemon level events";
                      }
                      enum "application" {
                        value 4;
                        description
                          "Trace Diameter application interface";
                      }
                      enum "node" {
                        value 5;
                        description
                          "Trace Diameter node events";
                      }
                      enum "diameter-instance" {
                        value 6;
                        description
                          "Trace Diameter instance events";
                      }
                      enum "dne" {
                        value 7;
                        description
                          "Trace Diameter DNE events";
                      }
                      enum "peer" {
                        value 8;
                        description
                          "Trace Diameter peer events";
                      }
                      enum "messages" {
                        value 9;
                        description
                          "Trace Diameter messages";
                      }
                      enum "all" {
                        value 10;
                        description
                          "Trace everything";
                      }
                    }
                  }
                }  // list flag
              }  // container traceoptions
            }  // container diameter-service
    
            container sbc-configuration-process {
              description
                "SBC configuration process";
              uses apply-advanced;
    
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable SBC configuration process";
                }
              }  // choice enable-disable
    
              leaf failover {
                type enumeration {
                  enum "other-routing-engine" {
                    value 0;
                    description
                      "On failure, switch mastership to other Routing Engine";
                  }
                  enum "alternate-media" {
                    value 1;
                    description
                      "On failure, reboot off alternate media";
                  }
                }
                description
                  "How to handle failure of SBC configuration process";
              }
    
              container traceoptions {
                description
                  "SBC configuration process trace options";
                uses sbc_traceoptions;
              }  // container traceoptions
            }  // container sbc-configuration-process
    
            container sdk-service {
              description "SDK Service Daemon";
              uses apply-advanced;
    
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable SDK Service Daemon";
                }
              }  // choice enable-disable
    
              container traceoptions {
                description
                  "SDK Service Daemon trace options";
                uses ssd-traceoptions-type;
              }  // container traceoptions
            }  // container sdk-service
    
            container aaad {
              description "AAAD process";
              uses apply-advanced;
    
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable AAAD process";
                }
              }  // choice enable-disable
    
              container traceoptions {
                description "AAA trace options";
                uses apply-advanced;
    
                leaf no-remote-trace {
                  junos:must "("system tracing")";
                  junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
                  type empty;
                  description
                    "Disable remote tracing";
                }
    
                container file {
                  description
                    "Trace file information";
                  leaf filename {
                    type string {
                      junos:posix-pattern "![/ %]";
                      junos:pattern-message "Must not contain '/', % or a space";
                      length "1 .. 1024";
                    }
                    description
                      "Name of file in which to write trace information";
                  }
    
                  leaf size {
                    type string;
                    description
                      "Maximum trace file size";
                  }
    
                  leaf files {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "2 .. 1000";
                      }
                    }
                    default "3";
                    description
                      "Maximum number of trace files";
                  }
    
                  choice world-readable-choice {
                    leaf world-readable {
                      type empty;
                      description
                        "Allow any user to read the log file";
                    }
                    leaf no-world-readable {
                      type empty;
                      description
                        "Don't allow any user to read the log file";
                    }
                  }  // choice world-readable-choice
    
                  leaf match {
                    type jt:regular-expression;
                    description
                      "Regular expression for lines to be logged";
                  }
                }  // container file
    
                leaf level {
                  type enumeration {
                    enum "error" {
                      value 0;
                      description
                        "Match error conditions";
                    }
                    enum "warning" {
                      value 1;
                      description
                        "Match warning messages";
                    }
                    enum "notice" {
                      value 2;
                      description
                        "Match conditions that should be handled specially";
                    }
                    enum "info" {
                      value 3;
                      description
                        "Match informational messages";
                    }
                    enum "verbose" {
                      value 4;
                      description
                        "Match verbose messages";
                    }
                    enum "all" {
                      value 5;
                      description
                        "Match all levels";
                    }
                  }
                  default "error";
                  description
                    "Level of debugging output";
                }
    
                list flag {
                  key "name";
                  ordered-by user;
                  description
                    "Tracing parameters";
                  leaf name {
                    type enumeration {
                      enum "send" {
                        value 0;
                        description
                          "Trace transmitted packets";
                      }
                      enum "send-detail" {
                        value 1;
                        description
                          "Trace transmitted packets in detail";
                      }
                      enum "receive" {
                        value 2;
                        description
                          "Trace received packets";
                      }
                      enum "receive-detail" {
                        value 3;
                        description
                          "Trace received packets in detail";
                      }
                      enum "timeout" {
                        value 4;
                        description
                          "Trace timeout events";
                      }
                      enum "state" {
                        value 5;
                        description
                          "Trace DIAMTER peer state changes";
                      }
                      enum "all" {
                        value 6;
                        description
                          "Trace everything";
                      }
                    }
                  }
                }  // list flag
    
                list peer {
                  key "name";
                  ordered-by user;
                  description
                    "Trace packet sent to or received from the peer[s]";
                  leaf name {
                    junos:must "("access diameter peer $$")";
                    junos:must-message "Referenced DIAMETER peer name must be defined";
                    type string {
                      length "1 .. 31";
                    }
                    description
                      "Trace packet sent to or received from the peer";
                  }
    
                  uses apply-advanced;
                }  // list peer
              }  // container traceoptions
            }  // container aaad
    
            container app-engine-management-service {
              description
                "App-engine Management Daemon";
              uses apply-advanced;
    
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable SDK Management Daemon";
                }
              }  // choice enable-disable
    
              container traceoptions {
                description
                  "App-engine management daemon trace options";
                uses sdk-mgmtd-traceoptions-type;
              }  // container traceoptions
            }  // container app-engine-management-service
    
            container datapath-trace-service {
              description
                "Datapath Trace process";
              uses apply-advanced;
    
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable Datapath Trace process";
                }
              }  // choice enable-disable
    
              container traceoptions {
                description
                  "DATAPATH Trace process trace options";
                uses datapath-traced-traceoptions-type;
              }  // container traceoptions
            }  // container datapath-trace-service
    
            container send {
              description
                "Secure Neighbor Discovery Protocol process";
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable SEND process";
                }
              }  // choice enable-disable
            }  // container send
    
            container static-subscribers {
              description
                "Static subscribers process";
              uses apply-advanced;
    
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable static-subscribers process";
                }
              }  // choice enable-disable
            }  // container static-subscribers
    
            container extensible-subscriber-services {
              description
                "Extensible Subscriber Services Manager Daemon";
              uses apply-advanced;
    
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable Extensible Subscriber Services Manager Daemon";
                }
              }  // choice enable-disable
            }  // container extensible-subscriber-services
    
            list daemon-process {
              key "name";
              ordered-by user;
              uses daemon-process;
            }  // list daemon-process
    
            container video-monitoring {
              description
                "Video Monitoring Process";
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable video monitoring process";
                }
              }  // choice enable-disable
    
              container traceoptions {
                description
                  "Trace options for VMOND";
                uses apply-advanced;
    
                leaf no-remote-trace {
                  junos:must "("system tracing")";
                  junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
                  type empty;
                  description
                    "Disable remote tracing";
                }
    
                container file {
                  description
                    "Trace file information";
                  leaf filename {
                    type string {
                      junos:posix-pattern "![/ %]";
                      junos:pattern-message "Must not contain '/', % or a space";
                      length "1 .. 1024";
                    }
                    description
                      "Name of file in which to write trace information";
                  }
    
                  leaf size {
                    type string;
                    description
                      "Maximum trace file size";
                  }
    
                  leaf files {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "2 .. 1000";
                      }
                    }
                    default "3";
                    description
                      "Maximum number of trace files";
                  }
    
                  choice world-readable-choice {
                    leaf world-readable {
                      type empty;
                      description
                        "Allow any user to read the log file";
                    }
                    leaf no-world-readable {
                      type empty;
                      description
                        "Don't allow any user to read the log file";
                    }
                  }  // choice world-readable-choice
    
                  leaf match {
                    type jt:regular-expression;
                    description
                      "Regular expression for lines to be logged";
                  }
                }  // container file
              }  // container traceoptions
            }  // container video-monitoring
    
            container remote-device-management {
              description
                "Remote device management daemon";
              uses apply-advanced;
    
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable Remote Device Management Daemon";
                }
              }  // choice enable-disable
            }  // container remote-device-management
          }  // container processes
    
          container ntp {
            description
              "Network Time Protocol services";
            uses apply-advanced;
    
            leaf boot-server {
              type jt:ipaddr;
              status deprecated;
              description
                "Server to query during boot sequence";
            }
    
            container interval-range {
              description
                "Set the minpoll and maxpoll interval range";
              leaf value {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type int32 {
                    range "0 .. 3";
                  }
                }
                description
                  "The poll interval range";
              }
            }  // container interval-range
    
            list authentication-key {
              key "name";
              ordered-by user;
              description
                "Authentication key information";
              leaf name {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 65534";
                  }
                }
                description
                  "Authentication key number";
              }
    
              leaf type {
                type enumeration {
                  enum "md5" {
                    value 0;
                    description
                      "MD5 authentication key";
                  }
                  enum "des" {
                    value 1;
                    description
                      "DES authentication key";
                  }
                  enum "sha1" {
                    value 2;
                    description
                      "Secure Hash Algorithm 1";
                  }
                  enum "sha256" {
                    value 3;
                    description
                      "Secure Hash Algorithm 2-256";
                  }
                }
                description
                  "Authentication key type";
              }
    
              leaf value {
                type jt:unreadable;
                description
                  "Authentication key value";
              }
            }  // list authentication-key
    
            list peer {
              key "name";
              ordered-by user;
              description "Peer parameters";
              leaf name {
                type jt:ipaddr;
                description
                  "Name or address of peer";
              }
    
              leaf key {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 65534";
                  }
                }
                description "Authentication key";
              }
    
              leaf version {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 4";
                  }
                }
                description "NTP version to use";
              }
    
              leaf prefer {
                type empty;
                description
                  "Prefer this peer_serv";
              }
            }  // list peer
    
            list server {
              key "name";
              ordered-by user;
              description "Server parameters";
              leaf name {
                type jt:hostname;
                description
                  "Name or address of server";
              }
    
              leaf key {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 65534";
                  }
                }
                description "Authentication key";
              }
    
              leaf version {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 4";
                  }
                }
                description "NTP version to use";
              }
    
              leaf prefer {
                type empty;
                description
                  "Prefer this peer_serv";
              }
    
              leaf routing-instance {
                junos:must "("routing-instances $$")";
                junos:must-message "Referenced routing instance must be defined under [edit routing-instances] hierarchy level";
                type string {
                  junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
                  junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
                }
                description
                  "Routing instance through which server is reachable";
              }
    
              container nts {
                junos:must "(!(".. key"))";
                junos:must-message "NTS authentication protocol and shared-key authentication method cannot be used together";
                presence "enable nts";
                description
                  "Enable NTS protocol for this server";
                container remote-identity {
                  description
                    "Remote identity of server for verification";
                  choice remote-id-type {
                    container distinguished-name {
                      description
                        "Use a distinguished name of server";
                      uses apply-advanced;
    
                      choice name-type {
                        leaf container {
                          type string;
                          description
                            "Specify the container string";
                        }
                        leaf wildcard {
                          type string;
                          description
                            "Specify the wildcard string";
                        }
                      }  // choice name-type
                    }  // container distinguished-name
                    leaf hostname {
                      type string;
                      description
                        "Use a fully-qualified domain name";
                    }
                  }  // choice remote-id-type
                }  // container remote-identity
              }  // container nts
            }  // list server
    
            list broadcast {
              key "name";
              ordered-by user;
              description "Broadcast parameters";
              leaf name {
                type jt:ipaddr;
                description
                  "Broadcast or multicast address to use";
              }
    
              leaf routing-instance-name {
                junos:must "("routing-instances $$")";
                junos:must-message "Referenced routing instance must be defined under [edit routing-instances] hierarchy level";
                type string {
                  junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
                  junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
                }
                description
                  "Routing intance name in which interface has address in broadcast subnet";
              }
    
              leaf key {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 65534";
                  }
                }
                description "Authentication key";
              }
    
              leaf version {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 4";
                  }
                }
                description "NTP version to use";
              }
    
              leaf ttl {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 255";
                  }
                }
                description
                  "TTL value to transmit";
              }
            }  // list broadcast
    
            leaf broadcast-client {
              type empty;
              description
                "Listen to broadcast NTP";
            }
    
            container multicast-client {
              presence "enable multicast-client";
              description
                "Listen to multicast NTP";
              leaf address {
                type jt:ipaddr;
                description
                  "Multicast address to listen to";
              }
            }  // container multicast-client
    
            leaf-list trusted-key {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 65534";
                }
              }
              ordered-by user;
              description
                "List of trusted authentication keys";
            }
    
            list restrict {
              key "name";
              ordered-by user;
              description "Restrict options";
              leaf name {
                type string;
                description
                  "Address of a host or network";
              }
    
              leaf mask {
                type string;
                description
                  "Mask address of host or network";
              }
    
              leaf noquery {
                type empty;
                description
                  "Deny ntpq and ntpdc queries";
              }
            }  // list restrict
    
            container threshold {
              description
                "Set the maximum threshold(sec) allowed for NTP adjustment";
              leaf value {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type int32 {
                    range "1 .. 600";
                  }
                }
                description
                  "The maximum value(sec) allowed for NTP adjustment";
              }
    
              leaf action {
                type enumeration {
                  enum "accept" {
                    value 0;
                    description
                      "Enable log mode for abnormal NTP adjustment";
                  }
                  enum "reject" {
                    value 1;
                    description
                      "Enable reject mode for abnormal NTP adjustment";
                  }
                }
                description
                  "Select actions for NTP abnormal adjustment";
              }
            }  // container threshold
    
            list source-address {
              key "name";
              ordered-by user;
              description
                "Source-Address parameters";
              leaf name {
                type jt:ipaddr;
                description
                  "Use specified address as source address";
              }
    
              leaf-list routing-instance {
                type string;
                ordered-by user;
                description
                  "Routing intance name in which source address is defined";
              }
            }  // list source-address
    
            container nts {
              description "NTS Configuration";
              leaf local-certificate {
                type string {
                  junos:posix-pattern "^.{1,32}$";
                  junos:pattern-message "Must be string of 32 characters or less";
                }
                description
                  "Local Certificate ID for NTS-KE server";
              }
    
              container trusted-ca {
                description
                  "Specify the trusted CA to use for verifying server certificate";
                choice ca {
                  leaf trusted-ca-profile {
                    junos:must "("security pki ca-profile $$")";
                    junos:must-message "Referenced profile must be defined under [edit security pki ca-profile]";
                    type string;
                    description
                      "Name of the trusted CA profile to use";
                  }
                  leaf trusted-ca-group {
                    junos:must "("security pki trusted-ca-group $$")";
                    junos:must-message "Referenced group must be defined under [edit security pki trusted-ca-group]";
                    type string;
                    description
                      "Name of the trusted CA group to use";
                  }
                }  // choice ca
              }  // container trusted-ca
            }  // container nts
          }  // container ntp
    
          container node-health-monitor {
            description
              "Node Health Monitoring Configuration";
            uses apply-advanced;
    
            leaf refresh-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "60 .. 86400";
                }
              }
              units "seconds";
              default "120";
              description
                "Node Health Monitoring Refresh Interval";
            }
          }  // container node-health-monitor
    
          container master-password {
            description
              "Master password for $8$ password-encryption";
            uses apply-advanced;
    
            leaf iteration-count {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "10 .. 10000";
                }
              }
              default "100";
              description
                "Define PBKDF2 iteration count";
            }
    
            leaf pseudorandom-function {
              type enumeration {
                enum "hmac-sha2-256" {
                  value 0;
                  description
                    "HMAC-SHA2-256 authentication algorithm";
                }
                enum "hmac-sha1" {
                  value 1;
                  description
                    "HMAC-SHA1 authentication algorithm";
                }
                enum "hmac-sha2-512" {
                  value 2;
                  description
                    "HMAC-SHA2-512 authentication algorithm";
                }
              }
              default "hmac-sha2-256";
              description "Define PBKDF2 PRF";
            }
          }  // container master-password
        }  // grouping juniper-system
    
        grouping apply-advanced {
          description
            "Apply advanced configuration logic";
          leaf-list apply-groups {
            type string;
            ordered-by user;
            description
              "Groups from which to inherit configuration data";
          }
    
          leaf-list apply-groups-except {
            type string;
            ordered-by user;
            description
              "Don't inherit configuration data from these groups";
          }
    
          list apply-macro {
            key "name";
            ordered-by user;
            description
              "Macro and parameters for commit script expansion";
            uses apply-macro-type;
          }  // list apply-macro
        }  // grouping apply-advanced
    
        grouping apply-macro-type {
          description
            "Macro data for commit-script expansion";
          leaf name {
            type string;
            description
              "Name of the macro to be expanded";
          }
    
          list data {
            key "name";
            uses macro-data-type;
          }  // list data
        }  // grouping apply-macro-type
    
        grouping archive-object {
          leaf size {
            type string;
            units "bytes";
            description
              "Size of files to be archived";
          }
    
          leaf files {
            type string;
            description
              "Number of files to be archived";
          }
    
          choice world-readable-choice {
            leaf world-readable {
              type empty;
              description
                "Allow any user to read the log file";
            }
            leaf no-world-readable {
              type empty;
              description
                "Don't allow any user to read the log file";
            }
          }  // choice world-readable-choice
    
          choice binary-data-choice {
            leaf binary-data {
              type empty;
              description
                "Mark file as if it contains binary data";
            }
            leaf no-binary-data {
              type empty;
              description
                "Don't mark file as if it contains binary data";
            }
          }  // choice binary-data-choice
    
          leaf transfer-interval {
            junos:must "(".. archive-sites")";
            junos:must-message "'archive-sites' must also be configured";
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "5 .. 2880";
              }
            }
            units "minutes";
            description
              "Frequency at which to transfer files to archive sites";
          }
    
          leaf start-time {
            junos:must "(".. archive-sites")";
            junos:must-message "'archive-sites' must also be configured";
            type jt:time;
            description
              "Start time for file transmission (yyyy-mm-dd.hh:mm)";
          }
    
          list archive-sites {
            key "name";
            ordered-by user;
            leaf name {
              type string;
              description
                "Primary and failover URLs to receive archive files";
            }
    
            leaf password {
              type jt:unreadable;
              description
                "Password for login into the archive site";
            }
    
            leaf routing-instance {
              junos:must "("routing-instances $$")";
              junos:must-message "Referenced routing instance must be defined under [edit routing-instances] hierarchy level";
              type string {
                junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
                junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
              }
              description "Routing instance";
            }
          }  // list archive-sites
        }  // grouping archive-object
    
        grouping arp-interface-type {
          description
            "Logical interface on which to configure ARP aging timer";
          leaf name {
            junos:must "("interfaces $$-IFL family inet")";
            junos:must-message "Family inet must be configured on this logical interface";
            type union {
              type jt:interface-name;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description "Interface name";
          }
    
          uses apply-advanced;
    
          leaf aging-timer {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 600000";
              }
            }
            units "minutes";
            description
              "Change the ARP aging time value";
          }
        }  // grouping arp-interface-type
    
        grouping authentication-object {
          description "Authentication method";
          uses apply-advanced;
    
          leaf plain-text-password-value {
            type string;
            description "Plain text password";
          }
    
          leaf encrypted-password {
            type string {
              length "1 .. 128";
            }
            description
              "Encrypted password string";
          }
    
          leaf no-public-keys {
            type empty;
            description
              "Disables ssh public key based authentication";
          }
    
          list ssh-rsa {
            junos:must "(!(".. no-public-keys"))";
            junos:must-message "To configure ssh-rsa, 'no-public-keys' should not be configured";
            key "name";
            ordered-by user;
            description
              "Secure shell (ssh) RSA public key string";
            leaf name {
              type string {
                junos:posix-pattern "^([[:digit:]]+[[:space:]]+[[:digit:]]+[[:space:]]+[[:digit:]]+|ssh-rsa[[:space:]]+[[:print:]]+)([[:space:]]+.*){0,1}$";
                junos:pattern-message "Must follow SSHv2 or SSHv1 RSA key format";
              }
              description
                "Secure shell (ssh) RSA public key string";
            }
    
            leaf from {
              type string {
                junos:posix-pattern "^[*.:a-zA-Z0-9,!?_-]+$";
                junos:pattern-message "Pattern-list must not contain spaces";
              }
              description
                "Pattern-list of allowed hosts";
            }
          }  // list ssh-rsa
    
          list ssh-dsa {
            junos:must "(!(".. no-public-keys"))";
            junos:must-message "To configure ssh-dsa, 'no-public-keys' should not be configured";
            key "name";
            ordered-by user;
            status deprecated;
            description
              "Secure shell (ssh) DSA public key string";
            leaf name {
              type string {
                junos:posix-pattern "^ssh-dss[[:space:]]+[[:print:]]+([[:space:]]+.*){0,1}$";
                junos:pattern-message "Key format must be 'ssh-dss <base64-encoded-DSA-key> <comment>'";
              }
              description
                "Secure shell (ssh) DSA public key string";
            }
    
            leaf from {
              type string {
                junos:posix-pattern "^[*.:a-zA-Z0-9,!?_-]+$";
                junos:pattern-message "Pattern-list must not contain spaces";
              }
              description
                "Pattern-list of allowed hosts";
            }
          }  // list ssh-dsa
    
          list ssh-ecdsa {
            junos:must "(!(".. no-public-keys"))";
            junos:must-message "To configure ssh-ecdsa, 'no-public-keys' should not be configured";
            key "name";
            ordered-by user;
            description
              "Secure shell (ssh) ECDSA public key string";
            leaf name {
              type string {
                junos:posix-pattern "^ecdsa-sha2-nistp(256|384|521)[[:space:]]+[[:print:]]+([[:space:]]+.*){0,1}$";
                junos:pattern-message "Key format must be 'ecdsa-sha2-nistp??? <base64-encoded-ECDSA-key> <comment>'";
              }
              description
                "Secure shell (ssh) ECDSA public key string";
            }
    
            leaf from {
              type string {
                junos:posix-pattern "^[*.:a-zA-Z0-9,!?_-]+$";
                junos:pattern-message "Pattern-list must not contain spaces";
              }
              description
                "Pattern-list of allowed hosts";
            }
          }  // list ssh-ecdsa
    
          list ssh-ed25519 {
            junos:must "(!(".. no-public-keys"))";
            junos:must-message "To configure ssh-ed25519, 'no-public-keys' should not be configured";
            key "name";
            ordered-by user;
            description
              "Secure shell (ssh) ED25519 public key string";
            leaf name {
              type string {
                junos:posix-pattern "^ssh-ed25519[[:space:]]+[[:print:]]+([[:space:]]+.*){0,1}$";
                junos:pattern-message "Key format must be 'ssh-ed25519 <base64-encoded-key> <comment>'";
              }
              description
                "Secure shell (ssh) EC25519 public key string";
            }
    
            leaf from {
              type string {
                junos:posix-pattern "^[*.:a-zA-Z0-9,!?_-]+$";
                junos:pattern-message "Pattern-list must not contain spaces";
              }
              description
                "Pattern-list of allowed hosts";
            }
          }  // list ssh-ed25519
        }  // grouping authentication-object
    
        grouping autoconf_traceoptions_type {
          description
            "Trace options for autoconfiguration";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
    
            leaf match {
              type jt:regular-expression;
              description
                "Regular expression for lines to be logged";
            }
          }  // container file
    
          leaf level {
            type enumeration {
              enum "error" {
                value 0;
                description
                  "Match error conditions";
              }
              enum "warning" {
                value 1;
                description
                  "Match warning messages";
              }
              enum "notice" {
                value 2;
                description
                  "Match conditions that should be handled specially";
              }
              enum "info" {
                value 3;
                description
                  "Match informational messages";
              }
              enum "verbose" {
                value 4;
                description
                  "Match verbose messages";
              }
              enum "all" {
                value 5;
                description "Match all levels";
              }
            }
            default "error";
            description
              "Level of debugging output";
          }
    
          list flag {
            key "name";
            ordered-by user;
            description
              "Area of autoconfiguration to enable debugging output";
            leaf name {
              type enumeration {
                enum "configuration" {
                  value 0;
                  description
                    "Trace configuration";
                }
                enum "interfaces" {
                  value 1;
                  description
                    "Trace interface database";
                }
                enum "io" {
                  value 2;
                  description
                    "Trace interface database";
                }
                enum "rtsock" {
                  value 3;
                  description
                    "Trace routing socket";
                }
                enum "ui" {
                  value 4;
                  description
                    "Trace user interface";
                }
                enum "auth" {
                  value 5;
                  description
                    "Trace VLAN authentication";
                }
                enum "all" {
                  value 6;
                  description "Trace all areas";
                }
              }
            }
          }  // list flag
        }  // grouping autoconf_traceoptions_type
    
        grouping bbe-stats-type {
          description
            "Bbe statistics configuration";
          uses apply-advanced;
        }  // grouping bbe-stats-type
    
        grouping bdbrepd-type {
          description
            "Database replication configuration";
          uses apply-advanced;
    
          container traceoptions {
            description
              "Database replication trace options";
            uses bdbrepd-traceoptions-type;
          }  // container traceoptions
        }  // grouping bdbrepd-type
    
        grouping bdbrepd-traceoptions-type {
          description
            "Trace options for Database replication";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
    
            leaf match {
              type jt:regular-expression;
              description
                "Regular expression for lines to be logged";
            }
          }  // container file
    
          list flag {
            key "name";
            ordered-by user;
            description
              "Database replication operations to include in debugging trace";
            leaf name {
              type enumeration {
                enum "database" {
                  value 0;
                  description
                    "Database operations";
                }
                enum "mirror" {
                  value 1;
                  description
                    "Mirror operations";
                }
                enum "replication" {
                  value 2;
                  description
                    "Database replication operations";
                }
                enum "ui" {
                  value 3;
                  description
                    "User Interface operations";
                }
                enum "general" {
                  value 4;
                  description
                    "Miscellaneous operations";
                }
                enum "session-db" {
                  value 5;
                  description
                    "Session database operations";
                }
                enum "server" {
                  value 6;
                  description
                    "Server operations";
                }
                enum "all" {
                  value 7;
                  description "All operations";
                }
              }
            }
          }  // list flag
        }  // grouping bdbrepd-traceoptions-type
    
        grouping daemon-process {
          leaf name {
            type string;
          }
    
          choice enable-disable {
            leaf disable {
              type empty;
              description "Disable process";
            }
          }  // choice enable-disable
    
          leaf failover {
            type enumeration {
              enum "other-routing-engine" {
                value 0;
                description
                  "On failing, switch mastership to other routing engine";
              }
              enum "alternate-media" {
                value 1;
                description
                  "On failing, reboot off alternate media";
              }
            }
            description
              "How to handle failure of parameter";
          }
    
          leaf command {
            type string {
              length "1 .. 1024";
            }
            description
              "Path to binary for process";
          }
        }  // grouping daemon-process
    
        grouping datapath-traced-traceoptions-type {
          description
            "Trace options for DATAPATH-TRACED";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
    
            leaf match {
              type jt:regular-expression;
              description
                "Regular expression for lines to be logged";
            }
          }  // container file
    
          leaf level {
            type enumeration {
              enum "error" {
                value 0;
                description
                  "Match error conditions";
              }
              enum "warning" {
                value 1;
                description
                  "Match warning messages";
              }
              enum "notice" {
                value 2;
                description
                  "Match conditions that should be handled specially";
              }
              enum "info" {
                value 3;
                description
                  "Match informational messages";
              }
              enum "verbose" {
                value 4;
                description
                  "Match verbose messages";
              }
              enum "all" {
                value 5;
                description "Match all levels";
              }
            }
            default "error";
            description
              "Level of debugging output";
          }
    
          list flag {
            key "name";
            ordered-by user;
            description
              "Area of DATAPATH Trace process to enable debugging output";
            leaf name {
              type enumeration {
                enum
                  "datapath-traced-infrastructure" {
                  value 0;
                  description
                    "Trace datapath-traced infrastructure code";
                }
                enum "datapath-traced-server" {
                  value 1;
                  description
                    "Trace datapath-traced server functionality code";
                }
                enum "client-management" {
                  value 2;
                  description
                    "Trace datapath-traced client management code";
                }
                enum "all" {
                  value 3;
                  description
                    "Trace all areas of datapath-traced code";
                }
              }
            }
          }  // list flag
        }  // grouping datapath-traced-traceoptions-type
    
        grouping dhcp-traceoptions-type {
          description
            "Trace options for DHCP server";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
    
            leaf match {
              type jt:regular-expression;
              description
                "Regular expression for lines to be logged";
            }
          }  // container file
    
          leaf level {
            type enumeration {
              enum "error" {
                value 0;
                description
                  "Match error conditions";
              }
              enum "warning" {
                value 1;
                description
                  "Match warning messages";
              }
              enum "notice" {
                value 2;
                description
                  "Match conditions that should be handled specially";
              }
              enum "info" {
                value 3;
                description
                  "Match informational messages";
              }
              enum "verbose" {
                value 4;
                description
                  "Match verbose messages";
              }
              enum "all" {
                value 5;
                description "Match all levels";
              }
            }
            default "error";
            description
              "Level of debugging output";
          }
    
          list flag {
            key "name";
            ordered-by user;
            description
              "Area of DHCP server process to enable debugging output";
            leaf name {
              type enumeration {
                enum "binding" {
                  value 0;
                  description
                    "Trace bindings code";
                }
                enum "config" {
                  value 1;
                  description
                    "Trace configuration code";
                }
                enum "conflict" {
                  value 2;
                  description
                    "Trace conflict detection code";
                }
                enum "event" {
                  value 3;
                  description "Trace event code";
                }
                enum "ifdb" {
                  value 4;
                  description
                    "Trace interface database code";
                }
                enum "io" {
                  value 5;
                  description "Trace I/O code";
                }
                enum "lease" {
                  value 6;
                  description "Trace lease code";
                }
                enum "main" {
                  value 7;
                  description
                    "Trace main loop code";
                }
                enum "misc" {
                  value 8;
                  description
                    "Trace miscellaneous code";
                }
                enum "option" {
                  value 9;
                  description
                    "Trace option code";
                }
                enum "packet" {
                  value 10;
                  description
                    "Trace packet code";
                }
                enum "pool" {
                  value 11;
                  description "Trace pool code";
                }
                enum "protocol" {
                  value 12;
                  description
                    "Trace protocol code";
                }
                enum "relay" {
                  value 13;
                  description "Trace relay code";
                }
                enum "rtsock" {
                  value 14;
                  description
                    "Trace routing socket code";
                }
                enum "scope" {
                  value 15;
                  description "Trace scope code";
                }
                enum "signal" {
                  value 16;
                  description
                    "Trace signal code";
                }
                enum "trace" {
                  value 17;
                  description
                    "Trace tracing code";
                }
                enum "ui" {
                  value 18;
                  description
                    "Trace user interface code";
                }
                enum "all" {
                  value 19;
                  description
                    "Trace all areas of code";
                }
              }
            }
          }  // list flag
        }  // grouping dhcp-traceoptions-type
    
        grouping dynamic-profile-option-object {
          uses apply-advanced;
    
          leaf versioning {
            type empty;
            description
              "Enable dynamic profile versioning";
          }
        }  // grouping dynamic-profile-option-object
    
        grouping httpd_traceoptions_type {
          description
            "Trace options for Web management process";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
    
            leaf match {
              type jt:regular-expression;
              description
                "Regular expression for lines to be logged";
            }
          }  // container file
    
          leaf level {
            type enumeration {
              enum "error" {
                value 0;
                description
                  "Match error conditions";
              }
              enum "warning" {
                value 1;
                description
                  "Match warning messages";
              }
              enum "notice" {
                value 2;
                description
                  "Match conditions that should be handled specially";
              }
              enum "info" {
                value 3;
                description
                  "Match informational messages";
              }
              enum "verbose" {
                value 4;
                description
                  "Match verbose messages";
              }
              enum "all" {
                value 5;
                description "Match all levels";
              }
            }
            default "error";
            description
              "Level of debugging output";
          }
    
          list flag {
            key "name";
            ordered-by user;
            description
              "Area of HTTPD process to enable debugging output";
            leaf name {
              type enumeration {
                enum "configuration" {
                  value 0;
                  description
                    "Trace configuration";
                }
                enum "mgd" {
                  value 1;
                  description
                    "Trace MGD requests";
                }
                enum "webauth" {
                  value 2;
                  description
                    "Trace webauth requests";
                }
                enum "dynamic-vpn" {
                  value 3;
                  description
                    "Trace dynamic vpn requests";
                }
                enum "init" {
                  value 4;
                  description
                    "Trace daemon init process";
                }
                enum "all" {
                  value 5;
                  description "Trace all areas";
                }
              }
            }
          }  // list flag
        }  // grouping httpd_traceoptions_type
    
        grouping jdhcp-interface-traceoptions-level-type {
          description
            "Interface trace options for DHCP";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
    
            leaf match {
              type jt:regular-expression;
              description
                "Regular expression for lines to be logged";
            }
          }  // container file
    
          leaf level {
            type enumeration {
              enum "error" {
                value 0;
                description
                  "Match error conditions";
              }
              enum "warning" {
                value 1;
                description
                  "Match warning messages";
              }
              enum "notice" {
                value 2;
                description
                  "Match conditions that should be handled specially";
              }
              enum "info" {
                value 3;
                description
                  "Match informational messages";
              }
              enum "verbose" {
                value 4;
                description
                  "Match verbose messages";
              }
              enum "all" {
                value 5;
                description "Match all levels";
              }
            }
            default "error";
            description
              "Level of debugging output";
          }
    
          list flag {
            key "name";
            ordered-by user;
            description
              "Interface trace categories";
            leaf name {
              type enumeration {
                enum "state" {
                  value 0;
                  description
                    "State-transition operations";
                }
                enum "packet" {
                  value 1;
                  description
                    "Packet-decoding operations";
                }
                enum "flow" {
                  value 2;
                  description
                    "Flow-decoding operations";
                }
                enum "packet-option" {
                  value 3;
                  description
                    "DHCP option-decoding operations";
                }
                enum "dhcpv6-state" {
                  value 4;
                  description
                    "State-transition operations for dhcpv6";
                }
                enum "dhcpv6-packet" {
                  value 5;
                  description
                    "Packet-decoding operations for dhcpv6";
                }
                enum "dhcpv6-packet-option" {
                  value 6;
                  description
                    "DHCP option-decoding operations for dhcpv6";
                }
                enum "all" {
                  value 7;
                  description "All operations";
                }
              }
            }
          }  // list flag
        }  // grouping jdhcp-interface-traceoptions-level-type
    
        grouping jdhcp-local-server-type {
          uses apply-advanced;
    
          container traceoptions {
            junos:must "(!("forwarding-options helpers bootp"))";
            junos:must-message "Incompatible with 'forwarding-options helpers bootp'";
            junos:must "(!("system services dhcp"))";
            junos:must-message "Incompatible with 'set system services dhcp'";
            status deprecated;
            description
              "DHCP local server trace options";
            uses jdhcp-traceoptions-type;
          }  // container traceoptions
    
          container interface-traceoptions {
            status deprecated;
            description
              "DHCP local server interface trace options";
            uses jdhcp-interface-traceoptions-type;
          }  // container interface-traceoptions
    
          container dhcpv6 {
            description "DHCPv6 configuration";
            uses dhcpv6-local-server-type;
          }  // container dhcpv6
    
          list pool-match-order {
            key "name";
            ordered-by user;
            description
              "Define order of attribute matching for pool selection";
            leaf name {
              type enumeration {
                enum "external-authority" {
                  value 0;
                  description
                    "External authority handles address selection";
                }
                enum "ip-address-first" {
                  value 1;
                  description
                    "IP address used first to select a pool";
                }
                enum "option-82" {
                  value 2;
                  description
                    "Option 82 used in matching of pool";
                }
                enum "option-82-strict" {
                  value 3;
                  description
                    "Option 82 used in strict matching of pool";
                }
              }
              description "Match type";
            }
    
            uses apply-advanced;
          }  // list pool-match-order
    
          leaf duplicate-clients-on-interface {
            type empty;
            status deprecated;
            description
              "Allow duplicate clients on different interfaces in a subnet";
          }
    
          container duplicate-clients-in-subnet {
            junos:must "(!(".. duplicate-clients-on-interface"))";
            junos:must-message "Cannot specify duplicate-clients-in-subnet with duplicate-clients-on-interface";
            description
              "Allow duplicate clients in a subnet";
            uses jdhcp-duplicate-clients-in-subnet-type;
          }  // container duplicate-clients-in-subnet
    
          container forward-snooped-clients {
            junos:must "((!(".. forward-only") && (!(".. forward-only-replies") && !(any ".. group <*> forward-only"))))";
            junos:must-message "forward-only and forward-only-replies cannot be configured when forward-snooped-clients is configured";
            description
              "Forward snooped (unicast) packets";
            choice interface-type {
              leaf configured-interfaces {
                type empty;
                description
                  "Forward snooped (unicast) packets on configured interfaces";
              }
              leaf non-configured-interfaces {
                type empty;
                description
                  "Forward snooped (unicast) packets on non-configured interfaces";
              }
              leaf all-interfaces {
                type empty;
                description
                  "Forward snooped (unicast) packets on configured and non-configured interfaces";
              }
            }  // choice interface-type
          }  // container forward-snooped-clients
    
          container authentication {
            junos:must "(!("forwarding-options helpers bootp"))";
            junos:must-message "'authentication' statement cannot be included along with 'forwarding-options helpers bootp' statement";
            description "DHCP authentication";
            uses authentication-type;
          }  // container authentication
    
          container liveness-detection {
            junos:must "(!("forwarding-options helpers bootp"))";
            junos:must-message "'liveness-detection' statement cannot be included along with 'forwarding-options helpers bootp' statement";
            description
              "DHCP client liveness detection processing";
            uses dhcp-liveness-detection-type;
          }  // container liveness-detection
    
          container reconfigure {
            junos:must "(!("forwarding-options helpers bootp"))";
            junos:must-message "'reconfigure' statement cannot be included along with 'forwarding-options helpers bootp' statement";
            presence "enable reconfigure";
            description
              "DHCP reconfigure processing";
            uses reconfigure-type;
          }  // container reconfigure
    
          container overrides {
            junos:must "(!("forwarding-options helpers bootp"))";
            junos:must-message "'overrides' statement cannot be included along with 'forwarding-options helpers bootp' statement";
            presence "enable overrides";
            description
              "DHCP override processing";
            uses override-local-server-type;
          }  // container overrides
    
          container dynamic-profile {
            junos:must "(!("forwarding-options helpers bootp"))";
            junos:must-message "'dynamic-profile' statement cannot be included along with 'forwarding-options helpers bootp' statement";
            description "Dynamic profile to use";
            uses dynamic-profile-type;
          }  // container dynamic-profile
    
          leaf service-profile {
            type string {
              length "1 .. 128";
            }
            description
              "Dynamic profile to use for default service activation";
          }
    
          leaf access-profile {
            junos:must "("access profile $$")";
            junos:must-message "Matching access profile must be defined";
            junos:must "(!("forwarding-options helpers bootp"))";
            junos:must-message "'access-profile' statement cannot be included along with 'forwarding-options helpers bootp' statement";
            type string {
              length "1 .. 128";
            }
            description
              "Access profile to use for AAA services";
          }
    
          container short-cycle-protection {
            description
              "Short cycle lockout configuration";
            leaf lockout-min-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 86400";
                }
              }
              description
                "Short cycle lockout time in seconds";
            }
    
            leaf lockout-max-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 86400";
                }
              }
              description
                "Short cycle lockout time in seconds";
            }
          }  // container short-cycle-protection
    
          container route-suppression {
            junos:must "(!(".. liveness-detection method layer2-liveness-detection"))";
            junos:must-message "Cannot specify route-suppression with liveness-detection method layer2-liveness-detection";
            junos:must "(!(".. overrides no-arp"))";
            junos:must-message "Cannot specify route-suppression with overrides no-arp";
            description
              "Suppress access-internal and/or destination route addition";
            uses dhcp-route-suppression-type;
          }  // container route-suppression
    
          list group {
            junos:must "(!("system services dhcp"))";
            junos:must-message "Incompatible with the dhcp server configured under 'system services dhcp'";
            junos:must "(!("forwarding-options helpers bootp"))";
            junos:must-message "'group' statement cannot be included along with 'forwarding-options helpers bootp' statement";
            key "name";
            ordered-by user;
            description
              "Define a DHCP local server group";
            uses dhcp-local-server-group;
          }  // list group
    
          list dual-stack-group {
            key "name";
            description
              "Define a DHCP dual stack group";
            uses dhcp-local-server-dual-stack-group;
          }  // list dual-stack-group
    
          container lease-time-validation {
            presence
              "enable lease-time-validation";
            description
              "Configure lease time violation validation";
            uses apply-advanced;
    
            leaf lease-time-threshold {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "60 .. 2147483647";
                }
              }
              units "seconds";
              description
                "Threshold for lease time violation seconds";
            }
    
            container violation-action {
              description
                "Lease time validation violation action";
              choice violation-action-choice {
                leaf strict {
                  type empty;
                  description
                    "Reject discover and renew";
                }
                leaf override-lease {
                  type empty;
                  description
                    "Override assigned lease time with threshold";
                }
              }  // choice violation-action-choice
            }  // container violation-action
          }  // container lease-time-validation
    
          choice requested-ip-check {
            leaf requested-ip-network-match {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 31";
                }
              }
              default "8";
              description
                "Subnet to match server's address for active and giaddr for passive clients";
            }
            leaf requested-ip-interface-match {
              type empty;
              description
                "Use incoming-interface's subnet to check";
            }
          }  // choice requested-ip-check
    
          leaf no-snoop {
            junos:must "(!("legacy-snooping"))";
            junos:must-message "'no-snoop' statement cannot be included along with 'legacy-snooping' statement";
            type empty;
            description
              "Do not snoop DHCP packets";
          }
    
          container persistent-storage {
            description
              "Trigger to enable flat file storage";
            leaf automatic {
              type empty;
              description
                "Trigger automatically";
            }
          }  // container persistent-storage
    
          container allow-leasequery {
            presence "enable allow-leasequery";
            description "Allow DHCP leasequery";
            uses server-leasequery-type;
          }  // container allow-leasequery
    
          container remote-id-mismatch {
            junos:must "(!(".. reauthenticate"))";
            junos:must-message "'remote-id-mismatch' statement cannot be included with 'reauthenticate'";
            presence "enable remote-id-mismatch";
            description
              "DHCP client remote-id mismatch";
            uses dhcp-remote-id-mismatch-type;
          }  // container remote-id-mismatch
    
          container reauthenticate {
            junos:must "(!(".. remote-id-mismatch"))";
            junos:must-message "'reauthenticate' statement cannot be included with 'remote-id-mismatch'";
            junos:must "((".. authentication" || ".. .. authentication"))";
            junos:must-message "'authentication' statement must be included with 'reauthenticate'";
            description
              "DHCP client reauthenticate processing";
            leaf lease-renewal {
              type empty;
              description
                "Reauthenticate on each renew, rebind, DISCOVER or SOLICIT";
            }
    
            leaf remote-id-mismatch {
              type empty;
              description
                "Reauthenticate on remote-id mismatch for renew, rebind and re-negotiation";
            }
          }  // container reauthenticate
    
          container allow-bulk-leasequery {
            presence
              "enable allow-bulk-leasequery";
            description
              "Allow DHCP bulk leasequery";
            uses server-bulk-leasequery-type;
          }  // container allow-bulk-leasequery
    
          container allow-active-leasequery {
            presence
              "enable allow-active-leasequery";
            description
              "Allow DHCP active leasequery";
            uses server-active-leasequery-type;
          }  // container allow-active-leasequery
        }  // grouping jdhcp-local-server-type
    
        grouping authentication-type {
          description "DHCP authentication";
          uses apply-advanced;
    
          leaf password {
            type string {
              length "1 .. 64";
            }
            description
              "Username password to use";
          }
    
          container username-include {
            description "Add username options";
            uses apply-advanced;
    
            leaf delimiter {
              type string {
                length "1";
              }
              description
                "Change delimiter/separator character";
            }
    
            leaf domain-name {
              type string {
                length "1 .. 64";
              }
              description "Add domain name";
            }
    
            leaf user-prefix {
              type string {
                length "1 .. 64";
              }
              description
                "Add user defined prefix";
            }
    
            leaf mac-address {
              type empty;
              description "Include MAC address";
            }
    
            container option-82 {
              presence "enable option-82";
              description "Include option 82";
              leaf circuit-id {
                type empty;
                description
                  "Include option 82 circuit-id (sub option 1)";
              }
    
              leaf remote-id {
                type empty;
                description
                  "Include option 82 remote-id (sub option 2)";
              }
            }  // container option-82
    
            leaf logical-system-name {
              type empty;
              description
                "Include logical system name";
            }
    
            leaf routing-instance-name {
              type empty;
              description
                "Include routing instance name";
            }
    
            container client-id {
              presence "enable client-id";
              description "Include client ID";
              leaf exclude-headers {
                type empty;
                description
                  "Exclude all the headers";
              }
    
              leaf use-automatic-ascii-hex-encoding {
                type empty;
                description
                  "Use automatic ascii hex username encoding";
              }
            }  // container client-id
    
            leaf option-60 {
              type empty;
              description "Include option 60";
            }
    
            leaf circuit-type {
              type empty;
              description "Include circuit type";
            }
    
            leaf interface-name {
              type empty;
              description
                "Include interface name";
            }
    
            leaf interface-description {
              type enumeration {
                enum "device" {
                  value 0;
                  description
                    "Add the device interface description";
                }
                enum "logical" {
                  value 1;
                  description
                    "Add the logical interface description";
                }
              }
              description
                "Include interface description";
            }
    
            leaf vlan-tags {
              type empty;
              description
                "Include the vlan tag(s)";
            }
          }  // container username-include
        }  // grouping authentication-type
    
        grouping dhcp-liveness-detection-type {
          description
            "DHCP client liveness detection processing";
          uses apply-advanced;
    
          container failure-action {
            description
              "Liveness detection failure action options";
            uses dhcp-liveness-detection-failure-action-type;
          }  // container failure-action
    
          container method {
            description
              "Liveness detection method options";
            uses apply-advanced;
    
            choice method-choice {
              container bfd {
                description
                  "Bidirectional Forwarding Detection (BFD) options";
                uses dhcp-bfd-liveness-detection-type;
              }  // container bfd
              container layer2-liveness-detection {
                junos:must "((!(".. .. route-suppression") && (!(".. .. .. route-suppression") && !(".. .. .. .. route-suppression"))))";
                junos:must-message "Method not allowed with route-suppression enabled";
                description
                  "Address resolution options";
                uses dhcp-arp-nud-liveness-detection-type;
              }  // container layer2-liveness-detection
            }  // choice method-choice
          }  // container method
        }  // grouping dhcp-liveness-detection-type
    
        grouping dhcp-arp-nud-liveness-detection-type {
          description
            "Address Resolution detection options";
          uses apply-advanced;
    
          leaf transmit-interval {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "300 .. 1800";
              }
            }
            units "seconds";
            default "300";
            description
              "Transmit interval for address resolution";
          }
    
          leaf max-consecutive-retries {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "3 .. 6";
              }
            }
            default "3";
            description "Retry attempts";
          }
        }  // grouping dhcp-arp-nud-liveness-detection-type
    
        grouping dhcp-bfd-liveness-detection-type {
          description
            "Bidirectional Forwarding Detection (BFD) options";
          uses apply-advanced;
    
          leaf version {
            type enumeration {
              enum "0" {
                value 0;
                description
                  "BFD version 0 (deprecated)";
              }
              enum "1" {
                value 1;
                description "BFD version 1";
              }
              enum "automatic" {
                value 2;
                description
                  "Choose BFD version automatically";
              }
            }
            default "automatic";
            description
              "BFD protocol version number";
          }
    
          leaf minimum-interval {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "30000 .. 255000";
              }
            }
            units "milliseconds";
            description
              "Minimum transmit and receive interval";
          }
    
          leaf minimum-transmit-interval {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "30000 .. 255000";
              }
            }
            units "milliseconds";
            status deprecated;
            description
              "Minimum transmit interval";
          }
    
          leaf minimum-receive-interval {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "30000 .. 255000";
              }
            }
            units "milliseconds";
            description
              "Minimum receive interval";
          }
    
          leaf multiplier {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 255";
              }
            }
            default "3";
            description
              "Detection time multiplier";
          }
    
          choice adaptation-choice {
            leaf no-adaptation {
              type empty;
              description "Disable adaptation";
            }
          }  // choice adaptation-choice
    
          container transmit-interval {
            description
              "Transmit-interval options";
            uses apply-advanced;
    
            leaf minimum-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "30000 .. 255000";
                }
              }
              units "milliseconds";
              description
                "Minimum transmit interval";
            }
    
            leaf threshold {
              type union {
                type uint32;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              units "milliseconds";
              description
                "High transmit interval triggering a trap";
            }
          }  // container transmit-interval
    
          container detection-time {
            description "Detection-time options";
            uses apply-advanced;
    
            leaf threshold {
              type union {
                type uint32;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              units "milliseconds";
              description
                "High detection-time triggering a trap";
            }
          }  // container detection-time
    
          leaf session-mode {
            type enumeration {
              enum "automatic" {
                value 0;
                description
                  "Choose session-mode automatically";
              }
              enum "single-hop" {
                value 1;
                description "Use single-hop";
              }
              enum "multihop" {
                value 2;
                description "Use multihop";
              }
            }
            default "automatic";
            description
              "BFD single-hop or multihop session-mode";
          }
    
          leaf holddown-interval {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 255000";
              }
            }
            units "milliseconds";
            default "0";
            description
              "Time to hold the session-UP notification to the client";
          }
        }  // grouping dhcp-bfd-liveness-detection-type
    
        grouping dhcp-liveness-detection-failure-action-type {
          description
            "Liveness detection failure action options";
          uses apply-advanced;
    
          choice failure-action-type {
            leaf clear-binding {
              type empty;
              description
                "Clear the client binding";
            }
            leaf clear-binding-if-interface-up {
              type empty;
              description
                "Clear the client binding only if the incoming interface is up";
            }
            leaf log-only {
              type empty;
              description
                "Maintain the client binding and log the failure event";
            }
          }  // choice failure-action-type
        }  // grouping dhcp-liveness-detection-failure-action-type
    
        grouping dhcp-local-server-dual-stack-group {
          description "DHCP dual stack groups";
          leaf name {
            type string {
              junos:posix-pattern "^[A-Za-z0-9][_0-9A-Za-z-]*$";
              junos:pattern-message "Must be a non-reserved string of 64 characters or less";
              length "1 .. 64";
            }
            description "Dual stack group name";
          }
    
          uses apply-advanced;
    
          container authentication {
            description "DHCP authentication";
            uses dual-stack-authentication-type;
          }  // container authentication
    
          leaf access-profile {
            type string {
              length "1 .. 128";
            }
            description
              "Access profile to be used for jdhcpd";
          }
    
          container dynamic-profile {
            description "Dynamic profile to use";
            uses dynamic-profile-type;
          }  // container dynamic-profile
    
          leaf service-profile {
            type string {
              length "1 .. 128";
            }
            description
              "Dynamic profile to use for default service activation";
          }
    
          leaf on-demand-address-allocation {
            type empty;
            description
              "Allocate addresses on demand";
          }
    
          container classification-key {
            junos:must "(".. dynamic-profile")";
            junos:must-message "dynamic profile configuration in dual-stack-group is must for configuring classification-type";
            description
              "Classification key for identifying dual stack household";
            uses classification-types;
          }  // container classification-key
    
          leaf dual-stack-interface-client-limit {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 500000";
              }
            }
            description
              "Limit the number of client allowed on an interface";
          }
    
          container protocol-master {
            description
              "Select family as protocol master";
            uses jdhcp-dual-stack-protocol-mstr-type;
          }  // container protocol-master
    
          container liveness-detection {
            description
              "DHCP client liveness detection processing";
            uses dhcp-liveness-detection-dualstack-type;
          }  // container liveness-detection
    
          container reauthenticate {
            junos:must "(".. on-demand-address-allocation")";
            junos:must-message "'on-demand-address-allocation' statement must be included with 'reauthenticate'";
            junos:must "(".. authentication")";
            junos:must-message "'authentication' statement must be included with 'reauthenticate'";
            description
              "DHCP client reauthenticate processing";
            leaf lease-renewal {
              type empty;
              description
                "Reauthenticate on each renew, rebind, DISCOVER or SOLICIT";
            }
    
            leaf remote-id-mismatch {
              type empty;
              description
                "Reauthenticate on remote-id mismatch for renew, rebind and re-negotiation";
            }
          }  // container reauthenticate
    
          container short-cycle-protection {
            description
              "Short cycle lockout configuration";
            leaf lockout-min-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 86400";
                }
              }
              description
                "Short cycle lockout time in seconds";
            }
    
            leaf lockout-max-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 86400";
                }
              }
              description
                "Short cycle lockout time in seconds";
            }
          }  // container short-cycle-protection
        }  // grouping dhcp-local-server-dual-stack-group
    
        grouping classification-types {
          description
            "Different mechanisms to identify a single household";
          uses apply-advanced;
    
          leaf mac-address {
            type empty;
            description "MAC address of client";
          }
    
          leaf circuit-id {
            type empty;
            description "Circuit-id as key";
          }
    
          leaf remote-id {
            type empty;
            description "Remote-id as key";
          }
        }  // grouping classification-types
    
        grouping dhcp-liveness-detection-dualstack-type {
          description
            "DHCP client liveness detection processing";
          uses apply-advanced;
    
          container failure-action {
            description
              "Liveness detection failure action options";
            uses dhcp-liveness-detection-failure-action-type;
          }  // container failure-action
    
          container method {
            description
              "Liveness detection method options";
            uses apply-advanced;
    
            choice method-choice {
              container layer2-liveness-detection {
                junos:must "((!(".. .. route-suppression") && (!(".. .. .. route-suppression") && !(".. .. .. .. route-suppression"))))";
                junos:must-message "Method not allowed with route-suppression enabled";
                description
                  "Address resolution options";
                uses dhcp-arp-nud-liveness-detection-type;
              }  // container layer2-liveness-detection
            }  // choice method-choice
          }  // container method
        }  // grouping dhcp-liveness-detection-dualstack-type
    
        grouping dhcp-local-server-group {
          description "DHCP groups";
          leaf name {
            type string {
              junos:posix-pattern "^[A-Za-z0-9][_0-9A-Za-z-]*$";
              junos:pattern-message "Must be a non-reserved string of 64 characters or less";
              length "1 .. 64";
            }
            description "Group name";
          }
    
          uses apply-advanced;
    
          container authentication {
            description "DHCP authentication";
            uses authentication-type;
          }  // container authentication
    
          container liveness-detection {
            description
              "DHCP client liveness detection processing";
            uses dhcp-liveness-detection-type;
          }  // container liveness-detection
    
          container reconfigure {
            presence "enable reconfigure";
            description
              "DHCP reconfigure processing";
            uses reconfigure-type;
          }  // container reconfigure
    
          container overrides {
            presence "enable overrides";
            description
              "DHCP override processing";
            uses override-local-server-type;
          }  // container overrides
    
          container dynamic-profile {
            description "Dynamic profile to use";
            uses dynamic-profile-type;
          }  // container dynamic-profile
    
          leaf service-profile {
            type string {
              length "1 .. 128";
            }
            description
              "Dynamic profile to use for default service activation";
          }
    
          leaf access-profile {
            junos:must "("access profile $$")";
            junos:must-message "Matching access profile must be defined";
            type string {
              length "1 .. 128";
            }
            description
              "Access profile to use for AAA services";
          }
    
          container short-cycle-protection {
            description
              "Short cycle lockout configuration";
            leaf lockout-min-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 86400";
                }
              }
              description
                "Short cycle lockout time in seconds";
            }
    
            leaf lockout-max-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 86400";
                }
              }
              description
                "Short cycle lockout time in seconds";
            }
          }  // container short-cycle-protection
    
          container route-suppression {
            junos:must "(!(".. liveness-detection method layer2-liveness-detection"))";
            junos:must-message "Cannot specify route-suppression with liveness-detection method layer2-liveness-detection";
            junos:must "((!(".. overrides no-arp") && !(".. .. overrides no-arp")))";
            junos:must-message "Cannot specify route-suppression with overrides no-arp";
            description
              "Suppress access-internal and/or destination route addition";
            uses dhcp-route-suppression-type;
          }  // container route-suppression
    
          list interface {
            key "name";
            description "One or more interfaces";
            leaf name {
              type union {
                type jt:interface-name;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description "Interface name";
            }
    
            uses apply-advanced;
    
            leaf upto {
              type union {
                type jt:interface-name;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description "Interface up to";
            }
    
            leaf exclude {
              type empty;
              description
                "Exclude this interface range";
            }
    
            leaf trace {
              junos:must "(!(".. exclude"))";
              junos:must-message "Cannot specify tracing with exclude";
              type empty;
              description
                "Enable tracing for this interface";
            }
    
            container overrides {
              junos:must "(!(".. exclude"))";
              junos:must-message "Cannot specify overrides with exclude";
              description
                "DHCP override processing";
              uses override-local-server-type;
            }  // container overrides
    
            container dynamic-profile {
              junos:must "(!(".. exclude"))";
              junos:must-message "Cannot specify overrides with exclude";
              description
                "Dynamic profile to use";
              uses dynamic-profile-type;
            }  // container dynamic-profile
    
            leaf service-profile {
              type string {
                length "1 .. 128";
              }
              description
                "Dynamic profile to use for default service activation";
            }
    
            leaf access-profile {
              junos:must "("access profile $$")";
              junos:must-message "Matching access profile must be defined";
              junos:must "(!(".. exclude"))";
              junos:must-message "Cannot specify overrides with exclude";
              type string {
                length "1 .. 128";
              }
              description
                "Access profile to use for AAA services";
            }
    
            container short-cycle-protection {
              description
                "Short cycle lockout configuration";
              leaf lockout-min-time {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 86400";
                  }
                }
                description
                  "Short cycle lockout time in seconds";
              }
    
              leaf lockout-max-time {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 86400";
                  }
                }
                description
                  "Short cycle lockout time in seconds";
              }
            }  // container short-cycle-protection
          }  // list interface
    
          container lease-time-validation {
            presence
              "enable lease-time-validation";
            description
              "Configure lease time violation validation";
            uses apply-advanced;
    
            leaf lease-time-threshold {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "60 .. 2147483647";
                }
              }
              units "seconds";
              description
                "Threshold for lease time violation seconds";
            }
    
            container violation-action {
              description
                "Lease time validation violation action";
              choice violation-action-choice {
                leaf strict {
                  type empty;
                  description
                    "Reject discover and renew";
                }
                leaf override-lease {
                  type empty;
                  description
                    "Override assigned lease time with threshold";
                }
              }  // choice violation-action-choice
            }  // container violation-action
          }  // container lease-time-validation
    
          container remote-id-mismatch {
            junos:must "(!(".. reauthenticate"))";
            junos:must-message "'remote-id-mismatch' statement cannot be included with 'reauthenticate'";
            presence "enable remote-id-mismatch";
            description
              "DHCP client remote-id mismatch";
            uses dhcp-remote-id-mismatch-type;
          }  // container remote-id-mismatch
    
          container reauthenticate {
            junos:must "(!(".. remote-id-mismatch"))";
            junos:must-message "'reauthenticate' statement cannot be included with 'remote-id-mismatch'";
            junos:must "((".. authentication" || ".. .. authentication"))";
            junos:must-message "'authentication' statement must be included with 'reauthenticate'";
            description
              "DHCP client reauthenticate processing";
            leaf lease-renewal {
              type empty;
              description
                "Reauthenticate on each renew, rebind, DISCOVER or SOLICIT";
            }
    
            leaf remote-id-mismatch {
              type empty;
              description
                "Reauthenticate on remote-id mismatch for renew, rebind and re-negotiation";
            }
          }  // container reauthenticate
        }  // grouping dhcp-local-server-group
    
        grouping dhcp-remote-id-mismatch-type {
          description
            "DHCP client remote-id-mismatch processing";
          uses apply-advanced;
    
          leaf disconnect {
            type empty;
            description
              "Disconnect session on remote-id mismatch";
          }
        }  // grouping dhcp-remote-id-mismatch-type
    
        grouping dhcp-route-suppression-type {
          uses apply-advanced;
    
          choice dhcp-route-suppression-choice {
            leaf access-internal {
              type empty;
              description
                "Suppress access-internal and destination route addition";
            }
            leaf destination {
              type empty;
              description
                "Suppress destination route addition";
            }
          }  // choice dhcp-route-suppression-choice
        }  // grouping dhcp-route-suppression-type
    
        grouping dhcpv6-local-server-type {
          uses apply-advanced;
    
          container authentication {
            description "DHCPv6 authentication";
            uses dhcpv6-authentication-type;
          }  // container authentication
    
          container liveness-detection {
            description
              "DHCPv6 client liveness detection processing";
            uses dhcpv6-liveness-detection-type;
          }  // container liveness-detection
    
          container reconfigure {
            presence "enable reconfigure";
            description
              "DHCPv6 reconfigure processing";
            uses dhcpv6-reconfigure-type;
          }  // container reconfigure
    
          container dynamic-profile {
            description "Dynamic profile to use";
            uses dynamic-profile-type;
          }  // container dynamic-profile
    
          container forward-snooped-clients {
            junos:must "((!(".. forward-only") && (!(".. forward-only-replies") && !(any ".. group <*> forward-only"))))";
            junos:must-message "forward-only and forward-only-replies cannot be configured when forward-snooped-clients is configured";
            description
              "Forward snooped (unicast) packets";
            choice interface-type {
              leaf configured-interfaces {
                type empty;
                description
                  "Forward snooped (unicast) packets on configured interfaces";
              }
              leaf non-configured-interfaces {
                type empty;
                description
                  "Forward snooped (unicast) packets on non-configured interfaces";
              }
              leaf all-interfaces {
                type empty;
                description
                  "Forward snooped (unicast) packets on configured and non-configured interfaces";
              }
            }  // choice interface-type
          }  // container forward-snooped-clients
    
          leaf service-profile {
            type string {
              length "1 .. 128";
            }
            description
              "Dynamic profile to use for default service activation";
          }
    
          leaf access-profile {
            junos:must "("access profile $$")";
            junos:must-message "Matching access profile must be defined";
            type string {
              length "1 .. 128";
            }
            description
              "Access profile to use for AAA services";
          }
    
          container short-cycle-protection {
            description
              "Short cycle lockout configuration";
            leaf lockout-min-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 86400";
                }
              }
              description
                "Short cycle lockout time in seconds";
            }
    
            leaf lockout-max-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 86400";
                }
              }
              description
                "Short cycle lockout time in seconds";
            }
          }  // container short-cycle-protection
    
          container overrides {
            presence "enable overrides";
            description
              "DHCPv6 override processing";
            uses dhcpv6-override-local-server-type;
          }  // container overrides
    
          container route-suppression {
            description
              "Suppress access-internal and/or access route addition";
            uses dhcpv6-route-suppression-type;
          }  // container route-suppression
    
          list group {
            key "name";
            ordered-by user;
            description
              "Define a DHCPv6 local server group";
            uses dhcpv6-local-server-group;
          }  // list group
    
          container lease-time-validation {
            presence
              "enable lease-time-validation";
            description
              "Configure lease time violation validation";
            uses apply-advanced;
    
            leaf lease-time-threshold {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "60 .. 2147483647";
                }
              }
              units "seconds";
              description
                "Threshold for lease time violation seconds";
            }
    
            container violation-action {
              description
                "Lease time validation violation action";
              choice violation-action-choice {
                leaf strict {
                  type empty;
                  description
                    "Reject solicit and renew";
                }
                leaf override-lease {
                  type empty;
                  description
                    "Override assigned lease time with threshold";
                }
              }  // choice violation-action-choice
            }  // container violation-action
          }  // container lease-time-validation
    
          choice requested-ip-check {
            leaf requested-ip-network-match {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 127";
                }
              }
              default "16";
              description
                "Subnet to match server's address for active and link-address for passive clients";
            }
            leaf requested-ip-interface-match {
              type empty;
              description
                "Use incoming-interface's subnet to check";
            }
          }  // choice requested-ip-check
    
          leaf no-snoop {
            junos:must "(!("legacy-snooping"))";
            junos:must-message "'no-snoop' statement cannot be included along with 'legacy-snooping' statement";
            type empty;
            description
              "Do not snoop DHCPV6 packets";
          }
    
          container persistent-storage {
            description
              "Trigger to enable flat file storage";
            leaf automatic {
              type empty;
              description
                "Trigger automatically";
            }
          }  // container persistent-storage
    
          container server-duid-type {
            description
              "Define the DUID type to be used as the Server ID. Type supported is DUID-LL";
            uses duid-type;
          }  // container server-duid-type
    
          container remote-id-mismatch {
            junos:must "(!(".. reauthenticate"))";
            junos:must-message "'remote-id-mismatch' statement cannot be included with 'reauthenticate'";
            presence "enable remote-id-mismatch";
            description
              "DHCP client remote-id mismatch";
            uses dhcp-remote-id-mismatch-type;
          }  // container remote-id-mismatch
    
          container reauthenticate {
            junos:must "(!(".. remote-id-mismatch"))";
            junos:must-message "'reauthenticate' statement cannot be included with 'remote-id-mismatch'";
            junos:must "((".. authentication" || ".. .. authentication"))";
            junos:must-message "'authentication' statement must be included with 'reauthenticate'";
            description
              "DHCP client reauthenticate processing";
            leaf lease-renewal {
              type empty;
              description
                "Reauthenticate on each renew, rebind, DISCOVER or SOLICIT";
            }
    
            leaf remote-id-mismatch {
              type empty;
              description
                "Reauthenticate on remote-id mismatch for renew, rebind and re-negotiation";
            }
          }  // container reauthenticate
    
          container allow-leasequery {
            presence "enable allow-leasequery";
            description
              "Allow DHCPv6 leasequery";
            uses server-leasequery-type;
          }  // container allow-leasequery
    
          container allow-bulk-leasequery {
            presence
              "enable allow-bulk-leasequery";
            description
              "Allow DHCPv6 bulk leasequery";
            uses server-bulk-leasequery-type;
          }  // container allow-bulk-leasequery
    
          container allow-active-leasequery {
            presence
              "enable allow-active-leasequery";
            description
              "Allow DHCPv6 active leasequery";
            uses server-active-leasequery-type;
          }  // container allow-active-leasequery
    
          container duplicate-clients {
            description
              "Allow duplicate clients";
            uses dhcpv6-duplicate-clients-type;
          }  // container duplicate-clients
        }  // grouping dhcpv6-local-server-type
    
        grouping dhcpv6-authentication-type {
          description "DHCPv6 authentication";
          uses apply-advanced;
    
          leaf password {
            type string {
              length "1 .. 64";
            }
            description
              "Username password to use";
          }
    
          container username-include {
            description "Add username options";
            uses apply-advanced;
    
            leaf delimiter {
              type string {
                length "1";
              }
              description
                "Change delimiter/separator character";
            }
    
            leaf domain-name {
              type string {
                length "1 .. 64";
              }
              description "Add domain name";
            }
    
            leaf user-prefix {
              type string {
                length "1 .. 64";
              }
              description
                "Add user defined prefix";
            }
    
            leaf mac-address {
              type empty;
              description "Include MAC address";
            }
    
            container client-id {
              presence "enable client-id";
              description "Include client ID";
              leaf exclude-headers {
                type empty;
                description
                  "Exclude all the headers";
              }
    
              leaf use-automatic-ascii-hex-encoding {
                type empty;
                description
                  "Use automatic ascii hex username encoding";
              }
            }  // container client-id
    
            container relay-agent-remote-id {
              presence
                "enable relay-agent-remote-id";
              description
                "Include the relay agent remote ID";
              uses apply-advanced;
    
              choice relay-agent-remote-id-choice {
                leaf enterprise-id {
                  type empty;
                  status deprecated;
                  description
                    "Only use enterprise-id portion of option-37";
                }
                leaf remote-id {
                  type empty;
                  status deprecated;
                  description
                    "Only use remote-id portion of option-37";
                }
              }  // choice relay-agent-remote-id-choice
            }  // container relay-agent-remote-id
    
            leaf logical-system-name {
              type empty;
              description
                "Include logical system name";
            }
    
            leaf routing-instance-name {
              type empty;
              description
                "Include routing instance name";
            }
    
            leaf relay-agent-subscriber-id {
              type empty;
              description
                "Include the relay agent subscriber ID";
            }
    
            leaf relay-agent-interface-id {
              type empty;
              description
                "Include the relay agent interface ID";
            }
    
            leaf circuit-type {
              type empty;
              description "Include circuit type";
            }
    
            leaf interface-name {
              type empty;
              description
                "Include interface name";
            }
    
            leaf interface-description {
              type enumeration {
                enum "device" {
                  value 0;
                  description
                    "Add the device interface description";
                }
                enum "logical" {
                  value 1;
                  description
                    "Add the logical interface description";
                }
              }
              description
                "Include interface description";
            }
    
            leaf vlan-tags {
              type empty;
              description
                "Include the vlan tag(s)";
            }
          }  // container username-include
        }  // grouping dhcpv6-authentication-type
    
        grouping dhcpv6-duplicate-clients-type {
          description "Allow duplicate clients";
          choice distinguish-with {
            leaf incoming-interface {
              type empty;
              description
                "Allow duplicate clients on different underlying interfaces";
            }
          }  // choice distinguish-with
        }  // grouping dhcpv6-duplicate-clients-type
    
        grouping dhcpv6-liveness-detection-type {
          description
            "DHCPv6 client liveness detection processing";
          uses apply-advanced;
    
          container failure-action {
            description
              "Liveness detection failure action options";
            uses dhcp-liveness-detection-failure-action-type;
          }  // container failure-action
    
          container method {
            description
              "Liveness detection method options";
            uses apply-advanced;
    
            choice method-choice {
              container bfd {
                description
                  "Bidirectional Forwarding Detection (BFD) options";
                uses dhcp-bfd-liveness-detection-type;
              }  // container bfd
              container layer2-liveness-detection {
                description
                  "Neighbor discovery options";
                uses dhcp-arp-nud-liveness-detection-type;
              }  // container layer2-liveness-detection
            }  // choice method-choice
          }  // container method
        }  // grouping dhcpv6-liveness-detection-type
    
        grouping dhcpv6-local-server-group {
          description "DHCP groups";
          leaf name {
            type string {
              junos:posix-pattern "^[A-Za-z0-9][_0-9A-Za-z-]*$";
              junos:pattern-message "Must be a non-reserved string of 64 characters or less";
              length "1 .. 64";
            }
            description "Group name";
          }
    
          uses apply-advanced;
    
          container authentication {
            description "DHCP authentication";
            uses dhcpv6-authentication-type;
          }  // container authentication
    
          container liveness-detection {
            description
              "DHCPv6 client liveness detection processing";
            uses dhcpv6-liveness-detection-type;
          }  // container liveness-detection
    
          container reconfigure {
            presence "enable reconfigure";
            description
              "DHCPv6 reconfigure processing";
            uses dhcpv6-reconfigure-type;
          }  // container reconfigure
    
          container dynamic-profile {
            description "Dynamic profile to use";
            uses dynamic-profile-type;
          }  // container dynamic-profile
    
          leaf service-profile {
            type string {
              length "1 .. 128";
            }
            description
              "Dynamic profile to use for default service activation";
          }
    
          leaf access-profile {
            junos:must "("access profile $$")";
            junos:must-message "Matching access profile must be defined";
            type string {
              length "1 .. 128";
            }
            description
              "Access profile to use for AAA services";
          }
    
          container short-cycle-protection {
            description
              "Short cycle lockout configuration";
            leaf lockout-min-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 86400";
                }
              }
              description
                "Short cycle lockout time in seconds";
            }
    
            leaf lockout-max-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 86400";
                }
              }
              description
                "Short cycle lockout time in seconds";
            }
          }  // container short-cycle-protection
    
          container overrides {
            presence "enable overrides";
            description
              "DHCP override processing";
            uses dhcpv6-override-local-server-type;
          }  // container overrides
    
          container route-suppression {
            description
              "Suppress access-internal and/or access route addition";
            uses dhcpv6-route-suppression-type;
          }  // container route-suppression
    
          list interface {
            key "name";
            description "One or more interfaces";
            leaf name {
              type union {
                type jt:interface-name;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description "Interface name";
            }
    
            uses apply-advanced;
    
            leaf upto {
              type union {
                type jt:interface-name;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description "Interface up to";
            }
    
            leaf exclude {
              type empty;
              description
                "Exclude this interface range";
            }
    
            leaf trace {
              junos:must "(!(".. exclude"))";
              junos:must-message "Cannot specify tracing with exclude";
              type empty;
              description
                "Enable tracing for this interface";
            }
    
            container overrides {
              junos:must "(!(".. exclude"))";
              junos:must-message "Cannot specify overrides with exclude";
              description
                "DHCP override processing";
              uses dhcpv6-override-local-server-type;
            }  // container overrides
    
            container dynamic-profile {
              junos:must "(!(".. exclude"))";
              junos:must-message "Cannot specify overrides with exclude";
              description
                "Dynamic profile to use";
              uses dynamic-profile-type;
            }  // container dynamic-profile
    
            leaf service-profile {
              type string {
                length "1 .. 128";
              }
              description
                "Dynamic profile to use for default service activation";
            }
    
            leaf access-profile {
              junos:must "("access profile $$")";
              junos:must-message "Matching access profile must be defined";
              junos:must "(!(".. exclude"))";
              junos:must-message "Cannot specify overrides with exclude";
              type string {
                length "1 .. 128";
              }
              description
                "Access profile to use for AAA services";
            }
    
            container short-cycle-protection {
              description
                "Short cycle lockout configuration";
              leaf lockout-min-time {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 86400";
                  }
                }
                description
                  "Short cycle lockout time in seconds";
              }
    
              leaf lockout-max-time {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 86400";
                  }
                }
                description
                  "Short cycle lockout time in seconds";
              }
            }  // container short-cycle-protection
          }  // list interface
    
          container lease-time-validation {
            presence
              "enable lease-time-validation";
            description
              "Configure lease time violation validation";
            uses apply-advanced;
    
            leaf lease-time-threshold {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "60 .. 2147483647";
                }
              }
              units "seconds";
              description
                "Threshold for lease time violation seconds";
            }
    
            container violation-action {
              description
                "Lease time validation violation action";
              choice violation-action-choice {
                leaf strict {
                  type empty;
                  description
                    "Reject solicit and renew";
                }
                leaf override-lease {
                  type empty;
                  description
                    "Override assigned lease time with threshold";
                }
              }  // choice violation-action-choice
            }  // container violation-action
          }  // container lease-time-validation
    
          container remote-id-mismatch {
            junos:must "(!(".. reauthenticate"))";
            junos:must-message "'remote-id-mismatch' statement cannot be included with 'reauthenticate'";
            presence "enable remote-id-mismatch";
            description
              "DHCP client remote-id mismatch";
            uses dhcp-remote-id-mismatch-type;
          }  // container remote-id-mismatch
    
          container reauthenticate {
            junos:must "(!(".. remote-id-mismatch"))";
            junos:must-message "'reauthenticate' statement cannot be included with 'remote-id-mismatch'";
            junos:must "((".. authentication" || ".. .. authentication"))";
            junos:must-message "'authentication' statement must be included with 'reauthenticate'";
            description
              "DHCP client reauthenticate processing";
            leaf lease-renewal {
              type empty;
              description
                "Reauthenticate on each renew, rebind, DISCOVER or SOLICIT";
            }
    
            leaf remote-id-mismatch {
              type empty;
              description
                "Reauthenticate on remote-id mismatch for renew, rebind and re-negotiation";
            }
          }  // container reauthenticate
        }  // grouping dhcpv6-local-server-group
    
        grouping dhcpv6-override-local-server-type {
          description "DHCP override processing";
          uses apply-advanced;
    
          leaf interface-client-limit {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 500000";
              }
            }
            description
              "Limit the number of clients allowed on an interface";
          }
    
          leaf rapid-commit {
            type empty;
            description
              "Enable rapid commit processing";
          }
    
          container client-negotiation-match {
            description
              "Use secondary match criteria for SOLICIT PDU";
            choice match-with {
              leaf incoming-interface {
                type empty;
                description
                  "Use incoming interface";
              }
            }  // choice match-with
          }  // container client-negotiation-match
    
          container process-inform {
            presence "enable process-inform";
            description
              "Process INFORMATION request PDUs";
            uses apply-advanced;
    
            leaf pool {
              type string {
                length "1 .. 64";
              }
              description
                "Pool name for family inet6";
            }
          }  // container process-inform
    
          container delay-advertise {
            presence "enable delay-advertise";
            description
              "Filter options for dhcp-server";
            uses dhcpv6-filter-option;
          }  // container delay-advertise
    
          leaf delegated-pool {
            type string {
              length "1 .. 64";
            }
            description
              "Delegated pool name for inet6";
          }
    
          leaf multi-address-embedded-option-response {
            type empty;
            description
              "If the client requests multiple addresses place the options in each address";
          }
    
          leaf always-process-option-request-option {
            type empty;
            description
              "Always process option even after address allocation failure";
          }
    
          leaf delete-binding-on-renegotiation {
            type empty;
            description
              "Delete binding on renegotiation";
          }
    
          leaf top-level-status-code {
            type empty;
            description
              "A top level status code option rather than encapsulated in IA for NoAddrsAvail in Advertise PDUs";
          }
    
          leaf always-add-option-dns-server {
            type empty;
            description
              "Add option-23, DNS recursive name server in Advertise and Reply";
          }
    
          leaf asymmetric-lease-time {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "600 .. 86400";
              }
            }
            units "seconds";
            description
              "Use a reduced lease time for the client. In seconds";
          }
    
          leaf asymmetric-prefix-lease-time {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "600 .. 86400";
              }
            }
            units "seconds";
            description
              "Use a reduced prefix lease time for the client. In seconds";
          }
    
          leaf protocol-attributes {
            type string {
              length "1 .. 64";
            }
            description
              "DHCPv6 attributes to use as defined under access protocol-attributes";
          }
    
          leaf dual-stack {
            type string {
              length "1 .. 64";
            }
            description
              "Dual stack group to use";
          }
        }  // grouping dhcpv6-override-local-server-type
    
        grouping dhcpv6-filter-option {
          description
            "Generic DHCPv6 filter processing";
          uses apply-advanced;
    
          leaf delay-time {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 30";
              }
            }
            units "seconds";
            default "3";
            description
              "Time delay between solicit and advertise";
          }
    
          container based-on {
            description "Option number";
            uses apply-advanced;
    
            container option-18 {
              presence "enable option-18";
              description "Option 18";
              uses apply-advanced;
    
              container equals {
                description
                  "Generic option equals";
                uses server-v6-option-ascii-hex;
              }  // container equals
    
              container not-equals {
                description
                  "Generic option not equals";
                uses server-v6-option-ascii-hex;
              }  // container not-equals
    
              container starts-with {
                description
                  "Generic option starts-with";
                uses server-v6-option-ascii-hex;
              }  // container starts-with
            }  // container option-18
    
            container option-37 {
              presence "enable option-37";
              description "Option 37";
              uses apply-advanced;
    
              container equals {
                description
                  "Generic option equals";
                uses server-v6-option-ascii-hex;
              }  // container equals
    
              container not-equals {
                description
                  "Generic option not equals";
                uses server-v6-option-ascii-hex;
              }  // container not-equals
    
              container starts-with {
                description
                  "Generic option starts-with";
                uses server-v6-option-ascii-hex;
              }  // container starts-with
            }  // container option-37
    
            container option-15 {
              presence "enable option-15";
              description "Option 15";
              uses apply-advanced;
    
              container equals {
                description
                  "Generic option equals";
                uses server-v6-option-ascii-hex;
              }  // container equals
    
              container not-equals {
                description
                  "Generic option not equals";
                uses server-v6-option-ascii-hex;
              }  // container not-equals
    
              container starts-with {
                description
                  "Generic option starts-with";
                uses server-v6-option-ascii-hex;
              }  // container starts-with
            }  // container option-15
    
            container option-16 {
              presence "enable option-16";
              description "Option 16";
              uses apply-advanced;
    
              container equals {
                description
                  "Generic option equals";
                uses server-v6-option-ascii-hex;
              }  // container equals
    
              container not-equals {
                description
                  "Generic option not equals";
                uses server-v6-option-ascii-hex;
              }  // container not-equals
    
              container starts-with {
                description
                  "Generic option starts-with";
                uses server-v6-option-ascii-hex;
              }  // container starts-with
            }  // container option-16
          }  // container based-on
        }  // grouping dhcpv6-filter-option
    
        grouping dhcpv6-reconfigure-type {
          description
            "DHCPv6 reconfigure processing";
          uses apply-advanced;
    
          leaf strict {
            type empty;
            description
              "Only allow packets containing Reconfigure Accept Option";
          }
    
          leaf clear-on-abort {
            type empty;
            description
              "Delete client on reconfiguration abort";
          }
    
          leaf attempts {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 10";
              }
            }
            description
              "Number of reconfigure attempts before aborting";
          }
    
          leaf timeout {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 10";
              }
            }
            description
              "Initial timeout value for retry";
          }
    
          leaf token {
            type string {
              length "1 .. 244";
            }
            description "Reconfigure token";
          }
    
          container trigger {
            description
              "DHCP reconfigure trigger";
            uses reconfigure-trigger-type;
          }  // container trigger
    
          leaf support-option-pd-exclude {
            type empty;
            description
              "Request prefix exclude option in reconfigure message";
          }
        }  // grouping dhcpv6-reconfigure-type
    
        grouping dhcpv6-route-suppression-type {
          description
            "Suppress access-internal and/or access route addition";
          leaf access {
            type empty;
            description
              "Suppress access route addition";
          }
    
          leaf access-internal {
            type empty;
            description
              "Suppress access-internal route addition";
          }
        }  // grouping dhcpv6-route-suppression-type
    
        grouping dual-stack-authentication-type {
          description
            "DHCP dual stack authentication";
          uses apply-advanced;
    
          leaf password {
            type string {
              length "1 .. 64";
            }
            description
              "Username password to use";
          }
    
          container username-include {
            description "Add username options";
            uses apply-advanced;
    
            leaf delimiter {
              type string {
                length "1";
              }
              description
                "Change delimiter/separator character";
            }
    
            leaf domain-name {
              type string {
                length "1 .. 64";
              }
              description "Add domain name";
            }
    
            leaf user-prefix {
              type string {
                length "1 .. 64";
              }
              description
                "Add user defined prefix";
            }
    
            leaf mac-address {
              type empty;
              description "Include MAC address";
            }
    
            container client-id {
              presence "enable client-id";
              description "Include client ID";
              leaf exclude-headers {
                type empty;
                description
                  "Exclude all the headers";
              }
    
              leaf use-automatic-ascii-hex-encoding {
                type empty;
                description
                  "Use automatic ascii hex username encoding";
              }
            }  // container client-id
    
            leaf relay-agent-remote-id {
              type empty;
              description
                "Include the relay agent remote ID";
            }
    
            leaf logical-system-name {
              type empty;
              description
                "Include logical system name";
            }
    
            leaf routing-instance-name {
              type empty;
              description
                "Include routing instance name";
            }
    
            leaf relay-agent-interface-id {
              type empty;
              description
                "Include the relay agent interface ID";
            }
    
            leaf interface-name {
              type empty;
              description
                "Include interface name";
            }
    
            leaf interface-description {
              type enumeration {
                enum "device" {
                  value 0;
                  description
                    "Add the device interface description";
                }
                enum "logical" {
                  value 1;
                  description
                    "Add the logical interface description";
                }
              }
              description
                "Include interface description";
            }
    
            leaf circuit-type {
              type empty;
              description "Include circuit type";
            }
    
            leaf vlan-tags {
              type empty;
              description
                "Include the vlan tag(s)";
            }
          }  // container username-include
        }  // grouping dual-stack-authentication-type
    
        grouping duid-type {
          uses apply-advanced;
    
          leaf duid_ll {
            type empty;
            description
              "Link Layer Address based DUID ";
          }
        }  // grouping duid-type
    
        grouping dynamic-profile-type {
          description "Dynamic profile to use";
          uses apply-advanced;
    
          leaf dynamic-profile {
            junos:must "("dynamic-profiles $$")";
            junos:must-message "Dynamic profile must be defined";
            type string {
              length "1 .. 80";
            }
            description "Dynamic profile to use";
          }
    
          choice dynamic-profile-type-choice {
            leaf use-primary {
              junos:must "("dynamic-profiles $$")";
              junos:must-message "Dynamic profile must be defined";
              type string {
                length "1 .. 80";
              }
              description
                "Dynamic profile to use on the primary interface";
            }
            container aggregate-clients {
              presence
                "enable aggregate-clients";
              description
                "Aggregate client profiles";
              uses apply-advanced;
    
              choice aggregate-type {
                leaf merge {
                  type empty;
                  description
                    "Merge the client dynamic profiles";
                }
                leaf replace {
                  type empty;
                  description
                    "Replace client dynamic profiles";
                }
              }  // choice aggregate-type
            }  // container aggregate-clients
          }  // choice dynamic-profile-type-choice
        }  // grouping dynamic-profile-type
    
        grouping jdhcp-dual-stack-protocol-mstr-type {
          description
            "Select family as protocol master";
          choice addr-fam {
            leaf inet {
              type empty;
              description
                "INET family has protocol master behavior";
            }
            leaf inet6 {
              type empty;
              description
                "INET6 family has protocol master behavior";
            }
          }  // choice addr-fam
        }  // grouping jdhcp-dual-stack-protocol-mstr-type
    
        grouping jdhcp-duplicate-clients-in-subnet-type {
          description
            "Allow duplicate clients in a subnet";
          choice distinguish-with {
            leaf incoming-interface {
              type empty;
              description
                "Allow duplicate clients on different interfaces in a subnet";
            }
            leaf option-82 {
              type empty;
              description
                "Allow duplicate clients using different option-82 options in a subnet";
            }
          }  // choice distinguish-with
        }  // grouping jdhcp-duplicate-clients-in-subnet-type
    
        grouping jdhcp-interface-traceoptions-type {
          description
            "Interface trace options for DHCP";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
    
            leaf match {
              type jt:regular-expression;
              description
                "Regular expression for lines to be logged";
            }
          }  // container file
    
          list flag {
            key "name";
            ordered-by user;
            description
              "Interface trace categories";
            leaf name {
              type enumeration {
                enum "state" {
                  value 0;
                  description
                    "State-transition operations";
                }
                enum "packet" {
                  value 1;
                  description
                    "Packet-decoding operations";
                }
                enum "flow" {
                  value 2;
                  description
                    "Flow-decoding operations";
                }
                enum "packet-option" {
                  value 3;
                  description
                    "DHCP option-decoding operations";
                }
                enum "dhcpv6-state" {
                  value 4;
                  description
                    "State-transition operations for dhcpv6";
                }
                enum "dhcpv6-packet" {
                  value 5;
                  description
                    "Packet-decoding operations for dhcpv6";
                }
                enum "dhcpv6-packet-option" {
                  value 6;
                  description
                    "DHCP option-decoding operations for dhcpv6";
                }
                enum "all" {
                  value 7;
                  description "All operations";
                }
              }
            }
          }  // list flag
        }  // grouping jdhcp-interface-traceoptions-type
    
        grouping jdhcp-traceoptions-level-type {
          description "Trace options for DHCP";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
    
            leaf match {
              type jt:regular-expression;
              description
                "Regular expression for lines to be logged";
            }
          }  // container file
    
          leaf level {
            type enumeration {
              enum "error" {
                value 0;
                description
                  "Match error conditions";
              }
              enum "warning" {
                value 1;
                description
                  "Match warning messages";
              }
              enum "notice" {
                value 2;
                description
                  "Match conditions that should be handled specially";
              }
              enum "info" {
                value 3;
                description
                  "Match informational messages";
              }
              enum "verbose" {
                value 4;
                description
                  "Match verbose messages";
              }
              enum "all" {
                value 5;
                description "Match all levels";
              }
            }
            default "error";
            description
              "Level of debugging output";
          }
    
          list flag {
            key "name";
            ordered-by user;
            description
              "DHCP operations to include in debugging trace";
            leaf name {
              type enumeration {
                enum "state" {
                  value 0;
                  description
                    "State-transition operations";
                }
                enum "packet" {
                  value 1;
                  description
                    "Packet-decoding operations";
                }
                enum "flow" {
                  value 2;
                  description
                    "Flow-decoding operations";
                }
                enum "packet-option" {
                  value 3;
                  description
                    "DHCP option-decoding operations";
                }
                enum "dhcpv6-state" {
                  value 4;
                  description
                    "State-transition operations for dhcpv6";
                }
                enum "dhcpv6-packet" {
                  value 5;
                  description
                    "Packet-decoding operations for dhcpv6";
                }
                enum "dhcpv6-packet-option" {
                  value 6;
                  description
                    "DHCP option-decoding operations for dhcpv6";
                }
                enum "all" {
                  value 7;
                  description "All operations";
                }
                enum "database" {
                  value 8;
                  description
                    "Database operations";
                }
                enum "persistent" {
                  value 9;
                  description
                    "Persitent file operations";
                }
                enum "lockout-db" {
                  value 10;
                  description
                    "Lockout database operations";
                }
                enum "interface" {
                  value 11;
                  description
                    "Interface operations";
                }
                enum "rtsock" {
                  value 12;
                  description
                    "Routing socket operations";
                }
                enum "flow-notify" {
                  value 13;
                  description
                    "Flow notification operations";
                }
                enum "io" {
                  value 14;
                  description "I/O operations";
                }
                enum "ha" {
                  value 15;
                  description
                    "High Availability-related operations";
                }
                enum "ui" {
                  value 16;
                  description
                    "User Interface operations";
                }
                enum "general" {
                  value 17;
                  description
                    "Miscellaneous operations";
                }
                enum "fwd" {
                  value 18;
                  description
                    "Firewall process operations";
                }
                enum "rpd" {
                  value 19;
                  description
                    "Routing Protocol process operations";
                }
                enum "auth" {
                  value 20;
                  description
                    "Authentication operations";
                }
                enum "profile" {
                  value 21;
                  description
                    "Profile operations";
                }
                enum "session-db" {
                  value 22;
                  description
                    "Session database operations";
                }
                enum "performance" {
                  value 23;
                  description
                    "Performance measurement operations";
                }
                enum "statistics" {
                  value 24;
                  description
                    "Baseline statistics operations";
                }
                enum "dhcpv6-io" {
                  value 25;
                  description
                    "I/O operations for dhcpv6";
                }
                enum "dhcpv6-rpd" {
                  value 26;
                  description
                    "Routing Protocol process operations for dhcpv6";
                }
                enum "dhcpv6-session-db" {
                  value 27;
                  description
                    "Session database operations for dhcpv6";
                }
                enum "dhcpv6-general" {
                  value 28;
                  description
                    "Miscellaneous operations for dhcpv6";
                }
                enum "liveness-detection" {
                  value 29;
                  description
                    "Liveness detection operations";
                }
                enum "security-persistence" {
                  value 30;
                  description
                    "Liveness detection operations";
                }
                enum "mclag" {
                  value 31;
                  description "Multichassis LAG";
                }
                enum "ra-guard" {
                  value 32;
                  description
                    "DHCP RA guard option for dhcpv6";
                }
              }
            }
          }  // list flag
        }  // grouping jdhcp-traceoptions-level-type
    
        grouping jdhcp-traceoptions-type {
          description "Trace options for DHCP";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
    
            leaf match {
              type jt:regular-expression;
              description
                "Regular expression for lines to be logged";
            }
          }  // container file
    
          list flag {
            key "name";
            ordered-by user;
            description
              "DHCP operations to include in debugging trace";
            leaf name {
              type enumeration {
                enum "state" {
                  value 0;
                  description
                    "State-transition operations";
                }
                enum "packet" {
                  value 1;
                  description
                    "Packet-decoding operations";
                }
                enum "flow" {
                  value 2;
                  description
                    "Flow-decoding operations";
                }
                enum "packet-option" {
                  value 3;
                  description
                    "DHCP option-decoding operations";
                }
                enum "dhcpv6-state" {
                  value 4;
                  description
                    "State-transition operations for dhcpv6";
                }
                enum "dhcpv6-packet" {
                  value 5;
                  description
                    "Packet-decoding operations for dhcpv6";
                }
                enum "dhcpv6-packet-option" {
                  value 6;
                  description
                    "DHCP option-decoding operations for dhcpv6";
                }
                enum "all" {
                  value 7;
                  description "All operations";
                }
                enum "database" {
                  value 8;
                  description
                    "Database operations";
                }
                enum "persistent" {
                  value 9;
                  description
                    "Persitent file operations";
                }
                enum "lockout-db" {
                  value 10;
                  description
                    "Lockout database operations";
                }
                enum "interface" {
                  value 11;
                  description
                    "Interface operations";
                }
                enum "rtsock" {
                  value 12;
                  description
                    "Routing socket operations";
                }
                enum "flow-notify" {
                  value 13;
                  description
                    "Flow notification operations";
                }
                enum "io" {
                  value 14;
                  description "I/O operations";
                }
                enum "ha" {
                  value 15;
                  description
                    "High Availability-related operations";
                }
                enum "ui" {
                  value 16;
                  description
                    "User Interface operations";
                }
                enum "general" {
                  value 17;
                  description
                    "Miscellaneous operations";
                }
                enum "fwd" {
                  value 18;
                  description
                    "Firewall process operations";
                }
                enum "rpd" {
                  value 19;
                  description
                    "Routing Protocol process operations";
                }
                enum "auth" {
                  value 20;
                  description
                    "Authentication operations";
                }
                enum "profile" {
                  value 21;
                  description
                    "Profile operations";
                }
                enum "session-db" {
                  value 22;
                  description
                    "Session database operations";
                }
                enum "performance" {
                  value 23;
                  description
                    "Performance measurement operations";
                }
                enum "statistics" {
                  value 24;
                  description
                    "Baseline statistics operations";
                }
                enum "dhcpv6-io" {
                  value 25;
                  description
                    "I/O operations for dhcpv6";
                }
                enum "dhcpv6-rpd" {
                  value 26;
                  description
                    "Routing Protocol process operations for dhcpv6";
                }
                enum "dhcpv6-session-db" {
                  value 27;
                  description
                    "Session database operations for dhcpv6";
                }
                enum "dhcpv6-general" {
                  value 28;
                  description
                    "Miscellaneous operations for dhcpv6";
                }
                enum "liveness-detection" {
                  value 29;
                  description
                    "Liveness detection operations";
                }
                enum "security-persistence" {
                  value 30;
                  description
                    "Liveness detection operations";
                }
                enum "mclag" {
                  value 31;
                  description "Multichassis LAG";
                }
                enum "ra-guard" {
                  value 32;
                  description
                    "DHCP RA guard option for dhcpv6";
                }
              }
            }
          }  // list flag
        }  // grouping jdhcp-traceoptions-type
    
        grouping jet_scripts_file_type {
          leaf name {
            type string {
              junos:posix-pattern "!/";
              junos:pattern-message "file name cannot contain a '/'";
              length "1 .. 254";
            }
            description
              "Local filename of the script file";
          }
    
          uses apply-advanced;
    
          container checksum {
            description
              "Checksum of this script";
            uses apply-advanced;
    
            leaf sha-256 {
              type string {
                length "1 .. 254";
              }
              description
                "SHA-256 checksum of this script";
            }
          }  // container checksum
    
          leaf arguments {
            type string;
            description
              "Command line arguments to JET application";
          }
    
          leaf daemonize {
            type empty;
            description
              "Runs application as daemon";
          }
    
          leaf interpreter {
            type enumeration {
              enum "python" {
                value 0;
                description
                  "Runs application using on-box python";
              }
              enum "python3" {
                value 1;
                description
                  "Runs application using on-box python3";
              }
              enum "bash" {
                value 2;
                description
                  "Runs application using on-box bash";
              }
            }
            description
              "Runs application using on-box <python|python3|bash>";
          }
    
          leaf respawn-on-normal-exit {
            type empty;
            description
              "Respawn application on normal exit";
          }
    
          leaf username {
            type string {
              junos:posix-pattern "^[[:alnum:]_]{1,}[.]{0,1}[[:alnum:]_-]{0,}[.]{0,1}[[:alnum:]_-]{0,}$";
              junos:pattern-message "Must contain characters (alphanumerics, underscores or hyphens) beginning with an alphanumeric or an underscore character.";
            }
            description
              "User under whose privileges extension service will execute";
          }
    
          leaf source {
            type string {
              length "1 .. 254";
            }
            description
              "URL of source for this script";
          }
    
          leaf cert-file {
            junos:must "(".. source")";
            junos:must-message "source must be defined";
            type string;
            description
              "Specify the certificate file name";
          }
    
          leaf routing-instance {
            junos:must "("routing-instances $$")";
            junos:must-message "Referenced routing instance must be defined under [edit routing-instances] hierarchy level";
            type string {
              junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
              junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
            }
            description "Routing instance";
          }
    
          container traceoptions {
            description
              "Trace options per application";
            uses script_traceoptions;
          }  // container traceoptions
    
          leaf refresh {
            type empty;
            description
              "Refresh all operation scripts from their source";
          }
    
          leaf refresh-from {
            type string {
              length "1 .. 254";
            }
            description
              "Refresh all operation scripts from a given base URL";
          }
        }  // grouping jet_scripts_file_type
    
        grouping jsscd-static-subscribers-type {
          uses apply-advanced;
    
          container access-profile {
            description
              "Access profile reference";
            uses jsscd-access-profile-type;
          }  // container access-profile
    
          container dynamic-profile {
            description
              "Dynamic profile reference";
            uses jsscd-dynamic-profile-type;
          }  // container dynamic-profile
    
          container service-profile {
            description
              "Dynamic profile to use for default service activation";
            uses jsscd-service-profile-type;
          }  // container service-profile
    
          container authentication {
            description
              "Static Subscriber Client authentication";
            uses jsscd-authentication-type;
          }  // container authentication
    
          list group {
            key "name";
            ordered-by user;
            description
              "Static Subscriber Client group configuration";
            uses jsscd-group-type;
          }  // list group
    
          leaf auto-login {
            type empty;
            description
              "Auto login the operator logged-out static subscribers";
          }
    
          leaf baseline-stats {
            type empty;
            description
              "Baseline the statistics for static subscribers";
          }
    
          list interface {
            key "name";
            description "One or more interfaces";
            leaf name {
              junos:must "((".. subscriber-ip-address" || ".. subscriber-ipv6-address"))";
              junos:must-message "subscriber ip or ipv6 address must be configured";
              type union {
                type jt:interface-unit;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description "Interface name";
            }
    
            uses apply-advanced;
    
            container subscriber-ip-address {
              description
                "Assigned IP address to report externally";
              uses apply-advanced;
    
              leaf address {
                type jt:ipv4addr;
                description "IPv4 address";
              }
            }  // container subscriber-ip-address
    
            container subscriber-ipv6-address {
              description
                "Assigned IPv6 address to report externally";
              uses apply-advanced;
    
              leaf address {
                type jt:ipv6prefix;
                description
                  "IPv6 Address or Prefix";
              }
            }  // container subscriber-ipv6-address
          }  // list interface
        }  // grouping jsscd-static-subscribers-type
    
        grouping jsscd-access-profile-type {
          description
            "Access profile for static subscribers";
          uses apply-advanced;
    
          leaf access-profile-name {
            junos:must "("access profile $$")";
            junos:must-message "referenced access profile must be defined";
            type string;
            description "Profile name";
          }
        }  // grouping jsscd-access-profile-type
    
        grouping jsscd-authentication-type {
          description
            "Static Subscriber Client authentication";
          uses apply-advanced;
    
          leaf password {
            type jt:unreadable;
            description
              "Username password to use";
          }
    
          container username-include {
            description "Add username options";
            uses apply-advanced;
    
            leaf delimiter {
              type string {
                length "1";
              }
              description
                "Change delimiter/separator character";
            }
    
            leaf domain-name {
              type string {
                length "1 .. 64";
              }
              description "Add domain name";
            }
    
            leaf user-prefix {
              type string {
                length "1 .. 64";
              }
              description
                "Add user defined prefix";
            }
    
            leaf interface {
              type empty;
              description
                "Include interface name";
            }
    
            leaf logical-system-name {
              type empty;
              description
                "Include logical system name";
            }
    
            leaf routing-instance-name {
              type empty;
              description
                "Include routing instance name";
            }
    
            leaf vlan-tags {
              type empty;
              description "Include vlan tag(s)";
            }
          }  // container username-include
        }  // grouping jsscd-authentication-type
    
        grouping jsscd-dynamic-profile-type {
          description "Dynamic profile to use";
          uses apply-advanced;
    
          leaf dynamic-profile-name {
            junos:must "("dynamic-profiles $$")";
            junos:must-message "Dynamic profile must be defined";
            type string {
              length "1 .. 80";
            }
            description "Dynamic profile to use";
          }
    
          container aggregate-clients {
            presence "enable aggregate-clients";
            description
              "Aggregate client profiles";
            uses apply-advanced;
    
            choice aggregate-type {
              leaf merge {
                type empty;
                description
                  "Merge the client dynamic profiles";
              }
              leaf replace {
                type empty;
                description
                  "Replace client dynamic profiles";
              }
            }  // choice aggregate-type
          }  // container aggregate-clients
        }  // grouping jsscd-dynamic-profile-type
    
        grouping jsscd-group-type {
          leaf name {
            type string {
              junos:posix-pattern "^[A-Za-z0-9][_0-9A-Za-z-]*$";
              junos:pattern-message "Must be a non-reserved string of 64 characters or less";
              length "1 .. 64";
            }
            description "Group name";
          }
    
          uses apply-advanced;
    
          container service-profile {
            description
              "Dynamic profile to use for default service activation";
            uses jsscd-service-profile-type;
          }  // container service-profile
    
          container access-profile {
            description
              "Access profile reference";
            uses jsscd-access-profile-type;
          }  // container access-profile
    
          container dynamic-profile {
            description
              "Dynamic profile reference";
            uses jsscd-dynamic-profile-type;
          }  // container dynamic-profile
    
          container authentication {
            description
              "Static Subscriber Client authentication";
            uses jsscd-authentication-type;
          }  // container authentication
    
          list interface {
            key "name";
            description "One or more interfaces";
            leaf name {
              type union {
                type jt:interface-unit;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description "Interface name";
            }
    
            leaf upto {
              type union {
                type jt:interface-unit;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description "Interface up to";
            }
    
            leaf exclude {
              type empty;
              description
                "Exclude this interface range";
            }
          }  // list interface
    
          leaf auto-login {
            type empty;
            description
              "Auto login the operator logged-out static subscribers";
          }
        }  // grouping jsscd-group-type
    
        grouping jsscd-service-profile-type {
          description
            "Service profile for static subscribers";
          uses apply-advanced;
    
          leaf service-profile-name {
            junos:must "("dynamic-profiles $$")";
            junos:must-message "referenced service profile must be defined";
            type string {
              length "1 .. 80";
            }
            description "Service profile name";
          }
        }  // grouping jsscd-service-profile-type
    
        grouping license-object {
          description
            "License configuration for this router";
          uses apply-advanced;
    
          container traceoptions {
            description
              "Trace options for licenses";
            uses apply-advanced;
    
            leaf no-remote-trace {
              junos:must "("system tracing")";
              junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
              type empty;
              description
                "Disable remote tracing";
            }
    
            container file {
              description
                "Trace file information";
              leaf filename {
                type string {
                  junos:posix-pattern "![/ %]";
                  junos:pattern-message "Must not contain '/', % or a space";
                  length "1 .. 1024";
                }
                description
                  "Name of file in which to write trace information";
              }
    
              leaf size {
                type string;
                description
                  "Maximum trace file size";
              }
    
              leaf files {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "2 .. 1000";
                  }
                }
                default "3";
                description
                  "Maximum number of trace files";
              }
    
              choice world-readable-choice {
                leaf world-readable {
                  type empty;
                  description
                    "Allow any user to read the log file";
                }
                leaf no-world-readable {
                  type empty;
                  description
                    "Don't allow any user to read the log file";
                }
              }  // choice world-readable-choice
    
              leaf match {
                type jt:regular-expression;
                description
                  "Regular expression for lines to be logged";
              }
            }  // container file
    
            list flag {
              key "name";
              ordered-by user;
              description "Tracing parameters";
              leaf name {
                type enumeration {
                  enum "all" {
                    value 0;
                    description
                      "Trace all operations";
                  }
                  enum "events" {
                    value 1;
                    description
                      "Trace licensing events and their processing";
                  }
                  enum "config" {
                    value 2;
                    description
                      "Trace license configuration processing";
                  }
                }
              }
            }  // list flag
          }  // container traceoptions
    
          container keys {
            presence "enable keys";
            description "License keys";
            uses apply-advanced;
    
            list key {
              key "name";
              ordered-by user;
              description "License key";
              leaf name {
                type string;
                description "License key";
              }
    
              uses apply-advanced;
            }  // list key
          }  // container keys
    
          choice mode-selection {
            leaf standalone-mode {
              type empty;
              description
                "Forcing the node to standalone licensing";
            }
          }  // choice mode-selection
        }  // grouping license-object
    
        grouping location-type {
          uses apply-advanced;
    
          leaf country-code {
            type string;
            description
              "Two-letter country code";
          }
    
          leaf postal-code {
            type string;
            description
              "Zip code or postal code";
          }
    
          leaf npa-nxx {
            type string;
            description
              "First six digits of phone number (area code plus exchange)";
          }
    
          leaf latitude {
            type string;
            description
              "Latitude in degree format";
          }
    
          leaf longitude {
            type string;
            description
              "Longitude in degree format";
          }
    
          leaf altitude {
            type union {
              type int32;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description
              "Feet above (or below) sea level";
          }
    
          leaf lata {
            type string;
            description
              "Local access transport area";
          }
    
          leaf vcoord {
            type string;
            description
              "Bellcore vertical coordinate";
          }
    
          leaf hcoord {
            type string;
            description
              "Bellcore horizontal coordinate";
          }
    
          leaf building {
            type string;
            description "Building name";
          }
    
          leaf floor {
            type union {
              type int32;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description "Floor of the building";
          }
    
          leaf rack {
            type union {
              type uint32;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description "Rack number";
          }
    
          list lcc {
            key "name";
            description
              "Line-card chassis location";
            leaf name {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 3";
                }
              }
              description "LCC number";
            }
    
            uses apply-advanced;
    
            leaf floor {
              type union {
                type int32;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description
                "Floor of the building";
            }
    
            leaf rack {
              type union {
                type uint32;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description "Rack number";
            }
          }  // list lcc
        }  // grouping location-type
    
        grouping login-class-object {
          leaf name {
            type string {
              junos:posix-pattern "^[[:alnum:]_-]+$";
              junos:pattern-message "Must be a string of alphanumericals, dashes or underscores";
            }
            description "Login class name";
          }
    
          uses apply-advanced;
    
          leaf-list allowed-days {
            type enumeration {
              enum "sunday" {
                value 0;
                description "Sunday";
              }
              enum "monday" {
                value 1;
                description "Monday";
              }
              enum "tuesday" {
                value 2;
                description "Tuesday";
              }
              enum "wednesday" {
                value 3;
                description "Wednesday";
              }
              enum "thursday" {
                value 4;
                description "Thursday";
              }
              enum "friday" {
                value 5;
                description "Friday";
              }
              enum "saturday" {
                value 6;
                description "Saturday";
              }
            }
            ordered-by user;
            description
              "Day(s) of week when access is allowed.";
          }
    
          leaf access-start {
            junos:must "(!(".. access-end $$"))";
            junos:must-message "Both access-start and access-end cannot hold the same time values.";
            junos:must "(".. access-end")";
            junos:must-message "access-end time must be configured";
            type jt:time-of-day;
            description
              "Start time for remote access (hh:mm)";
          }
    
          leaf access-end {
            junos:must "(".. access-start")";
            junos:must-message "access-start time must be configured";
            type jt:time-of-day;
            description
              "End time for remote access (hh:mm)";
          }
    
          leaf idle-timeout {
            type union {
              type uint32;
              type string {
                pattern "<.*>|$.*";
              }
            }
            units "minutes";
            description
              "Maximum idle time before logout";
          }
    
          leaf logical-system {
            junos:must "("logical-systems $$")";
            junos:must-message "Referenced logical system must be configured";
            type string;
            description
              "Logical system associated with login";
          }
    
          leaf tenant {
            junos:must "((any "logical-systems <*> tenants $$" || "tenants $$"))";
            junos:must-message "Referenced tenant must be configured";
            type string;
            description
              "Tenant associated with this login";
          }
    
          leaf login-alarms {
            type empty;
            description
              "Display system alarms when logging in";
          }
    
          leaf login-script {
            junos:must "("system scripts op file $$")";
            junos:must-message "Login script must be configured as op-script";
            type string;
            description
              "Execute this login-script when logging in";
          }
    
          leaf login-tip {
            type empty;
            description
              "Display tip when logging in";
          }
    
          leaf no-scp-server {
            type empty;
            description
              "Disable incoming SCP connections";
          }
    
          leaf no-sftp-server {
            type empty;
            description
              "Disable incoming SFTP connections";
          }
    
          leaf-list permissions {
            type string;
            ordered-by user;
          }
    
          leaf allow-commands {
            junos:must "((!(".. allow-commands-regexps") && !(".. deny-commands-regexps")))";
            junos:must-message "'*-commands' and '*-commands-regexps' are mutually exclusive";
            type jt:regular-expression;
            description
              "Regular expression for commands to allow explicitly";
          }
    
          leaf deny-commands {
            junos:must "((!(".. allow-commands-regexps") && !(".. deny-commands-regexps")))";
            junos:must-message "'*-commands' and '*-commands-regexps' are mutually exclusive";
            type jt:regular-expression;
            description
              "Regular expression for commands to deny explicitly";
          }
    
          leaf allow-configuration {
            junos:must "((!(".. allow-configuration-regexps") && !(".. deny-configuration-regexps")))";
            junos:must-message "'*-configuration' and '*-configuration-regexps' are mutually exclusive";
            type jt:regular-expression;
            description
              "Regular expression for configure to allow explicitly";
          }
    
          leaf deny-configuration {
            junos:must "((!(".. allow-configuration-regexps") && !(".. deny-configuration-regexps")))";
            junos:must-message "'*-configuration' and '*-configuration-regexps' are mutually exclusive";
            type jt:regular-expression;
            description
              "Regular expression for configure to deny explicitly";
          }
    
          leaf-list allow-commands-regexps {
            junos:must "((!(".. allow-commands") && !(".. deny-commands")))";
            junos:must-message "'*-commands' and '*-commands-regexps' are mutually exclusive";
            type string;
            ordered-by user;
            description
              "Object path regular expressions to allow commands";
          }
    
          leaf-list deny-commands-regexps {
            junos:must "((!(".. allow-commands") && !(".. deny-commands")))";
            junos:must-message "'*-commands' and '*-commands-regexps' are mutually exclusive";
            type string;
            ordered-by user;
            description
              "Object path regular expressions to deny commands";
          }
    
          leaf-list allow-configuration-regexps {
            junos:must "((!(".. allow-configuration") && !(".. deny-configuration")))";
            junos:must-message "'*-configuration' and '*-configuration-regexps' are mutually exclusive";
            type string;
            ordered-by user;
            description
              "Object path regular expressions to allow";
          }
    
          leaf-list deny-configuration-regexps {
            junos:must "((!(".. allow-configuration") && !(".. deny-configuration")))";
            junos:must-message "'*-configuration' and '*-configuration-regexps' are mutually exclusive";
            type string;
            ordered-by user;
            description
              "Object path regular expressions to deny";
          }
    
          leaf configuration-breadcrumbs {
            type empty;
            description
              "Enable breadcrumbs during display of configuration";
          }
    
          list confirm-commands {
            key "name";
            ordered-by user;
            description
              "List of commands to be confirmed explicitly";
            leaf name {
              type jt:regular-expression;
              description
                "Regular expression for confirm commands";
            }
    
            uses apply-advanced;
    
            leaf message {
              type string;
              description
                "Message to be displayed during confirmation";
            }
          }  // list confirm-commands
    
          choice hidden-commands {
            leaf allow-hidden-commands {
              type empty;
              description
                "Allow all hidden commands to be executed";
            }
            container no-hidden-commands {
              description
                "Deny all hidden commands with exemptions";
              uses apply-advanced;
    
              list except {
                key "name";
                ordered-by user;
                description
                  "Specify the list of hidden command to be exempted";
                leaf name {
                  type string;
                  description
                    "Exempted hidden command(s)";
                }
    
                uses apply-advanced;
              }  // list except
            }  // container no-hidden-commands
          }  // choice hidden-commands
    
          container cli {
            uses apply-advanced;
    
            leaf prompt {
              type string {
                length "1 .. 255";
              }
              description
                "Cli prompt name for this class";
            }
          }  // container cli
    
          leaf security-role {
            type enumeration {
              enum "audit-administrator" {
                value 0;
                description
                  "Audit administrator";
              }
              enum "crypto-administrator" {
                value 1;
                description
                  "Cryptographic administrator";
              }
              enum "ids-administrator" {
                value 2;
                description "IDS administrator";
              }
              enum "security-administrator" {
                value 3;
                description
                  "Security administrator";
              }
            }
            description
              "Common Criteria security role";
          }
        }  // grouping login-class-object
    
        grouping login-user-object {
          leaf name {
            type string {
              junos:posix-pattern "^[[:alnum:]_]{1,}[.]{0,1}[[:alnum:]_-]{0,}[.]{0,1}[[:alnum:]_-]{0,}$";
              junos:pattern-message "Must contain characters (alphanumerics, underscores or hyphens) beginning with an alphanumeric or an underscore character.";
            }
            description "User name (login)";
          }
    
          uses apply-advanced;
    
          leaf full-name {
            type string {
              junos:posix-pattern "![:
    ]";
              junos:pattern-message "Field cannot contain colons or new lines";
            }
            description "Full name";
          }
    
          container cli {
            uses apply-advanced;
    
            leaf prompt {
              type string {
                length "1 .. 255";
              }
              description
                "Cli prompt name for this user";
            }
          }  // container cli
    
          leaf uid {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "100 .. 64000";
              }
            }
            description "User identifier (uid)";
          }
    
          leaf class {
            type string {
              junos:posix-pattern "^[[:alnum:]_-]+$";
              junos:pattern-message "Must be a string of alphanumericals, dashes or underscores";
            }
            description "Login class";
          }
    
          container authentication {
            description "Authentication method";
            uses authentication-object;
          }  // container authentication
        }  // grouping login-user-object
    
        grouping macro-data-type {
          leaf name {
            type string;
            description
              "Keyword part of the keyword-value pair";
          }
    
          leaf value {
            type string;
            description
              "Value part of the keyword-value pair";
          }
        }  // grouping macro-data-type
    
        grouping nameserver-object {
          leaf name {
            type jt:ipaddr;
            description
              "DNS name server address";
          }
    
          leaf routing-instance {
            junos:must "("routing-instances $$")";
            junos:must-message "Referenced routing instance must be defined under [edit routing-instances] hierarchy level";
            type string {
              junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
              junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
            }
            description
              "Routing instance through which server is reachable";
          }
        }  // grouping nameserver-object
    
        grouping override-local-server-type {
          description "DHCP override processing";
          uses apply-advanced;
    
          leaf interface-client-limit {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 500000";
              }
            }
            description
              "Limit the number of clients allowed on an interface";
          }
    
          leaf no-arp {
            junos:must "((!(".. route-suppression destination") && !(".. route-suppression access-internal")))";
            junos:must-message "Cannot specify route-suppression with overrides no-arp";
            type empty;
            status deprecated;
            description
              "Disable DHCP ARP table population";
          }
    
          leaf bootp-support {
            type empty;
            description
              "Allow processing of bootp requests";
          }
    
          container client-discover-match {
            presence
              "enable client-discover-match";
            description
              "Use secondary match criteria for DISCOVER PDU";
            choice match-with {
              leaf option60-and-option82 {
                type empty;
                description
                  "Use option 60 and option 82";
              }
              leaf incoming-interface {
                type empty;
                description
                  "Use incoming interface";
              }
            }  // choice match-with
          }  // container client-discover-match
    
          container delay-offer {
            description
              "Filter options for dhcp-server";
            uses dhcpv4-filter-option;
          }  // container delay-offer
    
          container process-inform {
            presence "enable process-inform";
            description "Process INFORM PDUs";
            uses apply-advanced;
    
            leaf pool {
              type string {
                length "1 .. 64";
              }
              description
                "Pool name for family inet";
            }
          }  // container process-inform
    
          container include-option-82 {
            description
              "Include option-82 in reply packets";
            uses apply-advanced;
    
            leaf nak {
              type empty;
              description
                "Include option-82 in NAK";
            }
    
            leaf forcerenew {
              type empty;
              description
                "Include option-82 in FORCERENEW";
            }
          }  // container include-option-82
    
          leaf delete-binding-on-renegotiation {
            type empty;
            description
              "Delete binding on renegotiation";
          }
    
          leaf allow-no-end-option {
            type empty;
            description
              "Allow packets without end-of-option";
          }
    
          leaf asymmetric-lease-time {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "600 .. 86400";
              }
            }
            units "seconds";
            description
              "Use a reduced lease time for the client. In seconds";
          }
    
          leaf protocol-attributes {
            type string {
              length "1 .. 64";
            }
            description
              "DHCPv4 attributes to use as defined under access protocol-attributes";
          }
    
          leaf dual-stack {
            type string {
              length "1 .. 64";
            }
            description
              "Dual stack group to use";
          }
        }  // grouping override-local-server-type
    
        grouping dhcpv4-filter-option {
          description
            "Generic DHCPv4 filter processing";
          uses apply-advanced;
    
          leaf delay-time {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 30";
              }
            }
            units "seconds";
            default "3";
            description
              "Time delay between discover and offer";
          }
    
          container based-on {
            description "Option number";
            uses apply-advanced;
    
            container option-82 {
              presence "enable option-82";
              description "Option 82";
              uses apply-advanced;
    
              container equals {
                description
                  "Generic option equals";
                uses server-v6-option-ascii-hex;
              }  // container equals
    
              container not-equals {
                description
                  "Generic option not equals";
                uses server-v6-option-ascii-hex;
              }  // container not-equals
    
              container starts-with {
                description
                  "Generic option starts-with";
                uses server-v6-option-ascii-hex;
              }  // container starts-with
            }  // container option-82
    
            container option-60 {
              presence "enable option-60";
              description "Option 60";
              uses apply-advanced;
    
              container equals {
                description
                  "Generic option equals";
                uses server-v6-option-ascii-hex;
              }  // container equals
    
              container not-equals {
                description
                  "Generic option not equals";
                uses server-v6-option-ascii-hex;
              }  // container not-equals
    
              container starts-with {
                description
                  "Generic option starts-with";
                uses server-v6-option-ascii-hex;
              }  // container starts-with
            }  // container option-60
    
            container option-77 {
              presence "enable option-77";
              description "Option 77";
              uses apply-advanced;
    
              container equals {
                description
                  "Generic option equals";
                uses server-v6-option-ascii-hex;
              }  // container equals
    
              container not-equals {
                description
                  "Generic option not equals";
                uses server-v6-option-ascii-hex;
              }  // container not-equals
    
              container starts-with {
                description
                  "Generic option starts-with";
                uses server-v6-option-ascii-hex;
              }  // container starts-with
            }  // container option-77
          }  // container based-on
        }  // grouping dhcpv4-filter-option
    
        grouping peers-type {
          description
            "Commit peers-synchronize type";
          leaf name {
            type string {
              junos:posix-pattern "^[[:alnum:]._-]+$";
              junos:pattern-message "Must be a string of alphanumericals, dashes or underscores";
              length "1 .. 255";
            }
            description
              "Remote peer hostname or ip-address";
          }
    
          uses apply-advanced;
    
          leaf user {
            type string;
            description "User name";
          }
    
          leaf authentication {
            type jt:unreadable;
            description "Authentication string";
          }
    
          leaf routing-instance {
            type string {
              junos:posix-pattern "!^((__.*__)|(.*[ ].*)|(.{129,}))$";
              junos:pattern-message "Must be a string of 128 characters or less with no spaces.";
            }
            description
              "Specific routing instance for connectivity to remote peer";
          }
        }  // grouping peers-type
    
        grouping pmond-traceoptions-type {
          description
            "Trace options for process health monitor";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
    
            leaf match {
              type jt:regular-expression;
              description
                "Regular expression for lines to be logged";
            }
          }  // container file
    
          leaf level {
            type enumeration {
              enum "error" {
                value 0;
                description
                  "Match error conditions";
              }
              enum "warning" {
                value 1;
                description
                  "Match warning messages";
              }
              enum "notice" {
                value 2;
                description
                  "Match conditions that should be handled specially";
              }
              enum "info" {
                value 3;
                description
                  "Match informational messages";
              }
              enum "verbose" {
                value 4;
                description
                  "Match verbose messages";
              }
              enum "all" {
                value 5;
                description "Match all levels";
              }
            }
            default "error";
            description
              "Level of debugging output";
          }
    
          list flag {
            key "name";
            ordered-by user;
            description
              "Area of process health monitor to enable debugging output";
            leaf name {
              type enumeration {
                enum "events" {
                  value 0;
                  description
                    "Trace event conde";
                }
                enum "heartbeat" {
                  value 1;
                  description
                    "Trace heartbeat code";
                }
                enum "process-tracking" {
                  value 2;
                  description
                    "Trace process tracking code";
                }
                enum "ui" {
                  value 3;
                  description
                    "Trace user interface code";
                }
                enum "all" {
                  value 4;
                  description
                    "Trace all areas of code";
                }
              }
            }
          }  // list flag
        }  // grouping pmond-traceoptions-type
    
        grouping proxy-object {
          description
            "License download proxy server.";
          uses apply-advanced;
    
          leaf server {
            type string {
              length "1 .. 256";
            }
            description
              "URL or IP address of the proxy server host";
          }
    
          leaf port {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "0 .. 65535";
              }
            }
            default "3128";
            description "Proxy server port";
          }
    
          leaf username {
            type string {
              junos:posix-pattern "^[[:alnum:]_]{1,}[.]{0,1}[[:alnum:]_-]{0,}[.]{0,1}[[:alnum:]_-]{0,}$";
              junos:pattern-message "Must contain characters (alphanumerics, underscores or hyphens) beginning with an alphanumeric or an underscore character.";
              length "1 .. 256";
            }
            description
              "Username as configured in the proxy server";
          }
    
          leaf password {
            junos:must "(".. username")";
            junos:must-message "User name should be set";
            type jt:unreadable;
            description
              "Password as configured in the proxy server";
          }
        }  // grouping proxy-object
    
        grouping radius-server-object {
          leaf name {
            type jt:hostname;
            description "RADIUS server address";
          }
    
          uses apply-advanced;
    
          leaf routing-instance {
            junos:must "("routing-instances $$")";
            junos:must-message "Referenced routing instance must be defined under [edit routing-instances] hierarchy level";
            type string {
              junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
              junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
            }
            description "Routing instance";
          }
    
          leaf port {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "1 .. 65535";
              }
            }
            default "1812";
            description
              "RADIUS server authentication port number";
          }
    
          leaf preauthentication-port {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "1 .. 65535";
              }
            }
            description
              "RADIUS server preauthentication port number";
          }
    
          leaf accounting-port {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "1 .. 65535";
              }
            }
            default "1813";
            description
              "RADIUS server accounting port number";
          }
    
          leaf dynamic-request-port {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "1 .. 65535";
              }
            }
            default "3799";
            description
              "RADIUS client dynamic request port number";
          }
    
          leaf secret {
            type jt:unreadable;
            description
              "Shared secret with the RADIUS server";
          }
    
          leaf preauthentication-secret {
            type jt:unreadable;
            description
              "Shared secret with the RADIUS server";
          }
    
          leaf timeout {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 1000";
              }
            }
            units "seconds";
            default "3";
            description "Request timeout period";
          }
    
          leaf retry {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 100";
              }
            }
            default "3";
            description "Retry attempts";
          }
    
          leaf accounting-timeout {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 1000";
              }
            }
            units "seconds";
            default "0";
            description
              "Accounting request timeout period";
          }
    
          leaf accounting-retry {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 100";
              }
            }
            default "0";
            description
              "Accounting retry attempts";
          }
    
          leaf max-outstanding-requests {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 2000";
              }
            }
            default "1000";
            description
              "Maximum requests in flight to server";
          }
    
          leaf source-address {
            type jt:ipaddr;
            description
              "Use specified address as source address";
          }
        }  // grouping radius-server-object
    
        grouping reconfigure-trigger-type {
          description "DHCP reconfigure trigger";
          uses apply-advanced;
    
          leaf radius-disconnect {
            type empty;
            description
              "Trigger DHCP reconfigure by radius initiated disconnect";
          }
        }  // grouping reconfigure-trigger-type
    
        grouping reconfigure-type {
          description
            "DHCP reconfigure processing";
          uses apply-advanced;
    
          leaf clear-on-abort {
            type empty;
            description
              "Delete client on reconfiguration abort";
          }
    
          leaf attempts {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 10";
              }
            }
            description
              "Number of reconfigure attempts before aborting";
          }
    
          leaf timeout {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 10";
              }
            }
            description
              "Initial timeout value for retry";
          }
    
          leaf token {
            type string {
              length "1 .. 244";
            }
            description "Reconfigure token";
          }
    
          container trigger {
            description
              "DHCP reconfigure trigger";
            uses reconfigure-trigger-type;
          }  // container trigger
    
          leaf support-option-pd-exclude {
            type empty;
            description
              "Request prefix exclude option in reconfigure message";
          }
        }  // grouping reconfigure-type
    
        grouping res-cleanupd-traceoptions-type {
          description
            "Trace options for resource cleanup process";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
    
            leaf match {
              type jt:regular-expression;
              description
                "Regular expression for lines to be logged";
            }
          }  // container file
    
          leaf level {
            type enumeration {
              enum "error" {
                value 0;
                description
                  "Match error conditions";
              }
              enum "warning" {
                value 1;
                description
                  "Match warning messages";
              }
              enum "notice" {
                value 2;
                description
                  "Match conditions that should be handled specially";
              }
              enum "info" {
                value 3;
                description
                  "Match informational messages";
              }
              enum "verbose" {
                value 4;
                description
                  "Match verbose messages";
              }
              enum "all" {
                value 5;
                description "Match all levels";
              }
            }
            default "error";
            description
              "Level of debugging output";
          }
    
          list flag {
            key "name";
            ordered-by user;
            description
              "Area of resource cleanup process to enable debugging output";
            leaf name {
              type enumeration {
                enum "events" {
                  value 0;
                  description "Trace event code";
                }
                enum "gencfg" {
                  value 1;
                  description
                    "Trace GENCFG blob cleanup code";
                }
                enum "module" {
                  value 2;
                  description
                    "Trace module code";
                }
                enum "sysvsem" {
                  value 3;
                  description
                    "Trace SYSV semaphore cleanup code";
                }
                enum "sysvshm" {
                  value 4;
                  description
                    "Trace SYSV shared memory cleanup code";
                }
                enum "tracking" {
                  value 5;
                  description
                    "Trace process tracking code";
                }
                enum "ui" {
                  value 6;
                  description
                    "Trace user interface code";
                }
                enum "all" {
                  value 7;
                  description
                    "Trace all areas of code";
                }
              }
            }
          }  // list flag
        }  // grouping res-cleanupd-traceoptions-type
    
        grouping resource-monitor-type {
          description
            "Resource monitor configuration";
          uses apply-advanced;
    
          list resource-category {
            key "name";
            ordered-by user;
            description "Resource category";
            leaf name {
              type enumeration {
                enum "jtree" {
                  value 0;
                  description "Category jtree";
                }
              }
            }
    
            uses apply-advanced;
    
            list resource-type {
              key "name";
              ordered-by user;
              description "Resource type";
              leaf name {
                type enumeration {
                  enum "free-pages" {
                    value 0;
                    description
                      "Type free-pages";
                  }
                  enum "free-dwords" {
                    value 1;
                    description
                      "Type free-dwords";
                  }
                  enum "contiguous-pages" {
                    value 2;
                    description
                      " Type contiguous-pages";
                  }
                }
              }
    
              uses apply-advanced;
    
              leaf low-watermark {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 100";
                  }
                }
                description
                  "Low watermark limit percentage";
              }
    
              leaf high-watermark {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 100";
                  }
                }
                description
                  "High watermark limit percentage";
              }
            }  // list resource-type
          }  // list resource-category
    
          container traceoptions {
            description
              "Resource monitor trace options";
            uses resource-monitor-traceoptions-type;
          }  // container traceoptions
    
          leaf no-throttle {
            type empty;
            description
              "Disable throttling of subscribers and services based on resource utilization";
          }
    
          leaf no-load-throttle {
            type empty;
            description
              "Disable throttling of subscribers and services based on PFE load";
          }
    
          leaf no-logging {
            type empty;
            description
              "Disable logging of warning or error messages resource levels exceeded";
          }
    
          leaf high-threshold {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 99";
              }
            }
            units "percentage";
            description
              "High threshold percentage for resource utilization";
          }
    
          leaf high-cos-queue-threshold {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 90";
              }
            }
            units "percentage";
            description
              "High threshold percentage for cos queue utilization per scheduler";
          }
    
          leaf free-heap-memory-watermark {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 99";
              }
            }
            units "percentage";
            description
              "Watermark percentage for ukern heap resource utilization";
          }
    
          leaf free-nh-memory-watermark {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 99";
              }
            }
            units "percentage";
            description
              "Watermark percentage for NH resource utilization";
          }
    
          leaf free-fw-memory-watermark {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 99";
              }
            }
            units "percentage";
            description
              "Watermark percentage for Filter / Firewall resource utilization";
          }
    
          container subscribers-limit {
            description
              "Limit number of subscribers allowed to login";
            uses apply-advanced;
    
            list client-type {
              key "name";
              ordered-by user;
              description
                "Subscriber client type";
              leaf name {
                type enumeration {
                  enum "pppoe" {
                    value 0;
                    description
                      "PPPoE client type";
                  }
                  enum "dhcp" {
                    value 1;
                    description
                      "DHCP client type";
                  }
                  enum "l2tp" {
                    value 2;
                    description
                      "L2TP client type";
                  }
                  enum "any" {
                    value 3;
                    description
                      "Any client type";
                  }
                }
              }
    
              uses apply-advanced;
    
              container chassis {
                description
                  "Max subscriers allowed in chassis";
                uses apply-advanced;
    
                leaf limit {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 1000000";
                    }
                  }
                  description
                    "Number of subscribers allowed";
                }
              }  // container chassis
    
              list fpc {
                key "name";
                description
                  "Limiting subscriber on fpc";
                uses rsmon_fpc_type;
              }  // list fpc
            }  // list client-type
          }  // container subscribers-limit
        }  // grouping resource-monitor-type
    
        grouping resource-monitor-traceoptions-type {
          description
            "Trace options for Resource monitor ";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
    
            leaf match {
              type jt:regular-expression;
              description
                "Regular expression for lines to be logged";
            }
          }  // container file
    
          list flag {
            key "name";
            ordered-by user;
            description
              "Resource monitor operations to include in debugging trace";
            leaf name {
              type enumeration {
                enum "all" {
                  value 0;
                  description "All operations";
                }
              }
            }
          }  // list flag
        }  // grouping resource-monitor-traceoptions-type
    
        grouping resources-type {
          uses apply-advanced;
    
          container cpu {
            uses apply-advanced;
    
            leaf priority {
              type union {
                type int32;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description
                "Highest priority (nice level) process can run at";
            }
    
            leaf time {
              type union {
                type uint64;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description
                "Maximum amount of CPU time that can be accumulated";
            }
          }  // container cpu
    
          container memory {
            uses apply-advanced;
    
            leaf data-size {
              type string;
              units "mbytes";
              description
                "Maximum size of the data segment";
            }
    
            leaf locked-in {
              type string;
              units "mbytes";
              description
                "Maximum bytes that can be locked into memory";
            }
    
            leaf resident-set-size {
              type string;
              units "mbytes";
              description
                "Maximum amount of private physical memory at any given moment";
            }
    
            leaf socket-buffers {
              type string;
              units "mbytes";
              description
                "Maximum amount of physical memory that may be dedicated to socket buffers";
            }
    
            leaf stack-size {
              type string;
              units "mbytes";
              description
                "Maximum size of the stack segment";
            }
          }  // container memory
    
          container file {
            uses apply-advanced;
    
            leaf size {
              type string;
              units "mbytes";
              description
                "Maximum size of a file that can be created";
            }
    
            leaf open {
              type union {
                type uint64;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description
                "Maximum number of simultaneous open files";
            }
    
            leaf core-size {
              type string;
              units "mbytes";
              description
                "Maximum size of a core file that can be created";
            }
          }  // container file
        }  // grouping resources-type
    
        grouping rsmon_fpc_type {
          leaf name {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 512";
              }
            }
            description "FPC slot number";
          }
    
          uses apply-advanced;
    
          list pic {
            key "name";
            description
              "Limiting subscriber on fpc";
            uses rsmon_pic_type;
          }  // list pic
    
          leaf limit {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 256000";
              }
            }
            description
              "Number of subscribers allowed";
          }
        }  // grouping rsmon_fpc_type
    
        grouping rsmon_pic_type {
          leaf name {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 5";
              }
            }
            description "PIC slot number";
          }
    
          uses apply-advanced;
    
          list port {
            key "name";
            description
              "Limiting subscriber on port";
            uses rsmon_port_type;
          }  // list port
    
          leaf limit {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 256000";
              }
            }
            description
              "Number of subscribers allowed";
          }
        }  // grouping rsmon_pic_type
    
        grouping rsmon_port_type {
          leaf name {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 23";
              }
            }
            description "Port number";
          }
    
          uses apply-advanced;
    
          leaf limit {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 256000";
              }
            }
            description
              "Number of subscribers allowed";
          }
        }  // grouping rsmon_port_type
    
        grouping sbc_traceoptions {
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
    
            leaf match {
              type jt:regular-expression;
              description
                "Regular expression for lines to be logged";
            }
          }  // container file
    
          container flag {
            presence "enable flag";
            description "Tracing parameters";
            uses apply-advanced;
    
            leaf configuration {
              type enumeration {
                enum "trace" {
                  value 0;
                  description
                    "Trace functions entering and exiting";
                }
                enum "debug" {
                  value 1;
                  description
                    "Trace code flow, branching, positive style guide check";
                }
                enum "info" {
                  value 2;
                  description
                    "Summary logs for normal operations";
                }
                enum "warning" {
                  value 3;
                  description
                    "Failure-recovery or Failure of an external entity";
                }
                enum "error" {
                  value 4;
                  description
                    "Failure with short-term affect";
                }
              }
              default "error";
              description
                "Trace configuration events";
            }
    
            leaf ipc {
              type enumeration {
                enum "trace" {
                  value 0;
                  description
                    "Trace functions entering and exiting";
                }
                enum "debug" {
                  value 1;
                  description
                    "Trace code flow, branching, positive style guide check";
                }
                enum "info" {
                  value 2;
                  description
                    "Summary logs for normal operations";
                }
                enum "warning" {
                  value 3;
                  description
                    "Failure-recovery or Failure of an external entity";
                }
                enum "error" {
                  value 4;
                  description
                    "Failure with short-term affect";
                }
              }
              default "error";
              description "Trace IPC events";
            }
    
            leaf device-monitor {
              type enumeration {
                enum "trace" {
                  value 0;
                  description
                    "Trace functions entering and exiting";
                }
                enum "debug" {
                  value 1;
                  description
                    "Trace code flow, branching, positive style guide check";
                }
                enum "info" {
                  value 2;
                  description
                    "Summary logs for normal operations";
                }
                enum "warning" {
                  value 3;
                  description
                    "Failure-recovery or Failure of an external entity";
                }
                enum "error" {
                  value 4;
                  description
                    "Failure with short-term affect";
                }
              }
              default "error";
              description
                "Trace device monitor events";
            }
    
            leaf ui {
              type enumeration {
                enum "trace" {
                  value 0;
                  description
                    "Trace functions entering and exiting";
                }
                enum "debug" {
                  value 1;
                  description
                    "Trace code flow, branching, positive style guide check";
                }
                enum "info" {
                  value 2;
                  description
                    "Summary logs for normal operations";
                }
                enum "warning" {
                  value 3;
                  description
                    "Failure-recovery or Failure of an external entity";
                }
                enum "error" {
                  value 4;
                  description
                    "Failure with short-term affect";
                }
              }
              default "error";
              description "Trace ui events";
            }
    
            leaf common {
              type enumeration {
                enum "trace" {
                  value 0;
                  description
                    "Trace functions entering and exiting";
                }
                enum "debug" {
                  value 1;
                  description
                    "Trace code flow, branching, positive style guide check";
                }
                enum "info" {
                  value 2;
                  description
                    "Summary logs for normal operations";
                }
                enum "warning" {
                  value 3;
                  description
                    "Failure-recovery or Failure of an external entity";
                }
                enum "error" {
                  value 4;
                  description
                    "Failure with short-term affect";
                }
              }
              default "error";
              description "Trace common events";
            }
    
            leaf memory-pool {
              type enumeration {
                enum "trace" {
                  value 0;
                  description
                    "Trace functions entering and exiting";
                }
                enum "debug" {
                  value 1;
                  description
                    "Trace code flow, branching, positive style guide check";
                }
                enum "info" {
                  value 2;
                  description
                    "Summary logs for normal operations";
                }
                enum "warning" {
                  value 3;
                  description
                    "Failure-recovery or Failure of an external entity";
                }
                enum "error" {
                  value 4;
                  description
                    "Failure with short-term affect";
                }
              }
              default "error";
              description
                "Trace memory-pool events";
            }
    
            leaf packet-capture {
              type enumeration {
                enum "trace" {
                  value 0;
                  description
                    "Trace functions entering and exiting";
                }
                enum "debug" {
                  value 1;
                  description
                    "Trace code flow, branching, positive style guide check";
                }
                enum "info" {
                  value 2;
                  description
                    "Summary logs for normal operations";
                }
                enum "warning" {
                  value 3;
                  description
                    "Failure-recovery or Failure of an external entity";
                }
                enum "error" {
                  value 4;
                  description
                    "Failure with short-term affect";
                }
              }
              default "error";
              description
                "Trace packet capture events";
            }
    
            leaf all {
              type enumeration {
                enum "trace" {
                  value 0;
                  description
                    "Trace functions entering and exiting";
                }
                enum "debug" {
                  value 1;
                  description
                    "Trace code flow, branching, positive style guide check";
                }
                enum "info" {
                  value 2;
                  description
                    "Summary logs for normal operations";
                }
                enum "warning" {
                  value 3;
                  description
                    "Failure-recovery or Failure of an external entity";
                }
                enum "error" {
                  value 4;
                  description
                    "Failure with short-term affect";
                }
              }
              default "error";
              description
                "Minimal trace level for all components";
            }
          }  // container flag
        }  // grouping sbc_traceoptions
    
        grouping script_traceoptions {
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
          }  // container file
    
          list flag {
            key "name";
            description "Tracing parameters";
            leaf name {
              type enumeration {
                enum "all" {
                  value 0;
                  description
                    "Trace all operations";
                }
                enum "events" {
                  value 1;
                  description
                    "Trace important events";
                }
                enum "input" {
                  value 2;
                  description
                    "Trace script input data";
                }
                enum "offline" {
                  value 3;
                  description
                    "Generate data for offline development";
                }
                enum "output" {
                  value 4;
                  description
                    "Trace script output data";
                }
                enum "rpc" {
                  value 5;
                  description
                    "Trace script RPCs";
                }
                enum "xslt" {
                  value 6;
                  description
                    "Trace the XSLT library";
                }
              }
            }
          }  // list flag
        }  // grouping script_traceoptions
    
        grouping scripts_type {
          uses apply-advanced;
    
          container commit {
            description
              "Commit-time scripting mechanism";
            uses apply-advanced;
    
            leaf allow-transients {
              type empty;
              description
                "Allow loading of transient configuration changes";
            }
    
            container traceoptions {
              description
                "Trace options for commit scripts";
              uses script_traceoptions;
            }  // container traceoptions
    
            leaf refresh {
              type empty;
              description
                "Refresh all operation scripts from their source";
            }
    
            leaf refresh-from {
              type string {
                length "1 .. 254";
              }
              description
                "Refresh all operation scripts from a given base URL";
            }
    
            leaf max-datasize {
              type string;
              units "bytes";
              description
                "Maximum data segment size for scripts execution";
            }
    
            leaf direct-access {
              type empty;
              description
                "Access the configuration directly from database";
            }
    
            container dampen {
              presence "enable dampen";
              description
                "Dampen execution of commit scripts";
              uses apply-advanced;
    
              container dampen-options {
                description
                  "Dampen options for commit scripts";
                uses apply-advanced;
    
                leaf cpu-factor {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "CPU factor at which to pause";
                }
    
                leaf line-interval {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 4294967295";
                    }
                  }
                  description
                    "Line interval at which to pause";
                }
    
                leaf time-interval {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 4294967295";
                    }
                  }
                  units "microseconds";
                  description "Time to pause";
                }
              }  // container dampen-options
            }  // container dampen
    
            list file {
              key "name";
              ordered-by user;
              description "Commit script file";
              uses commit_scripts_file_type;
            }  // list file
          }  // container commit
    
          container op {
            description "Operations scripting";
            uses apply-advanced;
    
            leaf refresh {
              type empty;
              description
                "Refresh all operation scripts from their source";
            }
    
            leaf refresh-from {
              type string {
                length "1 .. 254";
              }
              description
                "Refresh all operation scripts from a given base URL";
            }
    
            container traceoptions {
              description
                "Trace options for operation scripts";
              uses script_traceoptions;
            }  // container traceoptions
    
            list file {
              key "name";
              description
                "Configuration for each operation script";
              uses op_scripts_file_type;
            }  // list file
    
            leaf no-allow-url {
              type empty;
              description
                "Do not allow the remote execution of op scripts";
            }
    
            leaf allow-url-for-python {
              type empty;
              description
                "Allow the remote execution of Python op scripts";
            }
    
            leaf max-datasize {
              type string;
              units "bytes";
              description
                "Maximum data segment size for scripts execution";
            }
    
            container dampen {
              presence "enable dampen";
              description
                "Dampen execution of op scripts";
              uses apply-advanced;
    
              container dampen-options {
                description
                  "Dampen options for op scripts";
                uses apply-advanced;
    
                leaf cpu-factor {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "CPU factor at which to pause";
                }
    
                leaf line-interval {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 4294967295";
                    }
                  }
                  description
                    "Line interval at which to pause";
                }
    
                leaf time-interval {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 4294967295";
                    }
                  }
                  units "microseconds";
                  description "Time to pause";
                }
              }  // container dampen-options
            }  // container dampen
          }  // container op
    
          container translation {
            description "Translation scripts";
            uses apply-advanced;
    
            leaf max-datasize {
              type string;
              units "bytes";
              description
                "Maximum data segment size for translation scripts execution";
            }
          }  // container translation
    
          leaf load-scripts-from-flash {
            type empty;
            description
              "Load scripts from flash";
          }
    
          leaf language {
            type enumeration {
              enum "python" {
                value 0;
                description
                  "Allow Python 2.x scripts on-box (Python2.x support will be deprecated in 21.1)";
              }
              enum "python3" {
                value 1;
                description
                  "Allow Python 3.x scripts on-box";
              }
            }
            description
              "Allow/Disallow Python scripts on-box";
          }
    
          leaf synchronize {
            type empty;
            description
              "Push all scripts to other RE on commit synchronize";
          }
    
          container snmp {
            description "Snmp scripts";
            uses apply-advanced;
    
            leaf refresh {
              type empty;
              description
                "Refresh all snmp scripts from their source";
            }
    
            leaf refresh-from {
              type string {
                length "1 .. 254";
              }
              description
                "Refresh all snmp scripts from a given base URL";
            }
    
            list file {
              key "name";
              description
                "Configuration for each snmp script";
              uses snmp_scripts_file_type;
            }  // list file
    
            container traceoptions {
              description
                "Trace options for snmp scripts";
              uses script_traceoptions;
            }  // container traceoptions
    
            leaf max-datasize {
              type string;
              units "bytes";
              description
                "Maximum data segment size for scripts execution";
            }
          }  // container snmp
        }  // grouping scripts_type
    
        grouping commit_scripts_file_type {
          leaf name {
            type string {
              junos:posix-pattern "!/";
              junos:pattern-message "File name cannot contain a '/'";
              length "1 .. 254";
            }
            description
              "Local filename of the script file";
          }
    
          uses apply-advanced;
    
          leaf optional {
            type empty;
            description
              "Allow commit to succeed if the script is missing";
          }
    
          leaf source {
            type string {
              length "1 .. 254";
            }
            description
              "URL of source for this script";
          }
    
          leaf cert-file {
            junos:must "(".. source")";
            junos:must-message "source must be defined";
            type string;
            description
              "Specify the certificate file name";
          }
    
          leaf routing-instance {
            junos:must "("routing-instances $$")";
            junos:must-message "Referenced routing instance must be defined under [edit routing-instances] hierarchy level";
            type string {
              junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
              junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
            }
            description "Routing instance";
          }
    
          leaf refresh {
            type empty;
            description
              "Refresh all operation scripts from their source";
          }
    
          leaf refresh-from {
            type string {
              length "1 .. 254";
            }
            description
              "Refresh all operation scripts from a given base URL";
          }
    
          container checksum {
            description
              "Checksum of this script";
            uses apply-advanced;
    
            leaf sha-256 {
              type string {
                length "1 .. 254";
              }
              description
                "SHA-256 checksum of this script";
            }
          }  // container checksum
        }  // grouping commit_scripts_file_type
    
        grouping op_scripts_file_type {
          leaf name {
            type string {
              junos:posix-pattern "!/";
              junos:pattern-message "file name cannot contain a '/'";
              length "1 .. 254";
            }
            description
              "Local filename of the script file";
          }
    
          uses apply-advanced;
    
          leaf command {
            type string {
              junos:posix-pattern "!/";
              junos:pattern-message "command name cannot contain a '/'";
              length "1 .. 254";
            }
            description
              "Command alias for the script file";
          }
    
          container dampen {
            presence "enable dampen";
            description
              "Dampen execution of the script";
            uses apply-advanced;
    
            container dampen-options {
              description
                "Dampen options for the script";
              uses apply-advanced;
    
              leaf cpu-factor {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 100";
                  }
                }
                description
                  "CPU factor at which to pause";
              }
    
              leaf line-interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 4294967295";
                  }
                }
                description
                  "Line interval at which to pause";
              }
    
              leaf time-interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 4294967295";
                  }
                }
                units "microseconds";
                description "Time to pause";
              }
            }  // container dampen-options
          }  // container dampen
    
          leaf description {
            type string {
              length "1 .. 254";
            }
            description
              "Description of the script";
          }
    
          leaf source {
            type string {
              length "1 .. 254";
            }
            description
              "URL of source for this script";
          }
    
          leaf cert-file {
            junos:must "(".. source")";
            junos:must-message "source must be defined";
            type string;
            description
              "Specify the certificate file name";
          }
    
          leaf routing-instance {
            junos:must "("routing-instances $$")";
            junos:must-message "Referenced routing instance must be defined under [edit routing-instances] hierarchy level";
            type string {
              junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
              junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
            }
            description "Routing instance";
          }
    
          leaf allow-commands {
            type jt:regular-expression;
            description
              "Regular expression for commands to allow explicitly";
          }
    
          leaf refresh {
            type empty;
            description
              "Refresh all operation scripts from their source";
          }
    
          leaf refresh-from {
            type string {
              length "1 .. 254";
            }
            description
              "Refresh all operation scripts from a given base URL";
          }
    
          list arguments {
            key "name";
            description
              "Command line argument to the script";
            leaf name {
              type string {
                length "1 .. 254";
              }
              description "Name of the argument";
            }
    
            uses apply-advanced;
    
            leaf description {
              type string {
                length "1 .. 254";
              }
              description
                "Description of the argument";
            }
          }  // list arguments
    
          container checksum {
            description
              "Checksum of this script";
            uses apply-advanced;
    
            leaf sha-256 {
              type string {
                length "1 .. 254";
              }
              description
                "SHA-256 checksum of this script";
            }
          }  // container checksum
        }  // grouping op_scripts_file_type
    
        grouping sdk-mgmtd-traceoptions-type {
          description
            "Trace options for App-engine management daemon";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
    
            leaf match {
              type jt:regular-expression;
              description
                "Regular expression for lines to be logged";
            }
          }  // container file
    
          leaf level {
            type enumeration {
              enum "error" {
                value 0;
                description
                  "Match error conditions";
              }
              enum "warning" {
                value 1;
                description
                  "Match warning messages";
              }
              enum "notice" {
                value 2;
                description
                  "Match conditions that should be handled specially";
              }
              enum "info" {
                value 3;
                description
                  "Match informational messages";
              }
              enum "verbose" {
                value 4;
                description
                  "Match verbose messages";
              }
              enum "all" {
                value 5;
                description "Match all levels";
              }
            }
            default "error";
            description
              "Level of debugging output";
          }
    
          list flag {
            key "name";
            ordered-by user;
            description
              "Area of daemon to enable debugging output";
            leaf name {
              type enumeration {
                enum "service-infrastructure" {
                  value 0;
                  description
                    "Trace service infrastructure code";
                }
                enum "routing-instance" {
                  value 1;
                  description
                    "Trace routing instance functionality code";
                }
                enum "config-handling" {
                  value 2;
                  description
                    "Trace configuration command handling functionality code";
                }
                enum "command-handling" {
                  value 3;
                  description
                    "Trace operational command handling functionality code";
                }
                enum "cli-show-commands" {
                  value 4;
                  description
                    "Trace show commands for JDAF message statistics";
                }
                enum "all" {
                  value 5;
                  description
                    "Trace all areas of App-engine management";
                }
              }
            }
          }  // list flag
        }  // grouping sdk-mgmtd-traceoptions-type
    
        grouping server-active-leasequery-type {
          description "Allow active leasequery";
          uses apply-advanced;
    
          leaf timeout {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "10 .. 3600";
              }
            }
            units "seconds";
            default "120";
            description
              "Read/write timeout in seconds";
          }
    
          leaf idle-timeout {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "10 .. 3600";
              }
            }
            units "seconds";
            default "60";
            description
              "Idle-timeout in seconds";
          }
        }  // grouping server-active-leasequery-type
    
        grouping server-bulk-leasequery-type {
          description "Allow bulk leasequery";
          uses apply-advanced;
    
          leaf max-connections {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 10";
              }
            }
            default "3";
            description
              "Max TCP connections allowed at a time";
          }
    
          leaf timeout {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 1000";
              }
            }
            units "seconds";
            default "120";
            description
              "Timeout for blocked connection";
          }
    
          leaf max-empty-replies {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 100";
              }
            }
            units "seconds";
            default "5";
            description
              "Maximum number of empty replies for a connection";
          }
    
          leaf restricted-requestor {
            type empty;
            description
              "Allow bulk leasequery only from restricted requestors";
          }
        }  // grouping server-bulk-leasequery-type
    
        grouping server-leasequery-type {
          description "Allow leasequery";
          uses apply-advanced;
    
          leaf restricted-requestor {
            type empty;
            description
              "Allow leasequery only from restricted requestors";
          }
        }  // grouping server-leasequery-type
    
        grouping server-v6-option-ascii-hex {
          uses apply-advanced;
    
          list ascii {
            key "name";
            description "ASCII string";
            leaf name {
              type string {
                length "1 .. 256";
              }
              description "ASCII string";
            }
    
            uses apply-advanced;
          }  // list ascii
    
          list hexadecimal {
            key "name";
            description "Hexadecimal string";
            leaf name {
              type string {
                junos:posix-pattern "^[[:xdigit:]]+$";
                junos:pattern-message "Must be hexadecimal digits (0-9, a-f, A-F)";
                length "1 .. 512";
              }
              description "Hexadecimal string";
            }
    
            uses apply-advanced;
          }  // list hexadecimal
        }  // grouping server-v6-option-ascii-hex
    
        grouping smid-type {
          description
            "Subscriber management configuration";
          uses apply-advanced;
    
          container traceoptions {
            description
              "Subscriber management trace options";
            uses smid-traceoptions-type;
          }  // container traceoptions
    
          container maintain-subscriber {
            description
              "Options to maintain subscriber";
            uses smid-maintain-subscriber-type;
          }  // container maintain-subscriber
    
          leaf gres-route-flush-delay {
            type empty;
            description
              "Delay flushing routes after RE switchover";
          }
    
          container enforce-strict-scale-limit-license {
            presence
              "enable enforce-strict-scale-limit-license";
            description
              "Options to enforce strict scale limit license";
          }  // container enforce-strict-scale-limit-license
    
          container overrides {
            description
              "Subscriber management configuration";
            uses apply-advanced;
    
            leaf no-unsolicited-ra {
              type empty;
              description
                "Disable all unsolicited router advertisement packets";
            }
    
            container interfaces {
              presence "enable interfaces";
              uses apply-advanced;
    
              container family {
                presence "enable family";
                uses apply-advanced;
    
                container inet6 {
                  presence "enable inet6";
                  uses apply-advanced;
    
                  leaf layer2-liveness-detection {
                    type empty;
                    description
                      "Enabled ipv6-nud liveness detection";
                  }
                }  // container inet6
    
                container inet {
                  presence "enable inet";
                  uses apply-advanced;
    
                  leaf layer2-liveness-detection {
                    type empty;
                    description
                      "Enabled arp-ping liveness detection";
                  }
    
                  leaf receive-gratuitous-arp {
                    type empty;
                    description
                      "Enable receieve gratuitous arp packet processing";
                  }
    
                  leaf ipoe-dynamic-arp-enable {
                    type empty;
                    description
                      "Enable IPOE dynamic ARP";
                  }
                }  // container inet
              }  // container family
            }  // container interfaces
    
            container shmlog {
              description
                "Subscriber management shmlog configuration";
              uses apply-advanced;
    
              leaf disable {
                type empty;
                description "Disable shmlogs";
              }
    
              container filtering {
                description
                  "Subscriber management shmlog filtering";
                uses apply-advanced;
    
                leaf enable {
                  type empty;
                  description
                    "Enable shmlog filtering";
                }
              }  // container filtering
    
              container file {
                presence "enable file";
                leaf filename {
                  type string {
                    junos:posix-pattern "![/ %]";
                    junos:pattern-message "Must not contain '/', % or a space";
                    length "1 .. 1024";
                  }
                  description
                    "Name of file in which to write trace information";
                }
    
                leaf size {
                  type string;
                  description
                    "Maximum file size";
                }
    
                leaf files {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "2 .. 1000";
                    }
                  }
                  default "3";
                  description
                    "Maximum number of  files";
                }
              }  // container file
    
              list log-name {
                key "name";
                ordered-by user;
                description
                  "The log name(s) to override";
                leaf name {
                  type string;
                }
    
                uses apply-advanced;
    
                choice verbosity {
                  leaf none {
                    type empty;
                    description
                      "Shmlog verbosity null";
                  }
                  leaf terse {
                    type empty;
                    description
                      "Shmlog verbosity terse";
                  }
                  leaf brief {
                    type empty;
                    description
                      "Shmlog verbosity brief";
                  }
                  leaf detail {
                    type empty;
                    description
                      "Shmlog verbosity detail";
                  }
                  leaf extensive {
                    type empty;
                    description
                      "Shmlog verbosity extensive";
                  }
                }  // choice verbosity
    
                choice file-enable {
                  leaf file-logging {
                    type empty;
                    description
                      "Enable file write for the log(s)";
                  }
                  leaf no-file-logging {
                    type empty;
                    description
                      "Disable file write for the log(s)";
                  }
                }  // choice file-enable
              }  // list log-name
    
              list log-type {
                key "name";
                ordered-by user;
                description
                  "The log type to override";
                leaf name {
                  type enumeration {
                    enum "debug" {
                      value 0;
                      description
                        "The severity debug";
                    }
                    enum "info" {
                      value 1;
                      description
                        "The severity info";
                    }
                    enum "notice" {
                      value 2;
                      description
                        "The severity notice and more severe";
                    }
                  }
                }
    
                uses apply-advanced;
    
                choice verbosity {
                  leaf none {
                    type empty;
                    description
                      "Shmlog verbosity null";
                  }
                  leaf terse {
                    type empty;
                    description
                      "Shmlog verbosity terse";
                  }
                  leaf brief {
                    type empty;
                    description
                      "Shmlog verbosity brief";
                  }
                  leaf detail {
                    type empty;
                    description
                      "Shmlog verbosity detail";
                  }
                  leaf extensive {
                    type empty;
                    description
                      "Shmlog verbosity extensive";
                  }
                }  // choice verbosity
    
                choice file-enable {
                  leaf file-logging {
                    type empty;
                    description
                      "Enable file write for the log(s)";
                  }
                  leaf no-file-logging {
                    type empty;
                    description
                      "Disable file write for the log(s)";
                  }
                }  // choice file-enable
              }  // list log-type
            }  // container shmlog
          }  // container overrides
    
          container enable {
            junos:must "("chassis network-services enhanced-ip")";
            junos:must-message "system services subscriber-management enable is allowed only when enhanced-ip is configured";
            presence "enable enable";
            description
              "Enable subscriber management features";
            uses apply-advanced;
          }  // container enable
    
          container mode {
            junos:must "("system services subscriber-management enable")";
            junos:must-message "system services subscriber-management mode is allowed only when enhanced subscriber management is enabled";
            description
              "Configure the operational role of this system (control-plane or user-plane)";
            uses apply-advanced;
    
            choice modetype {
              container control-plane {
                presence "enable control-plane";
                description
                  "Control-plane mode (DBNG)";
                uses apply-advanced;
    
                leaf control-plane-name {
                  type string {
                    length "1 .. 12";
                  }
                  description
                    "Control-plane name";
                }
    
                container transport {
                  description
                    "Control plane transport address information";
                  uses apply-advanced;
    
                  leaf inet {
                    type jt:ipv4addr;
                    description
                      "The IPv4 address on which to listen for  UP association";
                  }
    
                  leaf inet6 {
                    type jt:ipv6addr;
                    description
                      "The IPv6 address on which to listen for UP associations";
                  }
    
                  leaf port {
                    type union {
                      type uint16;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    default "8805";
                    description
                      "The port on which to listen for UP associations";
                  }
                }  // container transport
    
                list user-plane {
                  key "name";
                  max-elements 16;
                  ordered-by user;
                  description
                    "User-plane definition";
                  leaf name {
                    type string {
                      length "1 .. 12";
                    }
                    description
                      "User-plane name";
                  }
    
                  uses apply-advanced;
    
                  choice familytype {
                    leaf inet {
                      junos:must "("system services subscriber-management mode control-plane transport inet")";
                      junos:must-message "IPv4 enabled UPs can be configured only if CP is configured with an IPv4 address";
                      type jt:ipv4addr;
                      description
                        "The IPv4 address";
                    }
                    leaf inet6 {
                      junos:must "("system services subscriber-management mode control-plane transport inet6")";
                      junos:must-message "IPv6 enabled UPs can be configured only if CP is configured with an IPv6 address";
                      type jt:ipv6addr;
                      description
                        "The IPv6 address";
                    }
                  }  // choice familytype
                }  // list user-plane
    
                container pfcp {
                  uses apply-advanced;
    
                  leaf retransmission-timer {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type int32 {
                        range "3 .. 90";
                      }
                    }
                    units "seconds";
                    default "3";
                    description
                      "The retransmission interval after no response from peer";
                  }
    
                  leaf retries {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type int32 {
                        range "3 .. 10";
                      }
                    }
                    default "3";
                    description
                      "The number of retransmission attempts";
                  }
    
                  leaf heartbeat-interval {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type int32 {
                        range "0 .. 600";
                      }
                    }
                    units "seconds";
                    default "60";
                    description
                      "The time interval between successive heartbeat requests";
                  }
                }  // container pfcp
    
                container external-resources {
                  presence
                    "enable external-resources";
                  description
                    "External resources";
                  uses apply-advanced;
    
                  list database-server {
                    key "name";
                    ordered-by user;
                    description
                      "Database server configuration";
                    leaf name {
                      type string {
                        length "1 .. 64";
                      }
                      description
                        "Database server name";
                    }
    
                    uses apply-advanced;
    
                    choice familytype {
                      leaf inet {
                        type jt:ipv4addr;
                        description
                          "The IPv4 address";
                      }
                    }  // choice familytype
    
                    leaf port {
                      type union {
                        type uint16;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "The port number";
                    }
                  }  // list database-server
                }  // container external-resources
              }  // container control-plane
              container user-plane {
                presence "enable user-plane";
                description
                  "User-plane mode (DBNG)";
                uses apply-advanced;
    
                leaf user-plane-name {
                  type string {
                    length "1 .. 12";
                  }
                  description "User-plane name";
                }
    
                container transport {
                  presence "enable transport";
                  uses apply-advanced;
    
                  choice familytype {
                    leaf inet {
                      type jt:ipv4addr;
                      description
                        "Use IPv4 addressing";
                    }
                    leaf inet6 {
                      type jt:ipv6addr;
                      description
                        "Use IPv6 addressing";
                    }
                  }  // choice familytype
                }  // container transport
    
                container pfcp {
                  uses apply-advanced;
    
                  leaf retransmission-timer {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type int32 {
                        range "3 .. 90";
                      }
                    }
                    units "seconds";
                    default "3";
                    description
                      "The time interval between message re-transmissions";
                  }
    
                  leaf retries {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type int32 {
                        range "3 .. 10";
                      }
                    }
                    default "3";
                    description
                      "The number of retransmission attempts";
                  }
    
                  leaf heartbeat-interval {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type int32 {
                        range "0 .. 600";
                      }
                    }
                    units "seconds";
                    default "60";
                    description
                      "The time interval between successive heartbeat requests";
                  }
                }  // container pfcp
    
                container control-plane {
                  presence
                    "enable control-plane";
                  uses apply-advanced;
    
                  leaf control-plane-name {
                    type string {
                      length "1 .. 12";
                    }
                    description
                      "Control-plane name";
                  }
    
                  container transport {
                    presence "enable transport";
                    uses apply-advanced;
    
                    choice familyType {
                      leaf inet {
                        type jt:ipv4addr;
                        description
                          "The IPv4 address";
                      }
                      leaf inet6 {
                        junos:must "("system services subscriber-management mode user-plane transport inet6")";
                        junos:must-message "Cannot configure an IPv6 control plane without IPv6 user-plane";
                        type jt:ipv6addr;
                        description
                          "The IPv6 address";
                      }
                    }  // choice familyType
    
                    leaf port {
                      type union {
                        type uint16;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      default "8805";
                      description
                        "The port number";
                    }
                  }  // container transport
                }  // container control-plane
    
                container selection-function {
                  description
                    "User-plane selection function";
                  uses apply-advanced;
    
                  list cluster {
                    key "name";
                    ordered-by user;
                    description
                      "Cluster for user-plane";
                    leaf name {
                      type string;
                      description "Cluster name";
                    }
    
                    uses apply-advanced;
                  }  // list cluster
    
                  list service-group {
                    key "name";
                    ordered-by user;
                    description
                      "Service-group supported by user-plane";
                    leaf name {
                      type string;
                      description
                        "Service-group name";
                    }
    
                    uses apply-advanced;
                  }  // list service-group
                }  // container selection-function
    
                container capabilities {
                  description
                    "Local capabilities control";
                  uses apply-advanced;
    
                  container function-features {
                    description
                      "Features to exclude from capabilities";
                    uses apply-advanced;
    
                    leaf exclude-lac {
                      type empty;
                      description
                        "Exclude L2TP access concentrator feature";
                    }
    
                    leaf exclude-lns {
                      type empty;
                      description
                        "Exclude L2TP network server feature";
                    }
    
                    leaf exclude-lcp-keepalive-offload {
                      type empty;
                      description
                        "Exclude PPP LCP echo feature";
                    }
                  }  // container function-features
                }  // container capabilities
              }  // container user-plane
            }  // choice modetype
          }  // container mode
    
          container redundancy {
            description
              "Interface level redundancy configuration";
            uses apply-advanced;
    
            list interface {
              key "name";
              description
                "One or more interfaces";
              leaf name {
                type union {
                  type jt:interface-name;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Interfaces participating in redundancy";
              }
    
              uses apply-advanced;
    
              leaf virtual-inet-address {
                type jt:ipaddr;
                description
                  "Virtual ipv4 Address for this interface (Used with GE / XE Interfaces for VRRP protocol)";
              }
    
              leaf virtual-inet6-address {
                type jt:ipaddr;
                description
                  "Virtual ipv6 Address for this interface (Used with GE / XE Interfaces for VRRP protocol)";
              }
    
              leaf local-inet-address {
                type jt:ipaddr;
                description
                  "Local ipv4 Address for this interface (Used with PS Interfaces for Pseudo-Wire protocol)";
              }
    
              leaf local-inet6-address {
                type jt:ipaddr;
                description
                  "Local ipv6 Address for this interface (Used with PS Interfaces for Pseudo-Wire protocol)";
              }
    
              leaf shared-key {
                type string {
                  length "1 .. 64";
                }
                description
                  "Shared Key for topology discovery match (Used with PS Interfaces for Pseudo-Wire protocol)";
              }
            }  // list interface
    
            container protocol {
              description
                "Underlying redundancy protocol";
              uses apply-advanced;
    
              leaf vrrp {
                type empty;
                description
                  "Use vrrp as redundancy protocol";
              }
    
              leaf pseudo-wire {
                type empty;
                description
                  "Use Pseudo Wire as redundancy protocol";
              }
            }  // container protocol
    
            leaf re-authenticate-on-failover {
              junos:must "(".. interface")";
              junos:must-message "Interfaces participating in redundancy must be configured";
              type empty;
              description
                "Re-authenticate the subscribers on interface fail over";
            }
    
            leaf no-advertise-routes-on-backup {
              junos:must "(".. interface")";
              junos:must-message "Interfaces participating in redundancy must be configured";
              type empty;
              description
                "Do not advertise subscriber routes on redundancy backup";
            }
          }  // container redundancy
    
          list interfaces {
            key "name";
            ordered-by user;
            description
              "Interface configuration";
            leaf name {
              type string;
              description "Interface name";
            }
    
            uses apply-advanced;
    
            list unit {
              key "name";
              description "Logical interface";
              leaf name {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 1073741823";
                  }
                }
              }
    
              uses apply-advanced;
            }  // list unit
          }  // list interfaces
    
          leaf location {
            type string {
              length "1 .. 32";
            }
            description
              "Location name for APM partition of aggregated BNG";
          }
        }  // grouping smid-type
    
        grouping smid-maintain-subscriber-type {
          description
            "Maintain subscriber options for subscriber management";
          uses apply-advanced;
    
          leaf interface-delete {
            type empty;
            description
              "Maintain subscriber on interface delete events";
          }
        }  // grouping smid-maintain-subscriber-type
    
        grouping smid-traceoptions-type {
          description
            "Trace options for Subscriber management";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
    
            leaf match {
              type jt:regular-expression;
              description
                "Regular expression for lines to be logged";
            }
          }  // container file
    
          list flag {
            key "name";
            ordered-by user;
            description
              "Subscriber management replication operations to include in debugging trace";
            leaf name {
              type enumeration {
                enum "database" {
                  value 0;
                  description
                    "Database operations";
                }
                enum "ui" {
                  value 1;
                  description
                    "User Interface operations";
                }
                enum "general" {
                  value 2;
                  description
                    "Miscellaneous operations";
                }
                enum "session-db" {
                  value 3;
                  description
                    "Session database operations";
                }
                enum "server" {
                  value 4;
                  description
                    "Server operations";
                }
                enum "issu" {
                  value 5;
                  description "ISSU operations";
                }
                enum "all" {
                  value 6;
                  description "All operations";
                }
              }
            }
          }  // list flag
        }  // grouping smid-traceoptions-type
    
        grouping snmp_scripts_file_type {
          leaf name {
            type string {
              junos:posix-pattern "!/";
              junos:pattern-message "file name cannot contain a '/'";
              length "1 .. 254";
            }
            description
              "Local filename of the script file";
          }
    
          uses apply-advanced;
    
          list oid {
            key "name";
            ordered-by user;
            description
              "Oid implemented by this script";
            leaf name {
              type string;
              description "Oid";
            }
    
            uses apply-advanced;
    
            leaf priority {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 255";
                }
              }
              default "128";
              description
                "Registration priority";
            }
          }  // list oid
    
          leaf source {
            type string {
              length "1 .. 254";
            }
            description
              "URL of source for this script";
          }
    
          leaf cert-file {
            junos:must "(".. source")";
            junos:must-message "source must be defined";
            type string;
            description
              "Specify the certificate file name";
          }
    
          leaf routing-instance {
            junos:must "("routing-instances $$")";
            junos:must-message "Referenced routing instance must be defined under [edit routing-instances] hierarchy level";
            type string {
              junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
              junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
            }
            description "Routing instance";
          }
    
          leaf python-script-user {
            junos:must "("system login user $$")";
            junos:must-message "User is not defined";
            type string;
            description
              "Run the python snmp script with privileges of user";
          }
    
          leaf refresh {
            type empty;
            description
              "Refresh all snmp scripts from their source";
          }
    
          leaf refresh-from {
            type string {
              length "1 .. 254";
            }
            description
              "Refresh all snmp scripts from a given base URL";
          }
    
          container checksum {
            description
              "Checksum of this script";
            uses apply-advanced;
    
            leaf sha-256 {
              type string {
                length "1 .. 254";
              }
              description
                "SHA-256 checksum of this script";
            }
          }  // container checksum
        }  // grouping snmp_scripts_file_type
    
        grouping ssd-traceoptions-type {
          description "Trace options for SSD";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
    
            leaf match {
              type jt:regular-expression;
              description
                "Regular expression for lines to be logged";
            }
          }  // container file
    
          leaf level {
            type enumeration {
              enum "error" {
                value 0;
                description
                  "Match error conditions";
              }
              enum "warning" {
                value 1;
                description
                  "Match warning messages";
              }
              enum "notice" {
                value 2;
                description
                  "Match conditions that should be handled specially";
              }
              enum "info" {
                value 3;
                description
                  "Match informational messages";
              }
              enum "verbose" {
                value 4;
                description
                  "Match verbose messages";
              }
              enum "all" {
                value 5;
                description "Match all levels";
              }
            }
            default "error";
            description
              "Level of debugging output";
          }
    
          list flag {
            key "name";
            ordered-by user;
            description
              "Area of sdk-service daemon to enable debugging output";
            leaf name {
              type enumeration {
                enum "infrastructure" {
                  value 0;
                  description
                    "Trace ssd infrastructure code";
                }
                enum "server" {
                  value 1;
                  description
                    "Trace ssd server functionality code";
                }
                enum "routing-instance" {
                  value 2;
                  description
                    "Trace ssd routing instance functionality code";
                }
                enum "client-management" {
                  value 3;
                  description
                    "Trace ssd client management code";
                }
                enum "interfaces-management" {
                  value 4;
                  description
                    "Trace ssd/jdaf interfaces management code";
                }
                enum "route-management" {
                  value 5;
                  description
                    "Trace ssd/jdaf route management code";
                }
                enum "nexthop-management" {
                  value 6;
                  description
                    "Trace ssd nexthop route management code";
                }
                enum "firewall-management" {
                  value 7;
                  description
                    "Trace JDAF-based firewall service";
                }
                enum "nexthop-group-management" {
                  value 8;
                  description
                    "Trace ssd nexthop group management code";
                }
                enum "cli" {
                  value 9;
                  description
                    "Trace ssd cli interaction code";
                }
                enum "cfg" {
                  value 10;
                  description
                    "Trace ssd cli interaction code";
                }
                enum "all" {
                  value 11;
                  description
                    "Trace all areas of ssd code";
                }
              }
            }
          }  // list flag
        }  // grouping ssd-traceoptions-type
    
        grouping syslog-object {
          leaf name {
            type enumeration {
              enum "any" {
                value 0;
                description "All facilities";
              }
              enum "authorization" {
                value 1;
                description
                  "Authorization system";
              }
              enum "daemon" {
                value 2;
                description
                  "Various system processes";
              }
              enum "ftp" {
                value 3;
                description "FTP process";
              }
              enum "ntp" {
                value 4;
                description "NTP process";
              }
              enum "security" {
                value 5;
                description "Security related";
              }
              enum "kernel" {
                value 6;
                description "Kernel";
              }
              enum "user" {
                value 7;
                description "User processes";
              }
              enum "dfc" {
                value 8;
                description
                  "Dynamic flow capture";
              }
              enum "external" {
                value 9;
                description
                  "Local external applications";
              }
              enum "firewall" {
                value 10;
                description
                  "Firewall filtering system";
              }
              enum "pfe" {
                value 11;
                description
                  "Packet Forwarding Engine";
              }
              enum "conflict-log" {
                value 12;
                description
                  "Configuration conflict log";
              }
              enum "change-log" {
                value 13;
                description
                  "Configuration change log";
              }
              enum "interactive-commands" {
                value 14;
                description
                  "Commands executed by the UI";
              }
            }
            description "Facility type";
          }
    
          choice level {
            leaf any {
              type empty;
              description "All levels";
            }
            leaf emergency {
              type empty;
              description "Panic conditions";
            }
            leaf alert {
              type empty;
              description
                "Conditions that should be corrected immediately";
            }
            leaf critical {
              type empty;
              description "Critical conditions";
            }
            leaf error {
              type empty;
              description "Error conditions";
            }
            leaf warning {
              type empty;
              description "Warning messages";
            }
            leaf notice {
              type empty;
              description
                "Conditions that should be handled specially";
            }
            leaf info {
              type empty;
              description
                "Informational messages";
            }
            leaf none {
              type empty;
              description "No messages";
            }
          }  // choice level
        }  // grouping syslog-object
    
        grouping tacplus-server-object {
          leaf name {
            type jt:hostname;
            description
              "TACACS+ authentication server address";
          }
    
          uses apply-advanced;
    
          leaf routing-instance {
            junos:must "("routing-instances $$")";
            junos:must-message "Referenced routing instance must be defined under [edit routing-instances] hierarchy level";
            type string {
              junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
              junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
            }
            description "Routing instance";
          }
    
          leaf port {
            type union {
              type uint16;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description
              "TACACS+ authentication server port number";
          }
    
          leaf secret {
            type jt:unreadable;
            description
              "Shared secret with the authentication server";
          }
    
          leaf timeout {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 90";
              }
            }
            units "seconds";
            default "3";
            description "Request timeout period";
          }
    
          leaf single-connection {
            type empty;
            description
              "Optimize TCP connection attempts";
          }
    
          leaf source-address {
            type jt:hostname;
            description
              "Use specified address as source address";
          }
        }  // grouping tacplus-server-object
    
        grouping tty_port_object {
          description "RS-232 configuration";
          uses apply-advanced;
    
          leaf-list authentication-order {
            type enumeration {
              enum "radius" {
                value 0;
                description
                  "Remote Authentication Dial-In User Service";
              }
              enum "tacplus" {
                value 1;
                description
                  "TACACS+ authentication services";
              }
              enum "password" {
                value 2;
                description
                  "Traditional password authentication";
              }
            }
            ordered-by user;
          }
    
          leaf log-out-on-disconnect {
            type empty;
            description
              "Log out the console session when cable is unplugged";
          }
    
          leaf port-type {
            type enumeration {
              enum "rj45" {
                value 0;
                description "Enable RJ45";
              }
              enum "mini-usb" {
                value 1;
                description "Enable mini-USB";
              }
            }
            description
              "Switch console between RJ45 and mini-USB";
          }
    
          leaf disable {
            type empty;
            description "Disable console";
          }
    
          leaf insecure {
            type empty;
            description
              "Disallow superuser access";
          }
    
          leaf speed {
            type enumeration {
              enum "1200" {
                value 0;
                status deprecated;
                description
                  "Standard terminal at 1200 baud";
              }
              enum "2400" {
                value 1;
                status deprecated;
                description
                  "Standard terminal at 2400 baud";
              }
              enum "4800" {
                value 2;
                status deprecated;
                description
                  "Standard terminal at 4800 baud";
              }
              enum "9600" {
                value 3;
                status deprecated;
                description
                  "Standard terminal at 9600 baud";
              }
              enum "19200" {
                value 4;
                status deprecated;
                description
                  "Standard terminal at 19200 baud";
              }
              enum "38400" {
                value 5;
                status deprecated;
                description
                  "Standard terminal at 38400 baud";
              }
              enum "57600" {
                value 6;
                status deprecated;
                description
                  "Standard terminal at 57600 baud";
              }
              enum "115200" {
                value 7;
                status deprecated;
                description
                  "Standard terminal at 115200 baud";
              }
            }
            units "baud";
            status deprecated;
            description "Speed of the port";
          }
    
          leaf type {
            type enumeration {
              enum "ansi" {
                value 0;
                description
                  "ANSI-compatible terminal";
              }
              enum "vt100" {
                value 1;
                description
                  "VT100-compatible terminal";
              }
              enum "small-xterm" {
                value 2;
                description
                  "Small (24-line) xterm window";
              }
              enum "xterm" {
                value 3;
                description
                  "Large (65-line) xterm window";
              }
            }
            description "Terminal type";
          }
    
          leaf silent-with-modem {
            type empty;
            description
              "Make the console silent if modem is connected and no call is present on the modem";
          }
        }  // grouping tty_port_object
      }  // module junos-ex-conf-system
    

© 2023 YumaWorks, Inc. All rights reserved.