junos-es-conf-chassis

Junos chassis configuration module

  • Version: 2019-01-01

    junos-es-conf-chassis@2019-01-01


    
      module junos-es-conf-chassis {
    
        yang-version 1;
    
        namespace
          "http://yang.juniper.net/junos-es/conf/chassis";
    
        prefix jc-chassis;
    
        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-es-conf-root {
          prefix jc;
          revision-date "2019-01-01";
        }
    
        organization "Juniper Networks, Inc.";
    
        contact "yang-support@juniper.net";
    
        description
          "Junos chassis configuration module";
    
        revision "2019-01-01" {
          description "Junos: 21.3R1.9";
        }
    
    
        augment /jc:configuration {
          uses chassis-group;
        }
    
        augment /jc:configuration/jc:groups {
          uses chassis-group;
        }
    
        grouping chassis-group {
          container chassis {
            description "Chassis configuration";
            uses chassis_type;
          }  // container chassis
        }  // grouping chassis-group
    
        grouping chassis_type {
          uses apply-advanced;
    
          container psu {
            description
              "Power Supply Unit redundancy configuration";
            uses apply-advanced;
    
            container redundancy {
              description
                "PSU Redundancy settings";
              uses apply-advanced;
    
              leaf n-plus-n {
                type empty;
                description
                  "PSU redundancy: N+N configuration";
              }
            }  // container redundancy
          }  // container psu
    
          leaf craft-lockout {
            type empty;
            description
              "Disable craft interface input";
          }
    
          container config-button {
            description
              "Config button behavior settings";
            leaf no-rescue {
              type empty;
              description
                "Don't reset to rescue configuration";
            }
    
            leaf no-clear {
              type empty;
              description
                "Don't reset to factory-default configuration";
            }
          }  // container config-button
    
          choice source-route-choice {
            leaf source-route {
              type empty;
              status deprecated;
              description
                "Enable IP source-route processing";
            }
            leaf no-source-route {
              type empty;
              status deprecated;
              description
                "Don't enable IP source-route processing";
            }
          }  // choice source-route-choice
    
          choice packet-scheduling-choice {
            leaf packet-scheduling {
              type empty;
              description
                "Enable DX2.0 packet scheduling";
            }
            leaf no-packet-scheduling {
              type empty;
              description
                "Don't enable DX2.0 packet scheduling";
            }
          }  // choice packet-scheduling-choice
    
          container icmp {
            description "ICMP protocol";
            uses apply-advanced;
    
            leaf per-iff-rate-limit {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "50 .. 500";
                }
              }
              default "50";
              description
                "Configure icmp per iff rate limit value in the range 50-500";
            }
          }  // container icmp
    
          container icmp6 {
            description
              "ICMP version 6 protocol";
            uses apply-advanced;
    
            leaf per-iff-rate-limit {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "50 .. 500";
                }
              }
              default "50";
              description
                "Configure icmp6 per iff rate limit value in the range 50-500";
            }
          }  // container icmp6
    
          leaf maximum-ecmp {
            type enumeration {
              enum "16" {
                value 0;
                description
                  "Maximum 16 ECMP routes";
              }
              enum "32" {
                value 1;
                description
                  "Maximum 32 ECMP routes";
              }
              enum "64" {
                value 2;
                description
                  "Maximum 64 ECMP routes";
              }
              enum "96" {
                value 3;
                description
                  "Maximum 96 ECMP routes";
              }
              enum "128" {
                value 4;
                description
                  "Maximum 128 ECMP routes";
              }
              enum "160" {
                junos:must "(!("system processes routing force-32-bit"))";
                junos:must-message "32-bit rpd doesn't support ecmp greater than 128";
                value 5;
                description
                  "Maximum 160 ECMP routes";
              }
              enum "192" {
                junos:must "(!("system processes routing force-32-bit"))";
                junos:must-message "32-bit rpd doesn't support ecmp greater than 128";
                value 6;
                description
                  "Maximum 192 ECMP routes";
              }
              enum "224" {
                junos:must "(!("system processes routing force-32-bit"))";
                junos:must-message "32-bit rpd doesn't support ecmp greater than 128";
                value 7;
                description
                  "Maximum 224 ECMP routes";
              }
              enum "256" {
                junos:must "(!("system processes routing force-32-bit"))";
                junos:must-message "32-bit rpd doesn't support ecmp greater than 128";
                value 8;
                description
                  "Maximum 256 ECMP routes";
              }
              enum "288" {
                junos:must "(!("system processes routing force-32-bit"))";
                junos:must-message "32-bit rpd doesn't support ecmp greater than 128";
                value 9;
                description
                  "Maximum 288 ECMP routes";
              }
              enum "320" {
                junos:must "(!("system processes routing force-32-bit"))";
                junos:must-message "32-bit rpd doesn't support ecmp greater than 128";
                value 10;
                description
                  "Maximum 320 ECMP routes";
              }
              enum "352" {
                junos:must "(!("system processes routing force-32-bit"))";
                junos:must-message "32-bit rpd doesn't support ecmp greater than 128";
                value 11;
                description
                  "Maximum 352 ECMP routes";
              }
              enum "384" {
                junos:must "(!("system processes routing force-32-bit"))";
                junos:must-message "32-bit rpd doesn't support ecmp greater than 128";
                value 12;
                description
                  "Maximum 384 ECMP routes";
              }
              enum "416" {
                junos:must "(!("system processes routing force-32-bit"))";
                junos:must-message "32-bit rpd doesn't support ecmp greater than 128";
                value 13;
                description
                  "Maximum 416 ECMP routes";
              }
              enum "448" {
                junos:must "(!("system processes routing force-32-bit"))";
                junos:must-message "32-bit rpd doesn't support ecmp greater than 128";
                value 14;
                description
                  "Maximum 448 ECMP routes";
              }
              enum "480" {
                junos:must "(!("system processes routing force-32-bit"))";
                junos:must-message "32-bit rpd doesn't support ecmp greater than 128";
                value 15;
                description
                  "Maximum 480 ECMP routes";
              }
              enum "512" {
                junos:must "(!("system processes routing force-32-bit"))";
                junos:must-message "32-bit rpd doesn't support ecmp greater than 128";
                value 16;
                description
                  "Maximum 512 ECMP routes";
              }
            }
            description
              "Maximum ECMP limit for nexthops";
          }
    
          container redundancy {
            description "Redundancy settings";
            uses chassis_redundancy_type;
          }  // container redundancy
    
          container routing-engine {
            description
              "Routing Engine settings";
            uses chassis_routing_engine_type;
          }  // container routing-engine
    
          container aggregated-devices {
            description
              "Aggregated devices configuration";
            uses chassis_agg_dev_type;
          }  // container aggregated-devices
    
          list disk-partition {
            key "name";
            ordered-by user;
            description
              "Chassis disk monitor configuration";
            leaf name {
              type enumeration {
                enum "/var" {
                  value 0;
                  description
                    "Monitor /var partition";
                }
                enum "/config" {
                  value 1;
                  description
                    "Monitor /config partition";
                }
              }
              description
                "Choose disk partition to monitor";
            }
    
            uses apply-advanced;
    
            list level {
              key "name";
              ordered-by user;
              description "Threshold level";
              leaf name {
                type enumeration {
                  enum "high" {
                    value 0;
                    description
                      "Set high level of threshold";
                  }
                  enum "full" {
                    value 1;
                    description
                      "Set full level of threshold";
                  }
                }
              }
    
              uses apply-advanced;
    
              container free-space {
                description
                  "Enter threshold value & choose the metric";
                leaf thres-free {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 100";
                    }
                  }
                  description
                    "Enter free space threshold value";
                }
    
                choice thres-metric {
                  leaf percent {
                    type empty;
                    description
                      "Free space threshold in %";
                  }
                  leaf mb {
                    type empty;
                    description
                      "Free space threshold in MB";
                  }
                }  // choice thres-metric
              }  // container free-space
            }  // list level
          }  // list disk-partition
    
          container pseudowire-service {
            presence "enable pseudowire-service";
            description
              "Pseudowire L3 termination device configuration";
            uses chassis-pw-type;
          }  // container pseudowire-service
    
          container fabric {
            description "Switch fabric settings";
            uses chassis_fabric_type;
          }  // container fabric
    
          list fpc {
            junos:must "((!(any ". <*> vpn-localization") || !("virtual-chassis")))";
            junos:must-message "vpn-localization cannot be configured on virtual-chassis";
            key "name";
            description
              "Flexible PIC Concentrator parameters";
            uses chassis_fpc_type;
          }  // list fpc
    
          leaf disable-power-management {
            type empty;
            description
              "Disable Power Management in this chassis";
          }
    
          leaf dedicated-ukern-cpu {
            junos:must "(!("chassis realtime-ukern-thread"))";
            junos:must-message "dedicated-ukern-cpu and  realtime-ukern-thread are mutually exclusive";
            type empty;
            description
              "Run Microkernel on a dedicated CPU core";
          }
    
          leaf realtime-ukern-thread {
            junos:must "(!("chassis dedicated-ukern-cpu"))";
            junos:must-message "dedicated-ukern-cpu and  realtime-ukern-thread are mutually exclusive";
            type empty;
            description
              "Run Microkernel on a realtime CPU thread";
          }
    
          container fpc-feb-connectivity {
            description
              "Connectivity between Flexible PIC Concentrators and Forwarding Engine Boards";
            uses apply-advanced;
    
            list fpc {
              key "name";
              leaf name {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32;
                }
                description "FPC slot number";
              }
    
              uses apply-advanced;
    
              container feb {
                description "FEB slot number";
                choice feb-slot-choice {
                  leaf none {
                    type empty;
                    description
                      "FPC not connected to any FEB";
                  }
                  leaf feb-slot {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32;
                    }
                    description
                      "FEB slot number";
                  }
                }  // choice feb-slot-choice
              }  // container feb
            }  // list fpc
          }  // container fpc-feb-connectivity
    
          container ioc-npc-connectivity {
            description
              "Connectivity between IOC and NPC";
            uses apply-advanced;
    
            list ioc {
              key "name";
              leaf name {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32;
                }
                description
                  "IOC-FPC slot number";
              }
    
              uses apply-advanced;
    
              container npc {
                description
                  "NPC-FPC slot number";
                choice npc-slot-choice {
                  leaf none {
                    type empty;
                    description
                      "IOC not connected to any NPC";
                  }
                  leaf npc-slot {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32;
                    }
                    description
                      "NPC-FPC slot number";
                  }
                }  // choice npc-slot-choice
              }  // container npc
            }  // list ioc
          }  // container ioc-npc-connectivity
    
          container pem {
            description
              "Power supply (PEM) parameters";
            uses chassis_pem_type;
          }  // container pem
    
          container tfeb {
            description
              "Taz Forwarding Engine Board parameters";
            uses chassis_feb_type;
          }  // container tfeb
    
          container alarm {
            description "Global alarm settings";
            uses chassis_alarm_type;
          }  // container alarm
    
          leaf slow-pfe-alarm {
            type empty;
            description
              "Enable slow (potential) PFE alarm";
          }
    
          leaf onbox-av-load-flavor {
            type enumeration {
              enum "heavy" {
                value 0;
                description
                  "Allocates additional resources for improved performance";
              }
            }
            description
              "Select onbox anti-virus traffic load flavor";
          }
    
          leaf ambient-temperature {
            type enumeration {
              enum "55C" {
                value 0;
                description "55 degree celsius";
              }
              enum "40C" {
                value 1;
                description "40 degree celsius";
              }
              enum "25C" {
                value 2;
                description "25 degree celsius";
              }
              enum "32C" {
                value 3;
                description "32 degree celsius";
              }
            }
            description
              "Chassis ambient-temperature value in degree celsius";
          }
    
          container resource-watch {
            description
              "Chassis routing engine resource watch configuration";
            uses apply-advanced;
    
            leaf resource-watch-enable {
              type empty;
              description
                "Enable resource watch";
            }
    
            leaf cpu-statistics {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 604800";
                }
              }
              units "seconds";
              description
                "Set statistics collection, 0 disable";
            }
    
            leaf junos-statistics {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 604800";
                }
              }
              units "seconds";
              description
                "Set statistics collection, 0 disable";
            }
    
            leaf orange-zone-enable {
              type empty;
              description "Enable orange zone";
            }
    
            leaf orange-zone-threshold {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 99";
                }
              }
              description
                "Set orange zone value (CPU idle %), default 20";
            }
    
            leaf red-zone-enable {
              type empty;
              description "Enable red zone";
            }
    
            leaf red-zone-cpu-threshold {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 99";
                }
              }
              description
                "Set red zone value (CPU idle %), default 10";
            }
    
            leaf red-zone-jkl-threshold {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 99";
                }
              }
              description
                "Set red zone value (Junos load %), default 50";
            }
    
            leaf red-zone-snmp-enable {
              type empty;
              description "Enable red zone snmp";
            }
          }  // container resource-watch
    
          leaf network-services {
            type enumeration {
              enum "ip" {
                value 0;
                description
                  "IP network services";
              }
              enum "ethernet" {
                junos:must "((!(any "interfaces <*> unit <*> family inet accounting source-class-usage") && (!(any "interfaces <*> unit <*> family inet accounting destination-class-usage") && (!(any "interfaces <*> unit <*> family inet6 accounting source-class-usage") && (!(any "interfaces <*> unit <*> family inet6 accounting destination-class-usage") && (!(any "logical-systems <*> interfaces <*> unit <*> family inet accounting source-class-usage") && (!(any "logical-systems <*> interfaces <*> unit <*> family inet accounting destination-class-usage") && (!(any "logical-systems <*> interfaces <*> unit <*> family inet6 accounting source-class-usage") && !(any "logical-systems <*> interfaces <*> unit <*> family inet6 accounting destination-class-usage")))))))))";
                junos:must-message "Cannot configure 'accounting source-class-usage or destination-class-usage' under network-services ethernet";
                junos:must "((!("routing-options forwarding-table unicast-reverse-path") && (!(any "routing-instances <*> routing-options forwarding-table unicast-reverse-path") && (!(any "logical-systems <*> routing-options forwarding-table unicast-reverse-path") && !(any "logical-systems <*> routing-instances <*> routing-options forwarding-table unicast-reverse-path")))))";
                junos:must-message "Cannot configure 'unicast-reverse-path' under network-services ethernet";
                junos:must "((!(any "interfaces <*> unit <*> family inet rpf-check") && (!(any "interfaces <*> unit <*> family inet6 rpf-check") && (!(any "logical-systems <*> interfaces <*> unit <*> family inet rpf-check") && !(any "logical-systems <*> interfaces <*> unit <*> family inet6 rpf-check")))))";
                junos:must-message "Cannot configure 'rpf-check' under network-services ethernet";
                junos:must "((!(any "policy-options policy-statement <*> then source-class") && (!(any "policy-options policy-statement <*> term <*> then source-class") && (!(any "policy-options policy-statement <*> then destination-class") && (!(any "policy-options policy-statement <*> term <*> then destination-class") && (!(any "policy-options policy-statement <*> from route-filter <*> <*>  source-class") && (!(any "policy-options policy-statement <*> term <*> from route-filter <*> <*>  source-class") && (!(any "policy-options policy-statement <*> from route-filter <*> <*> destination-class") && (!(any "policy-options policy-statement <*> term <*> from route-filter <*> <*>  destination-class") && (!(any "logical-systems <*> policy-options policy-statement <*> then source-class") && (!(any "logical-systems <*> policy-options policy-statement <*> term <*> then source-class") && (!(any "logical-systems <*> policy-options policy-statement <*> then destination-class") && (!(any "logical-systems <*> policy-options policy-statement <*> term <*> then destination-class") && (!(any "logical-systems <*> policy-options policy-statement <*> from route-filter <*> <*>  source-class") && (!(any "logical-systems <*> policy-options policy-statement <*> term <*> from route-filter <*> <*>  source-class") && (!(any "logical-systems <*> policy-options policy-statement <*> from route-filter <*> <*> destination-class") && !(any "logical-systems <*> policy-options policy-statement <*> term <*> from route-filter <*> <*>  destination-class")))))))))))))))))";
                junos:must-message "Cannot configure 'destination-class|source-class' under network-services ethernet";
                junos:must "((!("protocols bgp family inet any") && (!("protocols bgp family inet flow") && (!("protocols bgp family inet multicast") && (!(any "protocols bgp group <*> family inet any") && (!(any "protocols bgp group <*> family inet flow") && (!(any "protocols bgp group <*> family inet multicast") && (!(any "protocols bgp group <*> neighbor <*> family inet any") && (!(any "protocols bgp group <*> neighbor <*> family inet flow") && (!(any "protocols bgp group <*> neighbor <*> family inet multicast") && (!("protocols bgp family inet-vpn any") && (!("protocols bgp family inet-vpn flow") && (!("protocols bgp family inet-vpn multicast") && (!(any "protocols bgp group <*> family inet-vpn any") && (!(any "protocols bgp group <*> family inet-vpn flow") && (!(any "protocols bgp group <*> family inet-vpn multicast") && (!(any "protocols bgp group <*> neighbor <*> family inet-vpn any") && (!(any "protocols bgp group <*> neighbor <*> family inet-vpn flow") && (!(any "protocols bgp group <*> neighbor <*> family inet-vpn multicast") && (!("protocols bgp family inet6") && (!(any "protocols bgp group <*> family inet6") && (!(any "protocols bgp group <*> neighbor <*> family inet6") && (!("protocols bgp family inet6-vpn") && (!(any "protocols bgp group <*> family inet6-vpn") && (!(any "protocols bgp group <*> neighbor <*> family inet6-vpn") && (!("protocols bgp family inet-mvpn") && (!(any "protocols bgp group <*> family inet-mvpn") && (!(any "protocols bgp group <*> neighbor <*> family inet-mvpn") && (!("protocols bgp family inet6-mvpn") && (!(any "protocols bgp group <*> family inet6-mvpn") && (!(any "protocols bgp group <*> neighbor <*> family inet6-mvpn") && (!("protocols bgp family iso") && (!(any "protocols bgp group <*> family iso") && (!(any "protocols bgp group <*> neighbor <*> family iso") && (!("protocols bgp family iso-vpn") && (!(any "protocols bgp group <*> family iso-vpn") && (!(any "protocols bgp group <*> neighbor <*> family iso-vpn") && (!("protocols bgp family atmvpn") && (!(any "protocols bgp group <*> family atmvpn") && (!(any "protocols bgp group <*> neighbor <*> family atmvpn") && (!(any "logical-systems <*> protocols bgp family inet any") && (!(any "logical-systems <*> protocols bgp family inet flow") && (!(any "logical-systems <*> protocols bgp family inet multicast") && (!(any "logical-systems <*> protocols bgp group <*> family inet any") && (!(any "logical-systems <*> protocols bgp group <*> family inet flow") && (!(any "logical-systems <*> protocols bgp group <*> family inet multicast") && (!(any "logical-systems <*> protocols bgp group <*> neighbor <*> family inet any") && (!(any "logical-systems <*> protocols bgp group <*> neighbor <*> family inet flow") && (!(any "logical-systems <*> protocols bgp group <*> neighbor <*> family inet multicast") && (!(any "logical-systems <*> protocols bgp family inet-vpn any") && (!(any "logical-systems <*> protocols bgp family inet-vpn flow") && (!(any "logical-systems <*> protocols bgp family inet-vpn multicast") && (!(any "logical-systems <*> protocols bgp group <*> family inet-vpn any") && (!(any "logical-systems <*> protocols bgp group <*> family inet-vpn flow") && (!(any "logical-systems <*> protocols bgp group <*> family inet-vpn multicast") && (!(any "logical-systems <*> protocols bgp group <*> neighbor <*> family inet-vpn any") && (!(any "logical-systems <*> protocols bgp group <*> neighbor <*> family inet-vpn flow") && (!(any "logical-systems <*> protocols bgp group <*> neighbor <*> family inet-vpn multicast") && (!(any "logical-systems <*> protocols bgp family inet6") && (!(any "logical-systems <*> protocols bgp group <*> family inet6") && (!(any "logical-systems <*> protocols bgp group <*> neighbor <*> family inet6") && (!(any "logical-systems <*> protocols bgp family inet6-vpn") && (!(any "logical-systems <*> protocols bgp group <*> family inet6-vpn") && (!(any "protocols bgp group <*> neighbor <*> family inet6-vpn") && (!(any "logical-systems <*> protocols bgp family inet-mvpn") && (!(any "logical-systems <*> protocols bgp group <*> family inet-mvpn") && (!(any "protocols bgp group <*> neighbor <*> family inet-mvpn") && (!(any "logical-systems <*> protocols bgp family inet6-mvpn") && (!(any "logical-systems <*> protocols bgp group <*> family inet6-mvpn") && (!(any "logical-systems <*> protocols bgp group <*> neighbor <*> family inet6-mvpn") && (!(any "logical-systems <*> protocols bgp family iso") && (!(any "logical-systems <*> protocols bgp group <*> family iso") && (!(any "protocols bgp group <*> neighbor <*> family iso") && (!(any "logical-systems <*> protocols bgp family iso-vpn") && (!(any "logical-systems <*> protocols bgp group <*> family iso-vpn") && (!(any "logical-systems <*> protocols bgp group <*> neighbor <*> family iso-vpn") && (!(any "logical-systems <*> protocols bgp family atmvpn") && (!(any "logical-systems <*> protocols bgp group <*> family atmvpn") && !(any "protocols bgp group <*> neighbor <*> family atmvpn")))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))";
                junos:must-message "Only BGP groups with 'family inet unicast, inet labeled-unicast, inet-vpn unicast, l2vpn and route-target' are supported under network-services ethernet";
                value 1;
                description
                  "Ethernet network services";
              }
              enum "enhanced-ip" {
                value 2;
                description
                  "Enhanced IP network services";
              }
              enum "enhanced-ethernet" {
                value 3;
                description
                  "Enhanced ethernet network services";
              }
              enum "enhanced-mode" {
                value 4;
                description
                  "Enhanced network services";
              }
              enum "lan" {
                value 5;
                description
                  "Ethernet LAN services";
              }
            }
            description
              "Chassis network services configuration";
          }
    
          container usb {
            description "USB control flags";
            uses apply-advanced;
    
            container storage {
              description "USB storage flags";
              uses apply-advanced;
    
              leaf disable {
                type empty;
                description
                  "Disable USB storage";
              }
            }  // container storage
          }  // container usb
    
          list lcc {
            key "name";
            description
              "Line-card chassis configuration";
            leaf name {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32;
              }
              description "LCC number";
            }
    
            uses apply-advanced;
    
            list fpc {
              junos:must "((!(any ". <*> vpn-localization") || !("virtual-chassis")))";
              junos:must-message "vpn-localization cannot be configured on virtual-chassis";
              key "name";
              description
                "Flexible PIC Concentrator parameters";
              uses chassis_fpc_type;
            }  // list fpc
    
            container pem {
              description
                "Power supply (PEM) parameters";
              uses chassis_pem_type;
            }  // container pem
    
            choice state {
              leaf online-expected {
                type empty;
                description
                  "LCC is expected to be online";
              }
              leaf offline {
                type empty;
                description
                  "LCC is expected to be offline";
              }
            }  // choice state
          }  // list lcc
    
          container lcd {
            status deprecated;
            description "Chassis LCD";
            uses apply-advanced;
    
            choice menu-item {
              leaf maintenance-menu {
                type empty;
                description
                  "LCD maintenance menu";
              }
            }  // choice menu-item
    
            choice enable-disable {
              leaf disable {
                type empty;
                description
                  "Disable maintenance-menu";
              }
            }  // choice enable-disable
          }  // container lcd
    
          container forwarding-options {
            description
              "Configure options to control packet forwarding";
            uses apply-advanced;
    
            choice uft_object {
              container l2-profile-one {
                presence "enable l2-profile-one";
                description
                  "MAC: 288K L3-host: 16K LPM: 16K EM:0, needs reboot for VC; restarts PFE if standalone";
                uses apply-advanced;
    
                leaf num-65-127-prefix {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type int32 {
                      range "0 .. 4";
                    }
                  }
                  default "1";
                  description
                    "IPV6 prefixes > 64, in multiples of 1K e.g 3 = 3x1K entries(default 1)";
                }
              }  // container l2-profile-one
              container l2-profile-two {
                presence "enable l2-profile-two";
                description
                  "MAC: 224K L3-host: 80K LPM: 16K EM:0, needs reboot for VC; restarts PFE if standalone";
                uses apply-advanced;
    
                leaf num-65-127-prefix {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type int32 {
                      range "0 .. 4";
                    }
                  }
                  default "1";
                  description
                    "IPV6 prefixes > 64, in multiples of 1K e.g 3 = 3x1K entries(default 1)";
                }
              }  // container l2-profile-two
              container l2-profile-three {
                presence
                  "enable l2-profile-three";
                description
                  "(default) MAC: 160K L3-host: 144K LPM: 16K, needs reboot for VC;restarts PFE if standalone";
                uses apply-advanced;
    
                leaf num-65-127-prefix {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type int32 {
                      range "0 .. 4";
                    }
                  }
                  default "1";
                  description
                    "IPV6 prefixes > 64, in multiples of 1K e.g 3 = 3x1K entries(default 1)";
                }
              }  // container l2-profile-three
              container l3-profile {
                presence "enable l3-profile";
                description
                  "MAC: 96K L3-host: 208K LPM: 16K EM:0, needs reboot for VC; restarts PFE if standalone";
                uses apply-advanced;
    
                leaf num-65-127-prefix {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type int32 {
                      range "0 .. 4";
                    }
                  }
                  default "1";
                  description
                    "IPV6 prefixes > 64, in multiples of 1K e.g 3 = 3x1K entries(default 1)";
                }
              }  // container l3-profile
              container lpm-profile {
                presence "enable lpm-profile";
                description
                  "MAC: 32K L3-host: 16K LPM: 128K EM:0, needs reboot for VC; restarts PFE if standalone";
                uses apply-advanced;
    
                leaf prefix-65-127-disable {
                  type empty;
                  description
                    "Disable IPV6 prefixes with length > 64";
                }
    
                leaf unicast-in-lpm {
                  type empty;
                  description
                    "Install unicast host entries in LPM table";
                }
              }  // container lpm-profile
              container exact-match-profile {
                presence
                  "enable exact-match-profile";
                description
                  "MAC: 8K L3-host: 8K LPM: 16K EM: 64K, needs reboot for VC; restarts PFE if standalone";
                uses apply-advanced;
    
                leaf num-65-127-prefix {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type int32 {
                      range "0 .. 4";
                    }
                  }
                  default "1";
                  description
                    "IPV6 prefixes > 64, in multiples of 1K e.g 3 = 3x1K entries(default 1)";
                }
              }  // container exact-match-profile
              container vxlan-gbp-profile {
                presence
                  "enable vxlan-gbp-profile";
                description
                  "MAC: 48K L3-host: 48K LPM: 16K EM:32K, needs reboot for VC; restarts PFE if standalone";
              }  // container vxlan-gbp-profile
              container custom-profile {
                description
                  "(Partition the shared banks, will automatically restart the PFE when configured)";
                uses apply-advanced;
    
                container l2-entries {
                  description
                    "Customize l2 entries needed";
                  uses apply-advanced;
    
                  leaf num-banks {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type int32 {
                        range "0 .. 4";
                      }
                    }
                    default "0";
                    description
                      "Number of banks needed for entries of this type";
                  }
                }  // container l2-entries
    
                container l3-entries {
                  description
                    "Customize l3 entries needed";
                  uses apply-advanced;
    
                  leaf num-banks {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type int32 {
                        range "0 .. 4";
                      }
                    }
                    default "0";
                    description
                      "Number of banks needed for entries of this type";
                  }
                }  // container l3-entries
    
                container exact-match-entries {
                  description
                    "Customize exact match entries needed";
                  uses apply-advanced;
    
                  leaf num-banks {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type int32 {
                        range "0 .. 4";
                      }
                    }
                    default "0";
                    description
                      "Number of banks needed for entries of this type";
                  }
                }  // container exact-match-entries
    
                container lpm-entries {
                  description
                    "Customize lpm banks needed";
                  uses apply-advanced;
    
                  leaf num-banks {
                    type enumeration {
                      enum "0" {
                        value 0;
                      }
                      enum "2" {
                        value 1;
                      }
                      enum "4" {
                        value 2;
                      }
                    }
                    default "0";
                    description
                      "Number of banks needed for entries of this type";
                  }
    
                  leaf prefix-65-127-disable {
                    type empty;
                    description
                      "Disable IPV6 prefixes with length > 64";
                  }
                }  // container lpm-entries
    
                leaf num-65-127-prefix {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type int32 {
                      range "0 .. 4";
                    }
                  }
                  default "1";
                  description
                    "IPV6 prefixes > 64, in multiples of 1K e.g 3 = 3x1K entries(default 1)";
                }
              }  // container custom-profile
            }  // choice uft_object
          }  // container forwarding-options
    
          leaf loopback-firewall-optimization {
            type empty;
            description
              "Optimal TCAM use,restarts PFE(for IP rsrved multicast dest & IP ttl=0/1,config explicitly)";
          }
    
          leaf epacl-firewall-optimization {
            type empty;
            description
              "Maximizes Egress Port ACLs TCAM use and restarts PFE";
          }
    
          leaf fru-poweron-sequence {
            type string {
              junos:posix-pattern "^[0-9 ]+$";
              junos:pattern-message "FRU in fru poweron sequence must be a number";
            }
            description
              "FRUs power on sequence like 0 1 2 3 ... within double quotes";
          }
    
          leaf auto-image-upgrade {
            type empty;
            description
              "Auto image upgrade using DHCP";
          }
    
          container error {
            presence "enable error";
            description
              "Error level configuration for all FPC";
            uses chassis_fpc_error_type;
          }  // container error
    
          container oss-map {
            description
              "Translate Operation Supported System's requirements";
            uses apply-advanced;
    
            leaf model-name {
              type enumeration {
                enum "t640" {
                  value 0;
                  description
                    "Set to T640's model";
                }
                enum "t1600" {
                  value 1;
                  description
                    "Set to T1600's model";
                }
              }
              description
                "Override chassis model name for specific show/snmp output";
            }
          }  // container oss-map
    
          container jnu-management {
            description
              "JNU Management configuration";
            uses apply-advanced;
    
            leaf mode {
              type enumeration {
                enum "feature-rich" {
                  value 0;
                  description
                    "Feature Rich Mode";
                }
                enum "bng-control-plane" {
                  value 1;
                  description
                    "BNG control-plane mode";
                }
              }
              description "JNU Mode";
            }
    
            leaf satellite-name {
              type string;
              description "Satellite name";
            }
    
            leaf device-group {
              type string;
              description
                "Satellite device group";
            }
    
            list satellite {
              key "name";
              ordered-by user;
              description "List of satellites";
              leaf name {
                type string;
                description "Satellite name";
              }
    
              uses apply-advanced;
    
              leaf device-group {
                type string;
                description
                  "Satellite Device Group";
              }
    
              leaf model {
                type string;
                description "Satellite model";
              }
    
              leaf version {
                type string {
                  junos:posix-pattern "^[[:digit:]][[:alnum:]_.-]+$";
                  junos:pattern-message "Version should begin with a number";
                }
                description "Satellite version";
              }
            }  // list satellite
    
            leaf user {
              type string;
              description "Satellite User Name";
            }
    
            leaf controller {
              type string;
              description "Controller Name";
            }
    
            leaf authentication {
              type jt:unreadable;
              description
                "Authentication string";
            }
          }  // container jnu-management
    
          list satellite {
            key "name";
            ordered-by user;
            description
              "List of available satellite configurations";
            leaf name {
              type string;
              description "Satellite name";
            }
    
            uses apply-advanced;
          }  // list satellite
    
          container system-domains {
            presence "enable system-domains";
            description
              "Root and protected system domain configuration";
            uses apply-advanced;
    
            leaf root-domain-id {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 3";
                }
              }
              description
                "Root domain identifier";
            }
    
            list protected-system-domains {
              key "name";
              description
                "Protected system domain configuration";
              uses juniper-protected-system-domain;
            }  // list protected-system-domains
    
            container traceoptions {
              description
                "Protected system domain traceoptions";
              uses juniper-protected-system-domain-traceoptions;
            }  // container traceoptions
          }  // container system-domains
    
          container cluster {
            description
              "Chassis cluster configuration";
            uses apply-advanced;
    
            container traceoptions {
              description
                "Set chassis cluster 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
    
              list flag {
                key "name";
                ordered-by user;
                description "Tracing parameters";
                leaf name {
                  type enumeration {
                    enum "cli" {
                      value 0;
                      description
                        "Trace CLI events";
                    }
                    enum "configuration" {
                      value 1;
                      description
                        "Trace configuration events";
                    }
                    enum "eventlib" {
                      value 2;
                      description
                        "Trace event library events";
                    }
                    enum "fsm" {
                      value 3;
                      description
                        "Trace finite state machine events";
                    }
                    enum "heartbeat" {
                      value 4;
                      description
                        "Trace JSRPD heartbeats";
                    }
                    enum "interface" {
                      value 5;
                      description
                        "Trace interface related events";
                    }
                    enum "routing-socket" {
                      value 6;
                      description
                        "Trace routing socket events";
                    }
                    enum "uspipc" {
                      value 7;
                      description
                        "Trace USP IPC events";
                    }
                    enum "init" {
                      value 8;
                      description
                        "Trace initialization events";
                    }
                    enum "socket" {
                      value 9;
                      description
                        "Trace socket events";
                    }
                    enum "snmp" {
                      value 10;
                      description
                        "Trace snmp events";
                    }
                    enum "ip-monitoring" {
                      value 11;
                      description
                        "Trace IP monitoring events";
                    }
                    enum "hw-monitoring" {
                      value 12;
                      description
                        "Trace HW  monitoring events";
                    }
                    enum "fabric-monitoring" {
                      value 13;
                      description
                        "Trace fabric monitoring events";
                    }
                    enum "health-monitoring" {
                      value 14;
                      description
                        "Trace health monitoring events";
                    }
                    enum "schedule-monitoring" {
                      value 15;
                      description
                        "Trace schedule monitoring events";
                    }
                    enum "heartbeat-tlv" {
                      value 16;
                      description
                        "Trace TLV based heart-beat";
                    }
                    enum "ha-peer" {
                      value 17;
                      description
                        "Trace HA peer related info";
                    }
                    enum "srg" {
                      value 18;
                      description
                        "Trace HA srg related info";
                    }
                    enum "all" {
                      value 19;
                      description
                        "Trace all events";
                    }
                  }
                }
              }  // list flag
    
              leaf level {
                type enumeration {
                  enum "emergency" {
                    value 0;
                    description
                      "Match emergency conditions";
                  }
                  enum "alert" {
                    value 1;
                    description
                      "Match alert conditions";
                  }
                  enum "critical" {
                    value 2;
                    description
                      "Match critical conditions";
                  }
                  enum "error" {
                    value 3;
                    description
                      "Match error conditions";
                  }
                  enum "warning" {
                    value 4;
                    description
                      "Match warning messages";
                  }
                  enum "notice" {
                    value 5;
                    description
                      "Match notice level messages";
                  }
                  enum "info" {
                    value 6;
                    description
                      "Match informational messages";
                  }
                  enum "debug" {
                    value 7;
                    description
                      "Match debug messages";
                  }
                  enum "all" {
                    value 8;
                    description
                      "Match all levels";
                  }
                }
                default "info";
                description
                  "Set level of tracing";
              }
            }  // container traceoptions
    
            leaf control-link-recovery {
              type empty;
              description
                "Enable automatic control link recovery";
            }
    
            leaf health-monitoring {
              type empty;
              description
                "Enable ha health monitoring";
            }
    
            leaf reth-count {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16;
              }
              description
                "Number of redundant ethernet interfaces";
            }
    
            container control-interface {
              description
                "Disable/enable HA control-link interface";
              uses apply-advanced;
    
              list node {
                key "name";
                ordered-by user;
                description
                  "Set node specific parameters";
                leaf name {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 1";
                    }
                  }
                  description "Node identifier";
                }
    
                leaf disable {
                  type empty;
                  description
                    "Disable HA control interface";
                }
              }  // list node
            }  // container control-interface
    
            list control-ports {
              key "fpc port";
              ordered-by user;
              description
                "Enable specific chassis cluster control ports";
              leaf fpc {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32;
                }
                description "FPC slot number";
              }
    
              leaf port {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 2";
                  }
                }
                description "Port number";
              }
            }  // list control-ports
    
            leaf heartbeat-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32;
              }
              units "milliseconds";
              default "1000";
              description
                "Interval between successive heartbeats";
            }
    
            leaf heartbeat-threshold {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32;
              }
              default "3";
              description
                "Number of consecutive missed heartbeats to indicate device failure";
            }
    
            container network-management {
              description
                "Define parameters for network management";
              uses apply-advanced;
    
              leaf cluster-master {
                type empty;
                description
                  "Enable in-band management on cluster-master";
              }
            }  // container network-management
    
            list node {
              key "name";
              ordered-by user;
              status deprecated;
              description
                "Set the list of nodes in the cluster";
              leaf name {
                type enumeration {
                  enum "0" {
                    value 0;
                    description
                      "Node identifier 0";
                  }
                  enum "1" {
                    value 1;
                    description
                      "Node identifier 1";
                  }
                }
                description "Node identifier";
              }
    
              uses apply-advanced;
            }  // list node
    
            list redundancy-group {
              key "name";
              ordered-by user;
              description
                "Set redundancy-group parameters";
              leaf name {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8;
                }
                description
                  "Redundancy-group number";
              }
    
              uses apply-advanced;
    
              list node {
                key "name";
                ordered-by user;
                description
                  "Set node specific parameters";
                leaf name {
                  type enumeration {
                    enum "0" {
                      value 0;
                      description
                        "Node identifier 0";
                    }
                    enum "1" {
                      value 1;
                      description
                        "Node identifier 1";
                    }
                  }
                  description "Node identifier";
                }
    
                leaf priority {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint8 {
                      range "1 .. 254";
                    }
                  }
                  description
                    "Priority of the node in the redundancy-group";
                }
              }  // list node
    
              container preempt {
                presence "enable preempt";
                description
                  "Allow preemption of primaryship based on priority";
                uses apply-advanced;
    
                leaf delay {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 21600";
                    }
                  }
                  units "seconds";
                  description
                    "Time to wait before taking over mastership";
                }
    
                leaf limit {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 50";
                    }
                  }
                  description
                    "Max number of preemptive failovers allowed";
                }
    
                leaf period {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 1400";
                    }
                  }
                  units "seconds";
                  description
                    "Time period during which the limit is applied";
                }
              }  // container preempt
    
              leaf gratuitous-arp-count {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "1 .. 16";
                  }
                }
                description
                  "Number of gratuitous ARPs to send on an active interface after failover";
              }
    
              leaf hold-down-interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "0 .. 1800";
                  }
                }
                units "seconds";
                description
                  "RG failover interval. RG0(300-1800) RG1+(0-1800)";
              }
    
              list interface-monitor {
                key "name";
                ordered-by user;
                description
                  "Define interfaces to monitor";
                leaf name {
                  junos:must "("interfaces $$")";
                  junos:must-message "Interface must be defined before configuring monitoring";
                  type union {
                    type jt:interface-device;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description
                    "Name of the interface to monitor";
                }
    
                leaf weight {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "0 .. 255";
                    }
                  }
                  description
                    "Weight assigned to this interface that influences failover";
                }
              }  // list interface-monitor
    
              container ip-monitoring {
                description
                  "Define parameters for IP monitoring feature";
                uses apply-advanced;
    
                leaf global-weight {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "0 .. 255";
                    }
                  }
                  default "255";
                  description
                    "Define global weight for IP monitoring";
                }
    
                leaf global-threshold {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "0 .. 255";
                    }
                  }
                  default "0";
                  description
                    "Define global threshold for IP monitoring";
                }
    
                leaf retry-interval {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 30";
                    }
                  }
                  default "1";
                  description
                    "Define the time interval in seconds between retries.";
                }
    
                leaf retry-count {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "5 .. 15";
                    }
                  }
                  default "5";
                  description
                    "Number of retries needed to declare reachablity failure";
                }
    
                container family {
                  description
                    "Define protocol family";
                  uses apply-advanced;
    
                  container inet {
                    description
                      "Define IPv4 related parameters";
                    uses apply-advanced;
    
                    list address {
                      key "name";
                      description
                        "Define IP address related parameters";
                      uses ip-monitoring-address-type;
                    }  // list address
                  }  // container inet
                }  // container family
              }  // container ip-monitoring
            }  // list redundancy-group
    
            container configuration-synchronize {
              description
                "Cluster configuration action";
              uses apply-advanced;
    
              leaf no-secondary-bootup-auto {
                type empty;
                description
                  "Disable auto configuration synchronize on secondary bootup";
              }
            }  // container configuration-synchronize
    
            leaf use-actual-mac-on-physical-interfaces {
              type empty;
              description
                "Use Hypervisor provided MAC for physical interfaces on virtual platforms";
            }
    
            leaf use-active-child-mac-on-reth {
              type empty;
              description
                "Copy Child's physical MAC on RETH parent's current MAC";
            }
          }  // container cluster
    
          container high-availability {
            presence "enable high-availability";
            description
              "Enable High Availability mode";
            uses apply-advanced;
    
            container local-id {
              description "Local Identifier";
              leaf id {
                junos:must "(!("chassis high-availability peer-id $$"))";
                junos:must-message "high-availability local-id must be different with peer-id";
                junos:must "("chassis high-availability peer-id")";
                junos:must-message "high-availability peer-id must be defined";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "1 .. 10";
                  }
                }
                description
                  "Local identifier number";
              }
    
              leaf local-ip {
                type jt:ipaddr;
                description
                  "Local IPv4/IPv6 address";
              }
            }  // container local-id
    
            list peer-id {
              key "name";
              ordered-by user;
              description
                "Peer related information";
              leaf name {
                junos:must "(!("chassis high-availability local-id $$"))";
                junos:must-message "high-availability local-id must be different with peer-id";
                junos:must "("chassis high-availability local-id")";
                junos:must-message "high-availability local-id must be defined";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "1 .. 10";
                  }
                }
                description "Peer Identifier";
              }
    
              uses apply-advanced;
    
              leaf desc {
                type string {
                  length "1 .. 255";
                }
                description "Peer Description";
              }
    
              leaf peer-ip {
                type jt:ipaddr;
                description
                  "Peer IPv4/IPv6 address";
              }
    
              leaf interface {
                junos:must "(!(("protocols l2-learning global-mode switching" && "interfaces $$ family ethernet-switching")))";
                junos:must-message "Referenced interface must not be ethernet-switching interface of switching mode";
                type union {
                  type jt:interface-name;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Name of the interface";
              }
    
              leaf routing-instance {
                junos:must "("routing-instances $$ instance-type virtual-router")";
                junos:must-message "'instance-type' for the referenced routing-instance must be configured as virtual-router";
                junos:must "(("routing-instances $$" || any "tenants <*> routing-instances $$"))";
                junos:must-message "referenced routing-instance must be defined";
                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 to locate the peer route";
              }
    
              leaf vpn-profile {
                junos:must "("security ipsec vpn $$ ha-link-encryption")";
                junos:must-message "Referenced vpn object must have ha-link-encryption flag defined";
                junos:must "("security ipsec vpn $$")";
                junos:must-message "Referenced vpn object must be defined under [edit security ipsec vpn]";
                type string {
                  length "1 .. 255";
                }
                description
                  "VPN Profile name for HA link Encryption";
              }
    
              container liveness-detection {
                presence
                  "enable liveness-detection";
                description
                  "Bidirectional Forwarding Detection options for the peer";
                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 "1 .. 255000";
                    }
                  }
                  units "milliseconds";
                  description
                    "Minimum transmit and receive interval";
                }
    
                leaf minimum-transmit-interval {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 255000";
                    }
                  }
                  units "milliseconds";
                  status deprecated;
                  description
                    "Minimum transmit interval";
                }
    
                leaf minimum-receive-interval {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 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 "1 .. 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
              }  // container liveness-detection
            }  // list peer-id
    
            container traceoptions {
              description
                "Set chassis l3-ha 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
    
              list flag {
                key "name";
                ordered-by user;
                description "Tracing parameters";
                leaf name {
                  type enumeration {
                    enum "cli" {
                      value 0;
                      description
                        "Trace CLI events";
                    }
                    enum "configuration" {
                      value 1;
                      description
                        "Trace configuration events";
                    }
                    enum "eventlib" {
                      value 2;
                      description
                        "Trace event library events";
                    }
                    enum "fsm" {
                      value 3;
                      description
                        "Trace finite state machine events";
                    }
                    enum "heartbeat" {
                      value 4;
                      description
                        "Trace JSRPD heartbeats";
                    }
                    enum "interface" {
                      value 5;
                      description
                        "Trace interface related events";
                    }
                    enum "routing-socket" {
                      value 6;
                      description
                        "Trace routing socket events";
                    }
                    enum "uspipc" {
                      value 7;
                      description
                        "Trace USP IPC events";
                    }
                    enum "init" {
                      value 8;
                      description
                        "Trace initialization events";
                    }
                    enum "socket" {
                      value 9;
                      description
                        "Trace socket events";
                    }
                    enum "snmp" {
                      value 10;
                      description
                        "Trace snmp events";
                    }
                    enum "ip-monitoring" {
                      value 11;
                      description
                        "Trace IP monitoring events";
                    }
                    enum "hw-monitoring" {
                      value 12;
                      description
                        "Trace HW  monitoring events";
                    }
                    enum "fabric-monitoring" {
                      value 13;
                      description
                        "Trace fabric monitoring events";
                    }
                    enum "health-monitoring" {
                      value 14;
                      description
                        "Trace health monitoring events";
                    }
                    enum "schedule-monitoring" {
                      value 15;
                      description
                        "Trace schedule monitoring events";
                    }
                    enum "heartbeat-tlv" {
                      value 16;
                      description
                        "Trace TLV based heart-beat";
                    }
                    enum "ha-peer" {
                      value 17;
                      description
                        "Trace HA peer related info";
                    }
                    enum "srg" {
                      value 18;
                      description
                        "Trace HA srg related info";
                    }
                    enum "all" {
                      value 19;
                      description
                        "Trace all events";
                    }
                  }
                }
              }  // list flag
    
              leaf level {
                type enumeration {
                  enum "emergency" {
                    value 0;
                    description
                      "Match emergency conditions";
                  }
                  enum "alert" {
                    value 1;
                    description
                      "Match alert conditions";
                  }
                  enum "critical" {
                    value 2;
                    description
                      "Match critical conditions";
                  }
                  enum "error" {
                    value 3;
                    description
                      "Match error conditions";
                  }
                  enum "warning" {
                    value 4;
                    description
                      "Match warning messages";
                  }
                  enum "notice" {
                    value 5;
                    description
                      "Match notice level messages";
                  }
                  enum "info" {
                    value 6;
                    description
                      "Match informational messages";
                  }
                  enum "debug" {
                    value 7;
                    description
                      "Match debug messages";
                  }
                  enum "all" {
                    value 8;
                    description
                      "Match all levels";
                  }
                }
                default "info";
                description
                  "Set level of tracing";
              }
            }  // container traceoptions
    
            list services-redundancy-group {
              key "name";
              ordered-by user;
              description
                "Define the services level failover domain";
              leaf name {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "0 .. 256";
                  }
                }
                description
                  "Services redundancy group identifier";
              }
    
              uses apply-advanced;
    
              list shutdown-on-failure {
                key "name";
                ordered-by user;
                description
                  "Interfaces to be shut down in case of internal failures";
                leaf name {
                  type union {
                    type jt:interface-device;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description
                    "Name of the interface";
                }
    
                uses apply-advanced;
              }  // list shutdown-on-failure
    
              container peer-id {
                presence "enable peer-id";
                description
                  "Peer related information";
                uses apply-advanced;
    
                leaf id {
                  junos:must "("chassis high-availability peer-id $$")";
                  junos:must-message "above peer-id should be configured at chassis high-availability stanza";
                  junos:must "("chassis high-availability peer-id")";
                  junos:must-message "high-availability peer-id must be defined";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint8 {
                      range "1 .. 10";
                    }
                  }
                  description "Peer Identifier";
                }
              }  // container peer-id
    
              container floating-ip {
                description
                  "Designated floating IP for activeness probe";
                uses apply-advanced;
    
                leaf ip-address {
                  type jt:ipv4addr;
                  description "IPv4 address";
                }
              }  // container floating-ip
    
              container activeness-probe {
                description
                  "The probe destination IP for activeness determination";
                uses apply-advanced;
    
                container dest-ip {
                  description
                    "Destination IPV4 address";
                  uses apply-advanced;
    
                  leaf ip-address {
                    type jt:ipv4addr;
                    description
                      "Destination IPV4 address";
                  }
    
                  leaf routing-instance {
                    junos:must "("routing-instances $$ instance-type virtual-router")";
                    junos:must-message "'instance-type' for the referenced routing-instance must be configured as virtual-router";
                    junos:must "(("routing-instances $$" || any "tenants <*> routing-instances $$"))";
                    junos:must-message "referenced routing-instance must be defined";
                    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 dest-ip
              }  // container activeness-probe
    
              container monitor {
                description
                  "Configure the BFD and IP monitoring";
                uses apply-advanced;
    
                list ip {
                  key "name";
                  ordered-by user;
                  description
                    "Destination IPV4 address for monitoring";
                  leaf name {
                    type jt:ipv4addr;
                    description
                      "Destination IPV4 address";
                  }
    
                  uses apply-advanced;
    
                  leaf routing-instance {
                    junos:must "("routing-instances $$ instance-type virtual-router")";
                    junos:must-message "'instance-type' for the referenced routing-instance must be configured as virtual-router";
                    junos:must "(("routing-instances $$" || any "tenants <*> routing-instances $$"))";
                    junos:must-message "referenced routing-instance must be defined";
                    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 to locate the destination route";
                  }
                }  // list ip
    
                list bfd-liveliness {
                  key "name";
                  ordered-by user;
                  description
                    "Configure BFD monitoring";
                  leaf name {
                    type jt:ipv4addr;
                    description
                      "Destination IPV4 address for BFD monitoring";
                  }
    
                  uses apply-advanced;
    
                  leaf src-ip {
                    type jt:ipv4addr;
                    description
                      "Source IPV4 address for BFD monitoring";
                  }
    
                  leaf routing-instance {
                    junos:must "("routing-instances $$ instance-type virtual-router")";
                    junos:must-message "'instance-type' for the referenced routing-instance must be configured as virtual-router";
                    junos:must "(("routing-instances $$" || any "tenants <*> routing-instances $$"))";
                    junos:must-message "referenced routing-instance must be defined";
                    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 to locate the route";
                  }
    
                  leaf session-type {
                    type enumeration {
                      enum "singlehop" {
                        junos:must "(".. interface")";
                        junos:must-message "Interface should be mentioned for singlehop bfd monitoring sessions";
                        value 0;
                        description "Single hop";
                      }
                      enum "multihop" {
                        value 1;
                        description "Multihop";
                      }
                    }
                    description
                      "BFD Mon Session Type";
                  }
    
                  leaf interface {
                    junos:must "("interfaces $$-IFL family inet")";
                    junos:must-message "Family inet must be defined on this logical interface";
                    junos:must "(!(".. session-type multihop"))";
                    junos:must-message "Interface name not allowed for multihop bfd monitoring sessions";
                    junos:must "(!(("protocols l2-learning global-mode switching" && "interfaces $$ family ethernet-switching")))";
                    junos:must-message "Referenced interface must not be ethernet-switching interface of switching mode";
                    type union {
                      type jt:interface-name;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description
                      "Name of the interface for single-hop sessions";
                  }
                }  // list bfd-liveliness
              }  // container monitor
    
              container active-signal-route {
                description
                  "Configure the active signal route";
                uses apply-advanced;
    
                leaf ip-address {
                  type jt:ipv4addr;
                  description
                    "Active IPv4 address";
                }
    
                leaf routing-instance {
                  junos:must "("routing-instances $$ instance-type virtual-router")";
                  junos:must-message "'instance-type' for the referenced routing-instance must be configured as virtual-router";
                  junos:must "(("routing-instances $$" || any "tenants <*> routing-instances $$"))";
                  junos:must-message "referenced routing-instance must be defined";
                  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 to install the active signal route";
                }
              }  // container active-signal-route
    
              container backup-signal-route {
                description
                  "Configure the backup signal route";
                uses apply-advanced;
    
                leaf ip-address {
                  type jt:ipv4addr;
                  description
                    "Backup IPv4 address";
                }
    
                leaf routing-instance {
                  junos:must "("routing-instances $$ instance-type virtual-router")";
                  junos:must-message "'instance-type' for the referenced routing-instance must be configured as virtual-router";
                  junos:must "(("routing-instances $$" || any "tenants <*> routing-instances $$"))";
                  junos:must-message "referenced routing-instance must be defined";
                  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 to install the backup signal route";
                }
              }  // container backup-signal-route
    
              leaf process-packet-on-backup {
                type empty;
                description
                  "Enable PFE to process packets on backup node";
              }
    
              leaf activeness-priority {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "1 .. 254";
                  }
                }
                description
                  "Activeness Priority of the node for this SRG";
              }
            }  // list services-redundancy-group
          }  // container high-availability
    
          list node {
            key "name";
            description
              "Set node specific parameters";
            leaf name {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 1";
                }
              }
              description "Node identifier";
            }
    
            uses apply-advanced;
    
            list fpc {
              junos:must "((!(any ". <*> vpn-localization") || !("virtual-chassis")))";
              junos:must-message "vpn-localization cannot be configured on virtual-chassis";
              key "name";
              description
                "Flexible PIC Concentrator parameters";
              uses chassis_fpc_type;
            }  // list fpc
          }  // list node
        }  // grouping chassis_type
    
        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 chassis-pw-type {
          uses apply-advanced;
    
          leaf device-count {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 18000";
              }
            }
            description
              "Number of pseudo-wire ps devices";
          }
        }  // grouping chassis-pw-type
    
        grouping chassis_agg_dev_type {
          uses apply-advanced;
    
          container ethernet {
            description
              "Aggregated device options for Ethernet";
            uses chassisd_agg_enet_type;
          }  // container ethernet
    
          container sonet {
            description
              "Aggregated device options for SONET";
            uses chassisd_agg_pos_type;
          }  // container sonet
    
          leaf maximum-links {
            type union {
              type int32;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description
              "Maximum links limit for aggregated devices (16, 32, or 64)";
          }
        }  // grouping chassis_agg_dev_type
    
        grouping chassis_alarm_type {
          uses apply-advanced;
    
          container management-ethernet {
            description
              "Management Ethernet alarms";
            uses chassis_alarm_ethernet_type;
          }  // container management-ethernet
    
          container otn-odu {
            description "OTN ODU alarms";
            uses chassis_alarm_otn_odu_type;
          }  // container otn-odu
    
          container otn-otu {
            description "OTN OTU alarms";
            uses chassis_alarm_otn_otu_type;
          }  // container otn-otu
    
          container t3 {
            description "DS3 alarms";
            uses chassis_alarm_ds3_type;
          }  // container t3
    
          container ds1 {
            description "DS1 alarms";
            uses chassis_alarm_ds1_type;
          }  // container ds1
    
          container ethernet {
            description "Ethernet alarms";
            uses chassis_alarm_ethernet_type;
          }  // container ethernet
    
          container l2-chan-err-ethernet {
            description
              "L2 channel error ethernet alarms";
            uses chassis_alarm_l2_chan_err_type;
          }  // container l2-chan-err-ethernet
    
          container integrated-services {
            description
              "Integrated services alarms";
            uses chassis_alarm_integrated_services_type;
          }  // container integrated-services
    
          container services {
            description "Services PIC alarms";
            uses chassis_alarm_services_type;
          }  // container services
    
          container serial {
            description "Serial alarms";
            uses chassis_alarm_serial_type;
          }  // container serial
    
          container fibre-channel {
            description "Fibre Channel alarms";
            uses chassis_alarm_fibre-channel_type;
          }  // container fibre-channel
    
          leaf pem-absence {
            type enumeration {
              enum "ignore" {
                value 0;
                description
                  "Ignore the power supply module absence alarm";
              }
            }
            description
              "Power supply module absence";
          }
        }  // grouping chassis_alarm_type
    
        grouping chassis_alarm_ds1_type {
          uses apply-advanced;
    
          leaf ais {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description "Alarm indicator signal";
          }
    
          leaf ylw {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description "Yellow alarm";
          }
        }  // grouping chassis_alarm_ds1_type
    
        grouping chassis_alarm_ds3_type {
          uses apply-advanced;
    
          leaf ais {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description "Alarm indicator signal";
          }
    
          leaf exz {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description "Excessive zeros";
          }
    
          leaf ferf {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description "Far-end failure";
          }
    
          leaf idle {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description "Idle alarm";
          }
    
          leaf lcv {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description "Line code violation";
          }
    
          leaf lof {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description "Loss of frame";
          }
    
          leaf los {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description "Loss of signal";
          }
    
          leaf pll {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description
              "Phase-locked loop out of lock";
          }
    
          leaf ylw {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description "Yellow alarm";
          }
        }  // grouping chassis_alarm_ds3_type
    
        grouping chassis_alarm_ethernet_type {
          uses apply-advanced;
    
          leaf link-down {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description "Link has gone down";
          }
        }  // grouping chassis_alarm_ethernet_type
    
        grouping chassis_alarm_fibre-channel_type {
          uses apply-advanced;
    
          leaf link-down {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description "Link has gone down";
          }
        }  // grouping chassis_alarm_fibre-channel_type
    
        grouping chassis_alarm_integrated_services_type {
          uses apply-advanced;
    
          leaf failure {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description
              "Integrated Services failure";
          }
        }  // grouping chassis_alarm_integrated_services_type
    
        grouping chassis_alarm_l2_chan_err_type {
          uses apply-advanced;
    
          leaf l2-channel-errors {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description
              "Received L2 channel error";
          }
    
          leaf l2-channel-error-threshold {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 4294967295";
              }
            }
            description
              "L2 channel error threshold - 50,000 as default";
          }
        }  // grouping chassis_alarm_l2_chan_err_type
    
        grouping chassis_alarm_otn_odu_type {
          uses apply-advanced;
    
          leaf odu-bdi {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description
              "ODU backward-defect-indicator, ODU-BDI failure";
          }
    
          leaf odu-ttim {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description
              "ODU trail-trace-identifier-mismatch, ODU-TTIM failure";
          }
    
          leaf odu-ptim {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description
              "ODU payload-type-mismatch, ODU-PTIM failure";
          }
        }  // grouping chassis_alarm_otn_odu_type
    
        grouping chassis_alarm_otn_otu_type {
          uses apply-advanced;
    
          leaf oc-los {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description
              "Loss of signal, LOS failure";
          }
    
          leaf oc-lof {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description
              "Loss of framing, LOF failure";
          }
    
          leaf oc-lom {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description
              "Loss of multiframe, LOM failure";
          }
    
          leaf wavelength-lock {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description "Wavelength lock alarm";
          }
    
          leaf otu-bdi {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description
              "OTU backward-defect-indicator, OTU-BDI failure";
          }
    
          leaf otu-iae {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description
              "OTU incoming-alignment-error, OTU-IAE failure";
          }
    
          leaf otu-ttim {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description
              "OTU trail-trace-identifier-mismatch, OTU-TTIM failure";
          }
    
          leaf otu-fec-excessive-errs {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description
              "OTU fec-excessive-errors, OTU-FEC_EXE failure";
          }
        }  // grouping chassis_alarm_otn_otu_type
    
        grouping chassis_alarm_serial_type {
          uses apply-advanced;
    
          leaf loss-of-rx-clock {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description "RX clock absent";
          }
    
          leaf loss-of-tx-clock {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description "TX clock absent";
          }
    
          leaf dcd-absent {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description "DCD signal absent";
          }
    
          leaf cts-absent {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description "CTS signal absent";
          }
    
          leaf dsr-absent {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description "DSR signal absent";
          }
    
          leaf tm-absent {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description "TM signal absent";
          }
        }  // grouping chassis_alarm_serial_type
    
        grouping chassis_alarm_services_type {
          uses apply-advanced;
    
          leaf pic-reset {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description "Services PIC reset";
          }
    
          leaf pic-hold-reset {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description
              "Services PIC held in reset";
          }
    
          leaf linkdown {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description "Services PIC linkdown";
          }
    
          leaf rx-errors {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description
              "Services PIC excessive rx errors";
          }
    
          leaf tx-errors {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description
              "Services PIC excessive tx errors";
          }
    
          leaf sw-down {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description
              "Services PIC software problem";
          }
    
          leaf hw-down {
            type enumeration {
              enum "red" {
                value 0;
                description
                  "Assert red system alarm";
              }
              enum "yellow" {
                value 1;
                description
                  "Assert yellow system alarm";
              }
              enum "ignore" {
                value 2;
                description
                  "Do not assert any alarm signals";
              }
            }
            description
              "Services PIC hardware problem";
          }
        }  // grouping chassis_alarm_services_type
    
        grouping chassis_fabric_type {
          uses apply-advanced;
    
          container event {
            description "Fabric events";
            uses apply-advanced;
    
            container link-failure {
              presence "enable link-failure";
              description "Fabric link failure";
              uses apply-advanced;
    
              container action {
                presence "enable action";
                description
                  "Fabric action to be taken";
                uses apply-advanced;
              }  // container action
            }  // container link-failure
          }  // container event
    
          container oam {
            description
              "Fabric OAM configuration";
            uses apply-advanced;
          }  // container oam
    
          container degraded {
            presence "enable degraded";
            description
              "Degraded fabric configuration";
            uses apply-advanced;
    
            leaf action-fpc-restart-disable {
              type empty;
              description
                "Limit degraded fabric actions to Plane restart only";
            }
          }  // container degraded
    
          container redundancy-mode {
            description "Fabric redundancy mode";
            uses apply-advanced;
    
            choice mode {
              leaf redundant {
                type empty;
                description
                  "Fabric is configured in redundant mode";
              }
              leaf increased-bandwidth {
                type empty;
                description
                  "Fabric is configured in increased bandwidth mode";
              }
            }  // choice mode
          }  // container redundancy-mode
        }  // grouping chassis_fabric_type
    
        grouping chassis_feb_type {
          uses apply-advanced;
    
          container sanity-poll {
            description
              "FPC register sanity poll";
            uses apply-advanced;
    
            leaf retry-count {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 30";
                }
              }
              default "10";
              description
                "Number of retries before reporting error";
            }
    
            container on-error {
              description
                "Actions to be taken if inconsistencies are detected";
              uses apply-advanced;
    
              leaf raise-alarm {
                type empty;
                description
                  "Raise emergency alarm";
              }
    
              leaf power {
                type enumeration {
                  enum "cycle" {
                    value 0;
                    description
                      "Write coredump and reboot FPC";
                  }
                  enum "off" {
                    value 1;
                    description
                      "Power down FPC indefinitely";
                  }
                }
                description
                  "Power cycle or power off FPC";
              }
    
              leaf write-coredump {
                type empty;
                description
                  "Write coredump and continue";
              }
            }  // container on-error
          }  // container sanity-poll
        }  // grouping chassis_feb_type
    
        grouping chassis_fpc_error_type {
          description "Chassis Fpc Error level";
          uses apply-advanced;
    
          container fatal {
            description
              "FPC Fatal errors (default threshold = 1)";
            uses chassis_fpc_error_level_major_fatal;
          }  // container fatal
    
          container major {
            description
              "FPC Major Level errors (default threshold = 1)";
            uses chassis_fpc_error_level_major_fatal;
          }  // container major
    
          container minor {
            description
              "FPC Minor Level errors (default threshold = 10)";
            uses chassis_fpc_error_level_minor;
          }  // container minor
        }  // grouping chassis_fpc_error_type
    
        grouping chassis_fpc_error_level_major_fatal {
          uses apply-advanced;
    
          leaf threshold {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 1024";
              }
            }
            description
              "Error count at which to take the action";
          }
    
          list action {
            key "name";
            ordered-by user;
            description
              "Configure the action for this level";
            leaf name {
              type enumeration {
                enum "reset" {
                  junos:must "(!(".. .. action offline"))";
                  junos:must-message "'reset' and 'offline' cannot be both configured";
                  value 0;
                  description "Reset FPC";
                }
                enum "offline" {
                  junos:must "(!(".. .. action reset"))";
                  junos:must-message "'offline' and 'reset' cannot be both configured";
                  value 1;
                  description "Offline FPC";
                }
                enum "alarm" {
                  value 2;
                  description "Raise FPC alarm";
                }
                enum "get-state" {
                  value 3;
                  description
                    "Retreive FPC state for debugging";
                }
                enum "log" {
                  value 4;
                  description
                    "Log occurence to system log file";
                }
                enum "disable-pfe" {
                  value 5;
                  description
                    "Disable PFE interfaces on FPC";
                }
                enum "reset-pfe" {
                  junos:must "(!(".. .. action offline-pfe"))";
                  junos:must-message "'reset-pfe' and 'offline-pfe' cannot be both configured";
                  junos:must "(!(".. .. action disable-pfe"))";
                  junos:must-message "'reset-pfe' and 'disable-pfe' cannot be both configured";
                  value 6;
                  description "Reset PFE on FPC";
                }
                enum "offline-pic" {
                  value 7;
                  description
                    "Offline PICs associated with PFE on FPC";
                }
                enum "trap" {
                  value 8;
                  description "Raise FPC trap";
                }
              }
            }
    
            uses apply-advanced;
          }  // list action
        }  // grouping chassis_fpc_error_level_major_fatal
    
        grouping chassis_fpc_error_level_minor {
          uses apply-advanced;
    
          leaf threshold {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 1024";
              }
            }
            description
              "Error count at which to take the action";
          }
    
          list action {
            key "name";
            ordered-by user;
            description
              "Configure the action for this level";
            leaf name {
              type enumeration {
                enum "reset" {
                  junos:must "(!(".. .. action offline"))";
                  junos:must-message "'reset' and 'offline' cannot be both configured";
                  value 0;
                  description "Reset FPC";
                }
                enum "offline" {
                  junos:must "(!(".. .. action reset"))";
                  junos:must-message "'offline' and 'reset' cannot be both configured";
                  value 1;
                  description "Offline FPC";
                }
                enum "alarm" {
                  value 2;
                  description "Raise FPC alarm";
                }
                enum "get-state" {
                  value 3;
                  description
                    "Retreive FPC state for debugging";
                }
                enum "log" {
                  value 4;
                  description
                    "Log occurence to system log file";
                }
                enum "disable-pfe" {
                  value 5;
                  description
                    "Disable PFE interfaces on FPC";
                }
                enum "reset-pfe" {
                  junos:must "(!(".. .. action offline-pfe"))";
                  junos:must-message "'reset-pfe' and 'offline-pfe' cannot be both configured";
                  junos:must "(!(".. .. action disable-pfe"))";
                  junos:must-message "'reset-pfe' and 'disable-pfe' cannot be both configured";
                  value 6;
                  description "Reset PFE on FPC";
                }
                enum "offline-pic" {
                  value 7;
                  description
                    "Offline PICs associated with PFE on FPC";
                }
                enum "trap" {
                  value 8;
                  description "Raise FPC trap";
                }
              }
            }
    
            uses apply-advanced;
          }  // list action
        }  // grouping chassis_fpc_error_level_minor
    
        grouping chassis_fpc_type {
          leaf name {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32;
            }
            description "FPC slot number";
          }
    
          uses apply-advanced;
    
          container auto-speed-detection {
            description
              "Disables auto-speed detection";
            uses apply-advanced;
    
            choice auto-speed-detections {
              leaf disable {
                type empty;
                description
                  "Disables automatic speed detection";
              }
            }  // choice auto-speed-detections
          }  // container auto-speed-detection
    
          container forwarding-options {
            description
              "Configure options to control packet forwarding";
            uses apply-advanced;
    
            choice uft_object {
              container l2-profile-one {
                presence "enable l2-profile-one";
                description
                  "MAC: 288K L3-host: 16K LPM: 16K EM:0, needs reboot for VC; restarts PFE if standalone";
                uses apply-advanced;
    
                leaf num-65-127-prefix {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type int32 {
                      range "0 .. 4";
                    }
                  }
                  default "1";
                  description
                    "IPV6 prefixes > 64, in multiples of 1K e.g 3 = 3x1K entries(default 1)";
                }
              }  // container l2-profile-one
              container l2-profile-two {
                presence "enable l2-profile-two";
                description
                  "MAC: 224K L3-host: 80K LPM: 16K EM:0, needs reboot for VC; restarts PFE if standalone";
                uses apply-advanced;
    
                leaf num-65-127-prefix {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type int32 {
                      range "0 .. 4";
                    }
                  }
                  default "1";
                  description
                    "IPV6 prefixes > 64, in multiples of 1K e.g 3 = 3x1K entries(default 1)";
                }
              }  // container l2-profile-two
              container l2-profile-three {
                presence
                  "enable l2-profile-three";
                description
                  "(default) MAC: 160K L3-host: 144K LPM: 16K, needs reboot for VC;restarts PFE if standalone";
                uses apply-advanced;
    
                leaf num-65-127-prefix {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type int32 {
                      range "0 .. 4";
                    }
                  }
                  default "1";
                  description
                    "IPV6 prefixes > 64, in multiples of 1K e.g 3 = 3x1K entries(default 1)";
                }
              }  // container l2-profile-three
              container l3-profile {
                presence "enable l3-profile";
                description
                  "MAC: 96K L3-host: 208K LPM: 16K EM:0, needs reboot for VC; restarts PFE if standalone";
                uses apply-advanced;
    
                leaf num-65-127-prefix {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type int32 {
                      range "0 .. 4";
                    }
                  }
                  default "1";
                  description
                    "IPV6 prefixes > 64, in multiples of 1K e.g 3 = 3x1K entries(default 1)";
                }
              }  // container l3-profile
              container lpm-profile {
                presence "enable lpm-profile";
                description
                  "MAC: 32K L3-host: 16K LPM: 128K EM:0, needs reboot for VC; restarts PFE if standalone";
                uses apply-advanced;
    
                leaf prefix-65-127-disable {
                  type empty;
                  description
                    "Disable IPV6 prefixes with length > 64";
                }
    
                leaf unicast-in-lpm {
                  type empty;
                  description
                    "Install unicast host entries in LPM table";
                }
              }  // container lpm-profile
              container exact-match-profile {
                presence
                  "enable exact-match-profile";
                description
                  "MAC: 8K L3-host: 8K LPM: 16K EM: 64K, needs reboot for VC; restarts PFE if standalone";
                uses apply-advanced;
    
                leaf num-65-127-prefix {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type int32 {
                      range "0 .. 4";
                    }
                  }
                  default "1";
                  description
                    "IPV6 prefixes > 64, in multiples of 1K e.g 3 = 3x1K entries(default 1)";
                }
              }  // container exact-match-profile
              container vxlan-gbp-profile {
                presence
                  "enable vxlan-gbp-profile";
                description
                  "MAC: 48K L3-host: 48K LPM: 16K EM:32K, needs reboot for VC; restarts PFE if standalone";
              }  // container vxlan-gbp-profile
              container custom-profile {
                description
                  "(Partition the shared banks, will automatically restart the PFE when configured)";
                uses apply-advanced;
    
                container l2-entries {
                  description
                    "Customize l2 entries needed";
                  uses apply-advanced;
    
                  leaf num-banks {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type int32 {
                        range "0 .. 4";
                      }
                    }
                    default "0";
                    description
                      "Number of banks needed for entries of this type";
                  }
                }  // container l2-entries
    
                container l3-entries {
                  description
                    "Customize l3 entries needed";
                  uses apply-advanced;
    
                  leaf num-banks {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type int32 {
                        range "0 .. 4";
                      }
                    }
                    default "0";
                    description
                      "Number of banks needed for entries of this type";
                  }
                }  // container l3-entries
    
                container exact-match-entries {
                  description
                    "Customize exact match entries needed";
                  uses apply-advanced;
    
                  leaf num-banks {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type int32 {
                        range "0 .. 4";
                      }
                    }
                    default "0";
                    description
                      "Number of banks needed for entries of this type";
                  }
                }  // container exact-match-entries
    
                container lpm-entries {
                  description
                    "Customize lpm banks needed";
                  uses apply-advanced;
    
                  leaf num-banks {
                    type enumeration {
                      enum "0" {
                        value 0;
                      }
                      enum "2" {
                        value 1;
                      }
                      enum "4" {
                        value 2;
                      }
                    }
                    default "0";
                    description
                      "Number of banks needed for entries of this type";
                  }
    
                  leaf prefix-65-127-disable {
                    type empty;
                    description
                      "Disable IPV6 prefixes with length > 64";
                  }
                }  // container lpm-entries
    
                leaf num-65-127-prefix {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type int32 {
                      range "0 .. 4";
                    }
                  }
                  default "1";
                  description
                    "IPV6 prefixes > 64, in multiples of 1K e.g 3 = 3x1K entries(default 1)";
                }
              }  // container custom-profile
            }  // choice uft_object
          }  // container forwarding-options
    
          list pic {
            key "name";
            description
              "Physical Interface Card number";
            uses chassis_pic_type;
          }  // list pic
    
          leaf power {
            type enumeration {
              enum "off" {
                value 0;
                description
                  "Do not provide power to FPCs";
              }
              enum "on" {
                value 1;
                description
                  "Provide power to FPCs";
              }
            }
            description "Power FPCs on or off";
          }
    
          choice mode {
            leaf disable-power {
              type empty;
              status deprecated;
              description
                "Do not provide power to the card";
            }
            leaf allow-sram-parity-errors {
              type empty;
              description
                "Do not power cycle FPC when SRAM parity errors occur";
            }
          }  // choice mode
    
          choice riot-mode {
            case case_1 {
            }  // case case_1
    
            case case_2 {
            }  // case case_2
          }  // choice riot-mode
    
          leaf services-offload {
            type empty;
            status deprecated;
            description
              "Enable services offload on fpc";
          }
    
          leaf cfp-to-et {
            type empty;
            description
              "Enable ET interface and remove CFP client";
          }
    
          leaf np-cache {
            type empty;
            status deprecated;
            description
              "Enable NP cache and services offload on fpc";
          }
    
          leaf np-cache-disable {
            type empty;
            description
              "Disable NP cache and services offload on fpc";
          }
    
          leaf offline {
            type empty;
            description "Keep FPC offline";
          }
    
          leaf offline-on-fabric-bandwidth-reduction {
            type empty;
            description
              "Bring FPC offline when running with reduced fabric bandwidth";
          }
    
          container fabric {
            presence "enable fabric";
            uses apply-advanced;
    
            leaf blackhole-action {
              type enumeration {
                enum "log-only" {
                  value 0;
                  description
                    "Log the detected blackhole condition";
                }
                enum "offline" {
                  value 1;
                  description "Offline the FPC";
                }
                enum "restart" {
                  value 2;
                  description "Restart the FPC";
                }
                enum "restart-then-offline" {
                  value 3;
                  description
                    "Restart the FPC and offline in subsequent action. ";
                }
              }
              description
                "Action taken upon fabric plane blackhole involving the FPC";
            }
    
            container bandwidth-degradation {
              description
                "Take FPC recovery action when FPC running with reduced fabric bandwidth";
              uses apply-advanced;
    
              leaf percentage {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 99";
                  }
                }
                description
                  "The percentage of PFE bandwidth degradation to trigger action";
              }
    
              leaf no-fabric-switchover {
                type empty;
                description
                  "Do not perform switchover to spare CB";
              }
    
              leaf action {
                type enumeration {
                  enum "log-only" {
                    value 0;
                    description
                      "Log the bandwidth degradation only";
                  }
                  enum "offline" {
                    value 1;
                    description
                      "Offline the FPC, default action";
                  }
                  enum "restart" {
                    value 2;
                    description
                      "Restart the FPC";
                  }
                  enum "restart-then-offline" {
                    value 3;
                    description
                      "Restart the FPC and offline in subsequent action";
                  }
                }
                description
                  "Type of action to trigger";
              }
            }  // container bandwidth-degradation
          }  // container fabric
    
          list port-mirror-instance {
            key "name";
            max-elements 2;
            ordered-by user;
            leaf name {
              junos:must "(!("forwarding-options port-mirroring instance $$ input-parameters-instance"))";
              junos:must-message "Derived instance cannot be binded";
              junos:must "(((!("chassis network-services lan") && ("forwarding-options port-mirroring instance $$" || "forwarding-options analyzer $$")) || "chassis network-services lan"))";
              junos:must-message "Referenced port-mirroring instance does not exist";
              type string {
                length "1 .. 64";
              }
              description
                "Associate a port mirroring instance with the FPC";
            }
    
            uses apply-advanced;
          }  // list port-mirror-instance
    
          list sampling-instance {
            key "name";
            max-elements 1;
            ordered-by user;
            leaf name {
              junos:must "("forwarding-options sampling instance $$")";
              junos:must-message "Referenced sampling instance does not exist";
              type string {
                length "1 .. 64";
              }
              description
                "Associate a sampling instance with the FPC";
            }
    
            uses apply-advanced;
          }  // list sampling-instance
    
          container inline-services {
            uses apply-advanced;
    
            leaf report-zero-oif-gw-on-discard {
              type empty;
              description
                "Jflow reports value zero in OIF and GW when traffic is not forwarded";
            }
    
            leaf flex-flow-sizing {
              junos:must "(!((".. flow-table-size ipv4-flow-table-size" || (".. flow-table-size ipv6-flow-table-size" || (".. flow-table-size vpls-flow-table-size" || (".. flow-table-size bridge-flow-table-size" || ".. flow-table-size mpls-flow-table-size"))))))";
              junos:must-message "flex-flow-sizing and flow-table-size are mutually exclusive";
              type empty;
              description
                "No fixed size allocation of flow tables for proto families";
            }
    
            leaf use-extended-flow-memory {
              type empty;
              description
                "Use extended memory for flow records";
            }
    
            container flow-table-size {
              uses apply-advanced;
    
              leaf ipv4-flow-table-size {
                junos:must "(!(".. .. flex-flow-sizing"))";
                junos:must-message "flex-flow-sizing and flow-table-size are mutually exclusive";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 245";
                  }
                }
                description
                  "IPv4 flow table size in units of 256k";
              }
    
              leaf ipv6-flow-table-size {
                junos:must "(!(".. .. flex-flow-sizing"))";
                junos:must-message "flex-flow-sizing and flow-table-size are mutually exclusive";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 245";
                  }
                }
                description
                  "IPv6 flow table size in units of 256k";
              }
    
              leaf vpls-flow-table-size {
                junos:must "(!(".. .. flex-flow-sizing"))";
                junos:must-message "flex-flow-sizing and flow-table-size are mutually exclusive";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 245";
                  }
                }
                status deprecated;
                description
                  "VPLS flow table size in units of 256k";
              }
    
              leaf bridge-flow-table-size {
                junos:must "(!(".. .. flex-flow-sizing"))";
                junos:must-message "flex-flow-sizing and flow-table-size are mutually exclusive";
                junos:must "(!(".. vpls-flow-table-size"))";
                junos:must-message "Both vpls-flow-table-size and bridge-flow-table-size can not be configured/allowed";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 245";
                  }
                }
                description
                  "BRIDGE flow table size in units of 256k";
              }
    
              leaf ipv6-extended-attrib {
                type empty;
                description
                  "Enable extended flow attribute";
              }
    
              leaf mpls-flow-table-size {
                junos:must "(!(".. .. flex-flow-sizing"))";
                junos:must-message "flex-flow-sizing and flow-table-size are mutually exclusive";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 245";
                  }
                }
                description
                  "MPLS flow table size in units of 256k";
              }
            }  // container flow-table-size
          }  // container inline-services
    
          container inline-video-monitoring {
            uses apply-advanced;
    
            leaf maximum-flows-count {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "16 .. 8192";
                }
              }
              status deprecated;
              description
                "Maximum number of inline video monitoring flows per PFE instance.";
            }
    
            leaf flow-table-size {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "16 .. 8192";
                }
              }
              description
                "Size of flow table size per PFE instance";
            }
          }  // container inline-video-monitoring
    
          container slamon-services {
            description
              "SLA monitoring services";
            uses apply-advanced;
          }  // container slamon-services
    
          list pfe {
            key "name";
            description
              "Packet forwarding engine parameters";
            uses chassis_pfe_type;
          }  // list pfe
    
          container error {
            description
              "Error level configuration for FPC";
            uses chassis_fpc_error_type;
          }  // container error
        }  // grouping chassis_fpc_type
    
        grouping chassis_pem_type {
          uses apply-advanced;
    
          leaf minimum {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32;
            }
            description
              "Minimum number of power supplies required for normal operation";
          }
    
          leaf input-current {
            type enumeration {
              enum "40" {
                junos:must "((!("chassis pem feeds") || "chassis pem feeds 6"))";
                junos:must-message "Must configured with 6 feeds";
                value 0;
                description
                  "40 Amps in each Feed";
              }
              enum "60" {
                value 1;
                description
                  "60 Amps in each Feed";
              }
            }
            default "60";
            description
              "Input current (Amps) in each feed ";
          }
        }  // grouping chassis_pem_type
    
        grouping chassis_pfe_type {
          description
            "PFE(Packet forwarding engine)";
          leaf name {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32;
            }
            description
              "PFE(Packet forwarding engine) identifier";
          }
    
          uses apply-advanced;
    
          container forwarding-packages {
            description
              "Associated forwarding package configuration";
            uses apply-advanced;
    
            container mobility {
              description
                "Mobility related PFE configuration";
              uses apply-advanced;
    
              choice package-type {
                leaf user-plane {
                  type empty;
                  description
                    "User plane function";
                }
              }  // choice package-type
            }  // container mobility
          }  // container forwarding-packages
    
          leaf power {
            type enumeration {
              enum "off" {
                value 0;
                description "Power off PFE";
              }
              enum "on" {
                value 1;
                description "Power on PFE";
              }
            }
            description "Power PFEs on or off";
          }
    
          leaf tunnel-services {
            type empty;
            description
              "Tunnel services configuration";
          }
        }  // grouping chassis_pfe_type
    
        grouping chassis_pic_type {
          leaf name {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32;
            }
            description "PIC slot number";
          }
    
          uses apply-advanced;
    
          leaf pic-mode {
            type enumeration {
              enum "1G" {
                value 0;
                description "1GE mode";
              }
              enum "10G" {
                value 1;
                description "10GE mode";
              }
              enum "25G" {
                value 2;
                description "25GE mode";
              }
              enum "40G" {
                value 3;
                description "40GE mode";
              }
              enum "50G" {
                value 4;
                description "50GE mode";
              }
              enum "100G" {
                value 5;
                description "100GE mode";
              }
              enum "400G" {
                value 6;
                description "400GE mode";
              }
            }
            description "PIC mode configuration";
          }
    
          choice adaptive-or-monitoring {
            case case_1 {
            }  // case case_1
            container monitoring-services {
              description
                "Monitoring services configuration";
              uses apply-advanced;
    
              leaf application {
                type enumeration {
                  enum "dynamic-flow-capture" {
                    value 0;
                    description
                      "Dynamic flow capture mode";
                  }
                  enum "flow-collector" {
                    value 1;
                    description
                      "Flow collector mode";
                  }
                  enum "monitor" {
                    value 2;
                    description "Monitor mode";
                  }
                }
                description "Application mode";
              }
            }  // container monitoring-services
          }  // choice adaptive-or-monitoring
    
          leaf framing {
            type enumeration {
              enum "sonet" {
                value 0;
                description "SONET mode";
              }
              enum "sdh" {
                value 1;
                description "SDH mode";
              }
              enum "t3" {
                value 2;
                description "T3 mode";
              }
              enum "e3" {
                value 3;
                description "E3 mode";
              }
              enum "t1" {
                value 4;
                description "T1 mode";
              }
              enum "e1" {
                value 5;
                description "E1 mode";
              }
              enum "lan" {
                value 6;
                description "LAN mode";
              }
            }
            description "Framing mode";
          }
    
          leaf vtmapping {
            type enumeration {
              enum "klm" {
                value 0;
                description "KLM mode";
              }
              enum "itu-t" {
                value 1;
                description "ITU-T mode";
              }
            }
            description
              "Virtual tunnel mapping mode";
          }
    
          leaf no-concatenate {
            type empty;
            description
              "Do not concatenate channels";
          }
    
          leaf no-multi-rate {
            type empty;
            description
              "Disable multi-rate mode";
          }
    
          leaf speed {
            type enumeration {
              enum "1G" {
                value 0;
                description
                  "1GE-Gigabit Ethernet";
              }
            }
            description "Port speed";
          }
    
          leaf aggregate-ports {
            type empty;
            description
              "Aggregate multiple ports on a PIC as a single port";
          }
    
          leaf number-of-ports {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32;
            }
            description
              "Number of physical ports to enable on PIC";
          }
    
          leaf power {
            type enumeration {
              enum "off" {
                value 0;
                description
                  "Do not provide power to PIC";
              }
            }
            description "Power off PIC";
          }
    
          leaf sparse-dlcis {
            type empty;
            description
              "Run in sparse data-link connection identifier mode";
          }
    
          container q-pic-large-buffer {
            presence "enable q-pic-large-buffer";
            description
              "Run in large delay buffer mode";
            uses apply-advanced;
    
            choice buffer-type {
              leaf small-scale {
                type empty;
                description
                  "Supports less number of interfaces";
              }
              leaf large-scale {
                type empty;
                description
                  "Supports large number of interfaces";
              }
            }  // choice buffer-type
          }  // container q-pic-large-buffer
    
          container red-buffer-occupancy {
            description
              "Computation type for RED buffer occupancy";
            uses apply-advanced;
    
            container weighted-averaged {
              presence
                "enable weighted-averaged";
              description
                "Weighted-average computation";
              uses apply-advanced;
    
              leaf instant-usage-weight-exponent {
                type union {
                  type uint8;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Weight for instant buffer usage (negative exponent of 2)";
              }
            }  // container weighted-averaged
          }  // container red-buffer-occupancy
    
          container traffic-manager {
            description
              "Configure traffic manager attributes";
            uses apply-advanced;
    
            leaf ingress-shaping-overhead {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type int32 {
                  range "-62 .. 192";
                }
              }
              units "bytes";
              description
                "Number of CoS shaping overhead bytes in ingress";
            }
    
            leaf egress-shaping-overhead {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type int32 {
                  range "-62 .. 192";
                }
              }
              units "bytes";
              description
                "Number of CoS shaping overhead bytes in egress";
            }
    
            leaf queue-buffer-size {
              type enumeration {
                enum "small" {
                  value 0;
                  description
                    "Use small buffer size";
                }
              }
              description
                "Set the buffer size of output queue";
            }
    
            leaf mode {
              type enumeration {
                enum "egress-only" {
                  value 0;
                  description
                    "Egress traffic manager enabled, ingress traffic manager disabled";
                }
                enum "session-shaping" {
                  value 1;
                  description
                    "Enable egress session shaping";
                }
                enum "ingress-and-egress" {
                  value 2;
                  description
                    "Enable the ingress and egress traffic managers";
                }
              }
              description
                "Configure traffic manager mode";
            }
          }  // container traffic-manager
    
          container idle-cell-format {
            description
              "ATM idle cell configuration";
            uses apply-advanced;
    
            leaf itu-t {
              type empty;
              description
                "ITU-T idle cell header format";
            }
    
            leaf payload-pattern {
              type string;
              description
                "Payload pattern byte (0x00-0xff)";
            }
          }  // container idle-cell-format
    
          container atm-l2circuit-mode {
            description
              "Enable ATM Layer 2 circuit transport mode";
            uses apply-advanced;
    
            choice mode_choice {
              leaf aal5 {
                type empty;
                description
                  "ATM Layer 2 circuit AAL5 mode";
              }
              leaf cell {
                type empty;
                description
                  "ATM Layer 2 circuit cell mode";
              }
              container trunk {
                presence "enable trunk";
                description
                  "Set ATM Layer 2 circuit trunk mode";
                uses apply-advanced;
    
                choice trunk-mode {
                  container uni {
                    presence "enable uni";
                    description
                      "ATM Layer 2 circuit user-to-network interface trunk mode";
                    uses apply-advanced;
                  }  // container uni
                  container nni {
                    presence "enable nni";
                    description
                      "ATM Layer 2 circuit network-to-network interface trunk mode";
                    uses apply-advanced;
                  }  // container nni
                }  // choice trunk-mode
              }  // container trunk
            }  // choice mode_choice
          }  // container atm-l2circuit-mode
    
          leaf atm-cell-relay-accumulation {
            type empty;
            description
              "Enable ATM cell-relay accumulation mode";
          }
    
          container services-offload {
            presence "enable services-offload";
            description
              "Enable services offload";
            uses apply-advanced;
    
            leaf per-session-statistics {
              junos:must "(!(".. packet-copy"))";
              junos:must-message "packet-copy and per-session-statistics options are mutual exclusive";
              type empty;
              description
                "Keep per session statistics in NP";
            }
    
            leaf low-latency {
              type empty;
              description
                "Bypass Traffic Management stage to achieve low latency";
            }
          }  // container services-offload
    
          leaf mlfr-uni-nni-bundles {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 255";
              }
            }
            description
              "Number of multilink Frame Relay UNI NNI (FRF.16) bundles to allocate on PIC";
          }
    
          leaf mlfr-uni-nni-bundles-inline {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 255";
              }
            }
            description
              "Number of inline multilink frame relay UNI NNI bundles";
          }
    
          container ct3 {
            description
              "CT3 NxDS0 PIC configuration";
            uses apply-advanced;
    
            list port {
              key "name";
              description "CT3 port";
              uses ct3_port_type;
            }  // list port
          }  // container ct3
    
          container ce1 {
            description
              "CE1 NxDS0 PIC configuration";
            uses apply-advanced;
    
            list e1 {
              key "name";
              description "E1 link";
              uses ce1_channel_type;
            }  // list e1
          }  // container ce1
    
          leaf max-queues-per-interface {
            type enumeration {
              enum "4" {
                value 0;
                description
                  "Maximum 4 queues per interface";
              }
              enum "8" {
                value 1;
                description
                  "Maximum 8 queues per interface";
              }
            }
            description
              "Maximum number of queues per interface on QOS-capable PIC";
          }
    
          container shdsl {
            description
              "SHDSL chassis configuration";
            uses apply-advanced;
    
            leaf pic-mode {
              type enumeration {
                enum "1-port-atm" {
                  value 0;
                  description
                    "Single port ATM, 4 wire mode";
                }
                enum "2-port-atm" {
                  value 1;
                  description
                    "Two port ATM, 2 wire mode";
                }
                enum "4-port-atm" {
                  value 2;
                  description
                    "Four port ATM, 2 wire mode";
                }
                enum "efm" {
                  value 3;
                  description
                    "Single port EFM, 2 wire mode";
                }
              }
              default "2-port-atm";
              description "PIC mode";
            }
          }  // container shdsl
    
          container ethernet {
            description
              "J-series Ethernet PIM mode configuration";
            uses apply-advanced;
    
            leaf pic-mode {
              type enumeration {
                enum "switching" {
                  value 0;
                  description
                    "Switched mode of operation";
                }
                enum "routing" {
                  value 1;
                  description
                    "Routing mode of operation";
                }
                enum "enhanced-switching" {
                  junos:must "(unique "chassis fpc <*> pic <*> ethernet pic-mode enhanced-switching")";
                  junos:must-message "Enhanced-switching can be configured only on single PIM";
                  value 2;
                  description
                    "Enhanced switching mode of operation";
                }
              }
              default "routing";
              description "PIC mode";
            }
          }  // container ethernet
    
          leaf tunnel-queuing {
            type empty;
            description
              "Enable queueing for GRE/IPIP tunnels";
          }
    
          list port-mirror-instance {
            key "name";
            max-elements 2;
            ordered-by user;
            leaf name {
              junos:must "(!("forwarding-options port-mirroring instance $$ input-parameters-instance"))";
              junos:must-message "Derived instance cannot be binded";
              junos:must "(((!("chassis network-services lan") && ("forwarding-options port-mirroring instance $$" || "forwarding-options analyzer $$")) || "chassis network-services lan"))";
              junos:must-message "Referenced port-mirroring instance does not exist";
              type string {
                length "1 .. 64";
              }
              description
                "Associate a port mirroring instance with the PIC";
            }
    
            uses apply-advanced;
          }  // list port-mirror-instance
    
          list port {
            key "name";
            description "Port number";
            uses chassis_pic_port_framing;
          }  // list port
    
          container fibre-channel {
            description
              "Fibre channel configuration option";
            uses chassis_fibre_channel_type;
          }  // container fibre-channel
    
          leaf ingress-policer-overhead {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 255";
              }
            }
            units "bytes";
            description
              "Number of policer overhead bytes in ingress";
          }
        }  // grouping chassis_pic_type
    
        grouping ce1_channel_type {
          leaf name {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 9";
              }
            }
            description "E1 link number";
          }
    
          uses apply-advanced;
    
          list channel-group {
            key "name";
            description "Define channel group";
            leaf name {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 23";
                }
              }
              description "Channel group number";
            }
    
            leaf timeslots {
              type string;
              description
                "DS0 timeslots (1..31); for example, 1-3,4,9,22-24 (no spaces)";
            }
          }  // list channel-group
        }  // grouping ce1_channel_type
    
        grouping chassis_fibre_channel_type {
          description
            "Fibre channel configuration option";
          uses apply-advanced;
    
          list port-range {
            key "port-range-low port-range-high";
            ordered-by user;
            description
              "Fibre channel port range";
            leaf port-range-low {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 47";
                }
              }
              description
                "Port range low number";
            }
    
            leaf port-range-high {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 47";
                }
              }
              description
                "Port range high number";
            }
    
            uses apply-advanced;
          }  // list port-range
        }  // grouping chassis_fibre_channel_type
    
        grouping chassis_pic_port_framing {
          leaf name {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32;
            }
            description "Port number";
          }
    
          uses apply-advanced;
    
          leaf framing {
            type enumeration {
              enum "sonet" {
                value 0;
                description "SONET mode";
              }
              enum "sdh" {
                value 1;
                description "SDH mode";
              }
              enum "t3" {
                value 2;
                description "T3 mode";
              }
              enum "e3" {
                value 3;
                description "E3 mode";
              }
              enum "t1" {
                value 4;
                description "T1 mode";
              }
              enum "e1" {
                value 5;
                description "E1 mode";
              }
            }
            description "Framing mode";
          }
    
          leaf number-of-sub-ports {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32;
            }
            description
              "Number of subports per physical port";
          }
    
          leaf speed {
            junos:must "(!((".. .. pic-mode" || ".. .. number-of-ports")))";
            junos:must-message " speed config can neither co-exist with pic <> number-of-ports <> nor pic <> pic-mode config";
            type enumeration {
              enum "oc3-stm1" {
                value 0;
                description "OC3 or STM1";
              }
              enum "oc12-stm4" {
                value 1;
                description "OC12 or STM4";
              }
              enum "oc48-stm16" {
                value 2;
                description "OC48 or STM16";
              }
              enum "1G" {
                value 3;
                description
                  "1GE-Gigabit Ethernet";
              }
              enum "10g" {
                value 4;
                description
                  "Sets the interface mode to 10Gbps";
              }
              enum "25g" {
                value 5;
                description
                  "Sets the interface mode to 25Gbps";
              }
              enum "40g" {
                value 6;
                description
                  "Sets the interface mode to 40Gbps";
              }
              enum "100g" {
                value 7;
                description
                  "Sets the interface mode to 100Gbps";
              }
              enum "50g" {
                value 8;
                description
                  "Sets the interface mode to 50Gbps";
              }
              enum "200g" {
                value 9;
                description
                  "Sets the interface mode to 200 Gbps";
              }
              enum "400g" {
                value 10;
                description
                  "Sets the interface mode to 400Gbps";
              }
            }
            description "Port speed";
          }
    
          leaf channel-speed {
            type enumeration {
              enum "10g" {
                value 0;
                description
                  "Set the port speed to 10G. This will restart PFE on some platforms.";
              }
              enum "25g" {
                value 1;
                description
                  "Set the port speed to 25G.";
              }
              enum "50g" {
                value 2;
                description
                  "Set the port speed to 50G.";
              }
              enum
                "disable-auto-speed-detection" {
                value 3;
                description
                  "Disables automatic speed detection";
              }
            }
            description "Port channel speed";
          }
        }  // grouping chassis_pic_port_framing
    
        grouping chassis_redundancy_type {
          uses apply-advanced;
    
          list routing-engine {
            key "name";
            description
              "Redundancy options for Routing Engines";
            uses chassis_rdd_re_type;
          }  // list routing-engine
    
          container failover {
            description
              "Failover to other Routing Engine";
            uses chassis_rdd_failover_type;
          }  // container failover
    
          leaf keepalive-time {
            junos:must "(!("chassis redundancy graceful-switchover"))";
            junos:must-message "Graceful switchover configured, cannot change the default keepalive interval";
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "2 .. 10000";
              }
            }
            units "seconds";
            description
              "Time before Routing Engine failover";
          }
    
          container graceful-switchover {
            junos:must "(!((any "chassis fpc <*> pic <*> monitoring-services application" && "chassis redundancy graceful-switchover")))";
            junos:must-message "Graceful Switchover is not supported on monitoring-services application";
            presence
              "enable graceful-switchover";
            description
              "Enable graceful switchover on supported hardware";
            uses chassis_non_stop_forwarding_type;
          }  // container graceful-switchover
        }  // grouping chassis_redundancy_type
    
        grouping chassis_non_stop_forwarding_type {
          junos:must "((!("system inet6-backup-router") || "system inet6-backup-router destination"))";
          junos:must-message "Please define destination subnet with the inet6-backup-router configuration";
          junos:must "((!("system backup-router") || "system backup-router destination"))";
          junos:must-message "Please define destination subnet with the backup-router configuration";
          uses apply-advanced;
    
          container traceoptions {
            status deprecated;
            description
              "Graceful switchover trace options";
            uses apply-advanced;
    
            list flag {
              key "name";
              ordered-by user;
              description "Tracing parameters";
              leaf name {
                type enumeration {
                  enum "update" {
                    value 0;
                    description
                      "Trace state updates";
                  }
                  enum "all" {
                    value 1;
                    description
                      "Trace everything";
                  }
                }
              }
            }  // list flag
          }  // container traceoptions
        }  // grouping chassis_non_stop_forwarding_type
    
        grouping chassis_rdd_failover_type {
          uses apply-advanced;
    
          container category {
            presence "enable category";
            description "Failover category";
            uses chassis_rdd_fail_cat_type;
          }  // container category
    
          leaf on-loss-of-keepalives {
            type empty;
            description
              "Failover on loss of keepalives";
          }
    
          leaf on-re-to-fpc-stale {
            type empty;
            description
              "Failover on loss of communication between the re and fpc";
          }
    
          leaf on-disk-failure {
            junos:must "(("chassis redundancy failover on-loss-of-keepalives" || "chassis redundancy graceful-switchover"))";
            junos:must-message "Option on-loss-of-keepalives or graceful-switchover must be set";
            type empty;
            description
              "Failover on disk failure";
          }
    
          leaf not-on-disk-underperform {
            type empty;
            description
              "Prevent gstatd from initiating failovers in response to slow disks";
          }
    
          leaf disk-read-threshold {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1000 .. 10000";
              }
            }
            description
              "Read threshold (ms) on disk underperform monitoring";
          }
    
          leaf disk-write-threshold {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1000 .. 10000";
              }
            }
            description
              "Write threshold (ms) on disk underperform monitoring";
          }
    
          leaf on-loss-of-vm-host-connection {
            type empty;
            description
              "Failover on loss of vm host connection";
          }
        }  // grouping chassis_rdd_failover_type
    
        grouping chassis_rdd_fail_cat_type {
          uses apply-advanced;
    
          container component-failure {
            presence "enable component-failure";
            description
              "Failover due to component failure";
            uses chassis_rdd_fail_cat_sev_type;
          }  // container component-failure
    
          container software-failure {
            presence "enable software-failure";
            description
              "Failover due to software failure";
            uses chassis_rdd_fail_cat_sev_type;
          }  // container software-failure
    
          container power-failure {
            presence "enable power-failure";
            description
              "Failover due to power failure";
            uses chassis_rdd_fail_cat_sev_type;
          }  // container power-failure
    
          container clock-failure {
            presence "enable clock-failure";
            description
              "Failover due to clock failure";
            uses chassis_rdd_fail_cat_sev_type;
          }  // container clock-failure
    
          container link-failure {
            presence "enable link-failure";
            description
              "Failover due to link failure";
            uses chassis_rdd_fail_cat_sev_type;
          }  // container link-failure
    
          container degraded-health {
            presence "enable degraded-health";
            description
              "Failover due to degraded health";
            uses chassis_rdd_fail_cat_sev_type;
          }  // container degraded-health
        }  // grouping chassis_rdd_fail_cat_type
    
        grouping chassis_rdd_fail_cat_sev_type {
          uses apply-advanced;
    
          container critical {
            presence "enable critical";
            description "Critical severity";
            uses chassis_rdd_fail_cat_sev_act_type;
          }  // container critical
    
          container important {
            presence "enable important";
            description "Important severity";
            uses chassis_rdd_fail_cat_sev_act_type;
          }  // container important
        }  // grouping chassis_rdd_fail_cat_sev_type
    
        grouping chassis_rdd_fail_cat_sev_act_type {
          uses apply-advanced;
    
          leaf disable {
            type empty;
            description "Disable action";
          }
        }  // grouping chassis_rdd_fail_cat_sev_act_type
    
        grouping chassis_rdd_re_type {
          leaf name {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 1";
              }
            }
            description
              "Routing Engine slot number";
          }
    
          choice priority {
            leaf master {
              type empty;
              description
                "Master Routing Engine";
            }
            leaf backup {
              type empty;
              description
                "Backup Routing Engine";
            }
            leaf disabled {
              type empty;
              description
                "Routing Engine disabled";
            }
          }  // choice priority
        }  // grouping chassis_rdd_re_type
    
        grouping chassis_routing_engine_type {
          uses apply-advanced;
    
          container on-disk-failure {
            description
              "Action to take when Routing Engine disk fails";
            uses chassis_re_on_disk_failure;
          }  // container on-disk-failure
    
          container control-interface {
            presence "enable control-interface";
            description
              "Configure recovery method and pause frame for control interface";
            uses apply-advanced;
    
            leaf recovery-method {
              type enumeration {
                enum "disable-recovery" {
                  value 0;
                  description
                    "Don't enable recovery";
                }
                enum "socket" {
                  value 1;
                  description
                    "Recovery by using socket";
                }
                enum "counter" {
                  value 2;
                  description
                    "Recovery by using BCM-Counters";
                }
              }
              description
                "Select the recovery method";
            }
    
            leaf pause-frame {
              type empty;
              description
                "Enable or disable Pause frame generation";
            }
          }  // container control-interface
    
          container bios {
            description "Routing Engine BIOS";
            uses apply-advanced;
    
            leaf no-auto-upgrade {
              type empty;
              description
                "Disable routing-engine BIOS auto-upgrade";
            }
    
            leaf uninterrupt {
              type empty;
              description
                "Set routing-engine BIOS uninterruptable";
            }
          }  // container bios
    
          container disk {
            description
              "Action to take for Routing Engine disk";
            uses apply-advanced;
    
            leaf write-threshold-rate {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 20";
                }
              }
              units "MBPS";
              default "4";
              description "Write threshold rate";
            }
    
            leaf write-threshold-duration {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "300 .. 2592000";
                }
              }
              units "seconds";
              default "1000";
              description
                "Write threshold duration";
            }
    
            leaf smart-check {
              type empty;
              description
                "Enable smart check command to disk";
            }
    
            list ssd-series {
              key "name";
              ordered-by user;
              description
                "Specify the ssd vendor series";
              leaf name {
                type string {
                  length "1 .. 40";
                }
                description "SSD series name";
              }
    
              uses apply-advanced;
    
              list id {
                key "name";
                max-elements 30;
                ordered-by user;
                description
                  "Attribute ids to monitor of this series type";
                leaf name {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 255";
                    }
                  }
                  description
                    "SSD smart attribute id";
                }
    
                uses apply-advanced;
    
                leaf id-threshold {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 4294967295";
                    }
                  }
                  description
                    "SSD smart attribute threshold";
                }
    
                leaf id-value {
                  type enumeration {
                    enum "raw" {
                      value 0;
                      description
                        "Raw value to be used for this smart id";
                    }
                    enum "norm" {
                      value 1;
                      description
                        "Normalised value to be used for this smart id";
                    }
                  }
                  description
                    "SSD attribute value";
                }
    
                leaf id-flag {
                  type enumeration {
                    enum "low" {
                      value 0;
                      description
                        "Check if value is less than smart threshold";
                    }
                    enum "high" {
                      value 1;
                      description
                        "Check if value is greater than smart threshold";
                    }
                  }
                  description
                    "SSD attribute flag";
                }
              }  // list id
            }  // list ssd-series
          }  // container disk
    
          container usb-wwan {
            description
              "Enable WWAN (3G) access on the USB port";
            uses apply-advanced;
    
            leaf port {
              type enumeration {
                enum "0" {
                  value 0;
                  description
                    "Select port 0 to enable WWAN access";
                }
                enum "1" {
                  value 1;
                  description
                    "Select port 1 to enable WWAN access";
                }
              }
              description "Select the port";
            }
          }  // container usb-wwan
        }  // grouping chassis_routing_engine_type
    
        grouping chassis_re_on_disk_failure {
          choice reboot_or_halt {
            leaf reboot {
              type empty;
              status deprecated;
              description
                "Reboot on disk failure";
            }
            leaf disk-failure-action {
              type enumeration {
                enum "reboot" {
                  value 0;
                  description
                    "Reboot on disk failure";
                }
                enum "halt" {
                  value 1;
                  description
                    "Halt on disk failure";
                }
              }
            }
          }  // choice reboot_or_halt
    
          leaf failover {
            type empty;
            description
              "Redundancy group 0 failover on disk failure";
          }
        }  // grouping chassis_re_on_disk_failure
    
        grouping chassisd_agg_enet_type {
          uses apply-advanced;
    
          leaf device-count {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32;
            }
            description
              "Number of aggregated Ethernet devices";
          }
    
          container lacp {
            description
              "Global Link Aggregation Control Protocol configuration";
            uses apply-advanced;
    
            leaf system-priority {
              type string;
              description
                "Priority of the system (0 ... 65535)";
            }
    
            container link-protection {
              presence "enable link-protection";
              uses apply-advanced;
    
              leaf non-revertive {
                type empty;
                description
                  "Don't revert links when better priority link comes up";
              }
            }  // container link-protection
          }  // container lacp
        }  // grouping chassisd_agg_enet_type
    
        grouping chassisd_agg_pos_type {
          uses apply-advanced;
    
          leaf device-count {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 64";
              }
            }
            description
              "Number of aggregated SONET devices";
          }
        }  // grouping chassisd_agg_pos_type
    
        grouping ct3_port_type {
          leaf name {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type int32 {
                range "0 .. 1";
              }
            }
            description
              "CT3  L2NG_PRODUCTSport number";
          }
    
          uses apply-advanced;
    
          list t1 {
            key "name";
            description "T1 link";
            uses ct3_channel_type;
          }  // list t1
        }  // grouping ct3_port_type
    
        grouping ct3_channel_type {
          leaf name {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type int32 {
                range "0 .. 27";
              }
            }
            description "T1 link number";
          }
    
          uses apply-advanced;
    
          list channel-group {
            key "name";
            description "Define channel group";
            leaf name {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 7";
                }
              }
              description "Channel group number";
            }
    
            leaf timeslots {
              type string;
              description
                "DS0 timeslots (1..24); for example, 1-3,4,9,22-24 (no spaces)";
            }
          }  // list channel-group
        }  // grouping ct3_channel_type
    
        grouping ip-monitoring-address-type {
          description
            "Define IP address related parameters";
          leaf name {
            type jt:ipv4addr;
            description
              "Define IPv4 address to be monitored";
          }
    
          uses apply-advanced;
    
          leaf weight {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "0 .. 255";
              }
            }
            description
              "Define weight for this IP address";
          }
    
          list interface {
            key "name";
            max-elements 1;
            ordered-by user;
            description
              "Logical interface through which to monitor this IP address";
            leaf name {
              junos:must "("interfaces $$-IFL family inet")";
              junos:must-message "Family inet must be defined on this logical interface";
              type union {
                type jt:interface-name;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description
                "Logical interface name";
            }
    
            uses apply-advanced;
    
            leaf secondary-ip-address {
              type jt:ipv4addr;
              description
                "Define source address for monitoring packets on secondary link";
            }
          }  // list interface
        }  // grouping ip-monitoring-address-type
    
        grouping juniper-protected-system-domain {
          description
            "Protected system domain configuration";
          leaf name {
            type string {
              junos:posix-pattern "^psd([1-9]|[1-2][0-9]|[3][0-1])$";
              junos:pattern-message "Protected system domain name is a string consisting of 'psd' follows by the PSD ID (1-31), ex. psd2";
            }
            description
              "Name of protected system domain (psd[1-31], ex. psd2)";
          }
    
          uses apply-advanced;
    
          leaf description {
            type string;
            description
              "Description of protected system domain";
          }
    
          list lcc {
            key "name";
            leaf name {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32;
              }
              description "Specific LCC";
            }
    
            uses apply-advanced;
    
            leaf-list fpcs {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32;
              }
              description
                "FPC associated with protected system domain";
            }
          }  // list lcc
    
          leaf control-system-id {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 4";
              }
            }
            description
              "Control system identifier";
          }
    
          leaf-list control-slot-numbers {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 12";
              }
            }
            max-elements 2;
            ordered-by user;
            description
              "Slots associated with protected system domain";
          }
    
          leaf control-plane-bandwidth-percent {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 100";
              }
            }
            units "percent";
            description
              "Percentage of control plane bandwidth";
          }
        }  // grouping juniper-protected-system-domain
    
        grouping juniper-protected-system-domain-traceoptions {
          description
            "Protected system domain 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
    
          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 "configuration" {
                  value 0;
                  description
                    "Trace configuration events";
                }
                enum "rtsock" {
                  value 1;
                  description
                    "Trace rtsock messages";
                }
                enum "ipc" {
                  value 2;
                  description
                    "Trace IPC messages";
                }
                enum "init" {
                  value 3;
                  description
                    "Trace intialization messages";
                }
                enum "psd" {
                  value 4;
                  description
                    "Trace psd messages";
                }
                enum "all" {
                  value 5;
                  description "Trace everything";
                }
              }
            }
          }  // list flag
        }  // grouping juniper-protected-system-domain-traceoptions
    
        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
      }  // module junos-es-conf-chassis
    

© 2023 YumaWorks, Inc. All rights reserved.