junos-qfx-conf-chassis

Junos chassis configuration module

  • Version: 2019-01-01

    junos-qfx-conf-chassis@2019-01-01


    
      module junos-qfx-conf-chassis {
    
        yang-version 1;
    
        namespace
          "http://yang.juniper.net/junos-qfx/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-qfx-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 nssu {
            presence "enable nssu";
            description
              "Nonstop Software Upgrade settings";
            uses apply-advanced;
    
            list upgrade-group {
              key "name";
              ordered-by user;
              description
                "Nonstop Software Upgrade group";
              leaf name {
                type string {
                  length "1 .. 254";
                }
              }
    
              uses apply-advanced;
    
              leaf-list fpcs {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32;
                }
                max-elements 16;
                description
                  "FPCs associated with update-group";
              }
            }  // list upgrade-group
    
            leaf rcp-count {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type int32 {
                  range "1 .. 8";
                }
              }
              description "Parallel rcp count";
            }
    
            leaf lc-reboot-delay {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type int32 {
                  range "0 .. 600";
                }
              }
              description
                "Delay between linecard reboot during NSSU";
            }
          }  // container nssu
    
          leaf no-power-budget {
            type empty;
            description
              "Disable Chassis Power Budget";
          }
    
          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 fpc-resync {
            type empty;
            description
              "Send and receive Nchip cells for newly onlined FPC";
          }
    
          leaf craft-lockout {
            type empty;
            description
              "Disable craft interface input";
          }
    
          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;
          }  // container icmp
    
          container icmp6 {
            description
              "ICMP version 6 protocol";
            uses apply-advanced;
          }  // 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 container-devices {
            description
              "Container devices configuration";
            uses chassisd_agg_container_type;
          }  // container container-devices
    
          container pseudowire-service {
            presence "enable pseudowire-service";
            description
              "Pseudowire L3 termination device configuration";
            uses chassis-pw-type;
          }  // container pseudowire-service
    
          container redundancy-group {
            description
              "Redundancy group configuration";
            uses chassisd-redundancy-group-type;
          }  // container redundancy-group
    
          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-fm {
            type empty;
            description "Disable Fabric Manager";
          }
    
          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 pem {
            description
              "Power supply (PEM) parameters";
            uses chassis_pem_type;
          }  // container pem
    
          container sib {
            description
              "Switch Interface Board parameters";
            uses chassis_sib_type;
          }  // container sib
    
          container feb {
            description
              "Forwarding Engine Board parameters";
            uses chassis_feb_type;
          }  // container feb
    
          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 fpc-ifl-ae-statistics {
            type empty;
            description
              "Enable fpc ifl ae child statistics";
          }
    
          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";
          }
    
          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 alarm-port {
            description
              "Craft-interface parameters";
            uses chassis_alarm_port_op_type;
          }  // container alarm-port
    
          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
    
          container serdes {
            presence "enable serdes";
            description
              "Serdes test mode for link training";
            uses apply-advanced;
    
            leaf test-mode {
              type string;
              description "Serdes test mode";
            }
          }  // container serdes
    
          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 synchronization {
            description
              "Clock synchronization options";
            uses apply-advanced;
    
            leaf switchover-mode {
              type enumeration {
                enum "non-revertive" {
                  value 0;
                  description
                    "System uses current source as long as it is valid";
                }
                enum "revertive" {
                  value 1;
                  description
                    "Automatically switch to higher priority valid source";
                }
              }
              default "revertive";
              description
                "Should system revert to higher priority valid source";
            }
    
            leaf switching-mode {
              type enumeration {
                enum "non-revertive" {
                  value 0;
                  description
                    "System uses current source as long as it is valid";
                }
                enum "revertive" {
                  value 1;
                  description
                    "Automatically switch to higher priority valid source";
                }
              }
              default "non-revertive";
              description
                "Should system revert to higher priority valid source";
            }
    
            leaf network-option {
              type enumeration {
                enum "option-1" {
                  value 0;
                  description
                    "Option 1 (EEC1) synchronization networking";
                }
                enum "option-2" {
                  value 1;
                  description
                    "Option 2 (EEC2) synchronization networking";
                }
              }
              description
                "EEC synchronization networking type";
            }
    
            leaf selection-mode {
              type enumeration {
                enum "configured-quality" {
                  value 0;
                  description
                    "Use source's configured ESMC quality";
                }
                enum "received-quality" {
                  junos:must "("chassis synchronization quality-mode-enable")";
                  junos:must-message "Cannot configure received-quality without quality-mode-enable";
                  value 1;
                  description
                    "Use source's received ESMC quality";
                }
              }
              default "configured-quality";
              description
                "Selection mode for incoming ESMC quality";
            }
    
            leaf clock-mode {
              type enumeration {
                enum "free-run" {
                  junos:must "(!("protocols ptp"))";
                  junos:must-message "Cannot configure free-running clock when ptp is configured";
                  value 0;
                  description
                    "Use the free-running local oscillator";
                }
                enum "auto-select" {
                  value 1;
                  description
                    "Select best clock source";
                }
              }
              description
                "Synchronous Ethernet Clock selection mode";
            }
    
            leaf quality-mode-enable {
              type empty;
              description
                "Enable Synchronous Ethernet ESMC Quality mode";
            }
    
            leaf max-transmit-quality-level {
              type enumeration {
                enum "ePRTC" {
                  junos:must "("chassis synchronization enable-extended-ql-tlv")";
                  junos:must-message "Must configure 'chassis synchronization enable-extended-ql-tlv'";
                  junos:must "("chassis synchronization network-option")";
                  junos:must-message "Must configure 'chassis synchronization network-option'";
                  value 0;
                  description
                    "Time quality of enhanced primary reference time clock";
                }
                enum "PRTC" {
                  junos:must "("chassis synchronization enable-extended-ql-tlv")";
                  junos:must-message "Must configure 'chassis synchronization enable-extended-ql-tlv'";
                  junos:must "("chassis synchronization network-option")";
                  junos:must-message "Must configure 'chassis synchronization network-option'";
                  value 1;
                  description
                    "Time quality of primary reference time clock";
                }
                enum "ePRC" {
                  junos:must "("chassis synchronization enable-extended-ql-tlv")";
                  junos:must-message "Must configure 'chassis synchronization enable-extended-ql-tlv'";
                  junos:must "("chassis synchronization network-option")";
                  junos:must-message "Must configure 'chassis synchronization network-option'";
                  value 2;
                  description
                    "Time quality of enhanced primary reference clock";
                }
                enum "eEEC" {
                  junos:must "("chassis synchronization enable-extended-ql-tlv")";
                  junos:must-message "Must configure 'chassis synchronization enable-extended-ql-tlv'";
                  junos:must "("chassis synchronization network-option")";
                  junos:must-message "Must configure 'chassis synchronization network-option'";
                  value 3;
                  description
                    "Time quality of enhanced ethernet equipment clock";
                }
                enum "prc" {
                  junos:must "("chassis synchronization network-option option-1")";
                  junos:must-message "Must configure 'chassis synchronization network-option option-1'";
                  value 4;
                  description
                    "Timing quality of a primary reference clock (option-1 only)";
                }
                enum "ssu-a" {
                  junos:must "("chassis synchronization network-option option-1")";
                  junos:must-message "Must configure 'chassis synchronization network-option option-1'";
                  value 5;
                  description
                    "Timing quality of a type I or IV slave clock (option-1 only)";
                }
                enum "ssu-b" {
                  junos:must "("chassis synchronization network-option option-1")";
                  junos:must-message "Must configure 'chassis synchronization network-option option-1'";
                  value 6;
                  description
                    "Timing quality of a type VI slave clock (option-1 only)";
                }
                enum "sec" {
                  junos:must "("chassis synchronization network-option option-1")";
                  junos:must-message "Must configure 'chassis synchronization network-option option-1'";
                  value 7;
                  description
                    "Timing quality of SDH equipment clock (option-1 only)";
                }
                enum "prs" {
                  junos:must "("chassis synchronization network-option option-2")";
                  junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                  value 8;
                  description
                    "Clock traceable to primary reference source (option-2 only)";
                }
                enum "stu" {
                  junos:must "("chassis synchronization network-option option-2")";
                  junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                  value 9;
                  description
                    "Clock traceable to unknown quality (option-2 only)";
                }
                enum "st2" {
                  junos:must "("chassis synchronization network-option option-2")";
                  junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                  value 10;
                  description
                    "Clock traceable to stratum 2 (option-2 only)";
                }
                enum "tnc" {
                  junos:must "("chassis synchronization network-option option-2")";
                  junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                  value 11;
                  description
                    "Clock traceable to transit node clock (option-2 only)";
                }
                enum "st3e" {
                  junos:must "("chassis synchronization network-option option-2")";
                  junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                  value 12;
                  description
                    "Clock traceable to stratum 3E (option-2 only)";
                }
              }
              description
                "Maximum transmit quality level";
            }
    
            leaf enable-extended-ql-tlv {
              type empty;
              description
                "Enable enhanced ESMC QL support";
            }
    
            leaf global-wait-to-restore {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 12";
                }
              }
              units "min";
              description
                "Global Port signal up state time before opening for ESMC";
            }
    
            leaf minimum-quality {
              type enumeration {
                enum "prc" {
                  junos:must "("chassis synchronization network-option option-1")";
                  junos:must-message "Must configure 'chassis synchronization network-option option-1'";
                  value 0;
                  description
                    "Timing quality of a primary reference clock (option-1 only)";
                }
                enum "ssu-a" {
                  junos:must "("chassis synchronization network-option option-1")";
                  junos:must-message "Must configure 'chassis synchronization network-option option-1'";
                  value 1;
                  description
                    "Timing quality of a type I or IV slave clock (option-1 only)";
                }
                enum "ssu-b" {
                  junos:must "("chassis synchronization network-option option-1")";
                  junos:must-message "Must configure 'chassis synchronization network-option option-1'";
                  value 2;
                  description
                    "Timing quality of a type VI slave clock (option-1 only)";
                }
                enum "sec" {
                  junos:must "("chassis synchronization network-option option-1")";
                  junos:must-message "Must configure 'chassis synchronization network-option option-1'";
                  value 3;
                  description
                    "Timing quality of SDH equipment clock (option-1 only)";
                }
                enum "prs" {
                  junos:must "("chassis synchronization network-option option-2")";
                  junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                  value 4;
                  description
                    "Clock traceable to primary reference source (option-2 only)";
                }
                enum "st2" {
                  junos:must "("chassis synchronization network-option option-2")";
                  junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                  value 5;
                  description
                    "Clock traceable to stratum 2 (option-2 only)";
                }
                enum "tnc" {
                  junos:must "("chassis synchronization network-option option-2")";
                  junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                  value 6;
                  description
                    "Clock traceable to transit node clock (option-2 only)";
                }
                enum "st3e" {
                  junos:must "("chassis synchronization network-option option-2")";
                  junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                  value 7;
                  description
                    "Clock traceable to stratum 3E (option-2 only)";
                }
                enum "st3" {
                  junos:must "("chassis synchronization network-option option-2")";
                  junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                  value 8;
                  description
                    "Clock traceable to stratum 3 (option-2 only)";
                }
                enum "st4" {
                  junos:must "("chassis synchronization network-option option-2")";
                  junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                  value 9;
                  description
                    "Clock traceable to stratum 4 free-run (option-2 only)";
                }
                enum "smc" {
                  junos:must "("chassis synchronization network-option option-2")";
                  junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                  value 10;
                  description
                    "Clock traceable to self-timed SONET (option-2 only)";
                }
                enum "stu" {
                  junos:must "("chassis synchronization network-option option-2")";
                  junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                  value 11;
                  description
                    "Clock traceable to unknown quality (option-2 only)";
                }
              }
              description
                "Minimum quality threshold";
            }
    
            leaf loop-prevention {
              type enumeration {
                enum "master-side" {
                  value 0;
                  description
                    "Master side loop prevention";
                }
              }
              description
                "Clock loop prevention";
            }
    
            list port {
              key "name";
              description
                "Clock synchronization ports";
              leaf name {
                type enumeration {
                  enum "auxiliary" {
                    value 0;
                    description "Auxiliary port";
                  }
                  enum "gnss" {
                    junos:must "(!("chassis synchronization source"))";
                    junos:must-message "must not configure SYNCE source along with port gnss";
                    junos:must "("protocols ptp")";
                    junos:must-message "must configure protocols ptp";
                    value 1;
                    description
                      "Global Navigation Satellite System - GPS or GLONASS port";
                  }
                  enum "time-of-day" {
                    value 2;
                    description
                      "Time of Day(TOD) port";
                  }
                }
              }
    
              uses apply-advanced;
    
              container client {
                presence "enable client";
                description
                  "Port client receiving external signals";
                uses apply-advanced;
    
                container time-of-day-format {
                  description
                    "Time-of-day format as received on this port";
                  uses apply-advanced;
    
                  choice format {
                    leaf ascii {
                      type string {
                        length "1 .. 80";
                      }
                      description
                        "ASCII Time-of-day message format string";
                    }
                    leaf nmea-custom-format {
                      type empty;
                      description
                        "Customized NMEA format used when interfacing with GRU GPS Receiver Unit";
                    }
                    leaf no-protocol {
                      type empty;
                      description
                        "Used when interfacing with GRU GPS Receiver Unit to process PPS with no Time Of Day";
                    }
                  }  // choice format
                }  // container time-of-day-format
    
                leaf cable-length-compensation {
                  type union {
                    type uint32;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description
                    "Antenna cable length compensation in nanoseconds";
                }
    
                leaf cable-delay-compensation {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type int32 {
                      range
                        "-100000000 .. 100000000";
                    }
                  }
                  description
                    "GPS Receiver Unit to Router delay compensation in nanoseconds";
                }
    
                leaf antenna-voltage {
                  type enumeration {
                    enum "3.3" {
                      value 0;
                      description "3.3 units";
                    }
                    enum "5" {
                      value 1;
                      description "5 units";
                    }
                  }
                  description
                    "Configure antenna voltage";
                }
    
                leaf alarm-filter {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type int32 {
                      range "1 .. 60";
                    }
                  }
                  default "36";
                  description
                    "Set alarm filter window";
                }
    
                leaf constellation {
                  type enumeration {
                    enum "gps" {
                      value 0;
                      description
                        "Global Positioning Satellite(GPS) for clock recovery";
                    }
                    enum "glonass" {
                      value 1;
                      description
                        "Global Navigation Satellite System(GLONASS) constellation";
                    }
                    enum "gps-and-glonass" {
                      value 2;
                      description
                        "All constellations";
                    }
                    enum "beidou" {
                      value 3;
                      description
                        "BEIDOU for clock recovery constellations";
                    }
                    enum "gps-beidou" {
                      value 4;
                      description
                        "GPS and BEIDOU for clock recovery";
                    }
                    enum "gps-beidou-qzss" {
                      value 5;
                      description
                        "GPS ,BEIDOU and qzss for clock recovery";
                    }
                    enum "galileo" {
                      value 6;
                      description
                        "GALILEO for clock recovery";
                    }
                    enum "gps-galileo" {
                      value 7;
                      description
                        "GPS and GALILEO for clock recovery";
                    }
                    enum "gps-qzss" {
                      value 8;
                      description
                        "GPS and QZSS for clock recovery";
                    }
                    enum "gps-glonass-qzss" {
                      value 9;
                      description
                        "GPS,GLONASS and QZSS for clock recovery";
                    }
                    enum "gps-galileo-qzss" {
                      value 10;
                      description
                        "GPS , GALILEO and QZSS for clock recovery";
                    }
                  }
                  description
                    "Configure constellation of satellites to use";
                }
    
                leaf anti-jamming {
                  type empty;
                  description
                    "Enable anti-jamming feature";
                }
    
                leaf pps-loopback {
                  type empty;
                  description
                    "Enable 1PPS loopback mode";
                }
    
                leaf dump-gpsstats {
                  type empty;
                  description
                    "Enable dumping gnss data";
                }
              }  // container client
            }  // list port
    
            list interfaces {
              key "name";
              description
                "Interface(s) with upstream clock source";
              leaf name {
                type enumeration {
                  enum "external" {
                    value 0;
                    description
                      "External clock interface";
                  }
                  enum "external-0/0" {
                    junos:must "("chassis synchronization interfaces external-0/0 signal-type")";
                    junos:must-message "Must configure 'chassis synchronization interfaces external-0/0 signal-type'";
                    value 1;
                    description
                      "External clock interface on SCB-0";
                  }
                  enum "external-0/1" {
                    junos:must "("chassis synchronization interfaces external-0/1 signal-type")";
                    junos:must-message "Must configure 'chassis synchronization interfaces external-0/1 signal-type'";
                    value 2;
                    description
                      "External clock interface on SCB-0";
                  }
                  enum "external-1/0" {
                    junos:must "("chassis synchronization interfaces external-1/0 signal-type")";
                    junos:must-message "Must configure 'chassis synchronization interfaces external-1/0 signal-type'";
                    value 3;
                    description
                      "External clock interface on SCB-1";
                  }
                  enum "external-1/1" {
                    junos:must "("chassis synchronization interfaces external-1/1 signal-type")";
                    junos:must-message "Must configure 'chassis synchronization interfaces external-1/1 signal-type'";
                    value 4;
                    description
                      "External clock interface on SCB-1";
                  }
                  enum "external-a" {
                    value 5;
                    description
                      "External-A clock interface";
                  }
                  enum "external-b" {
                    value 6;
                    description
                      "External-B clock interface";
                  }
                  enum "external-0" {
                    value 7;
                    description
                      "External-0 clock interface";
                  }
                  enum "external-1" {
                    value 8;
                    description
                      "External-1 clock interface";
                  }
                  enum "external-2" {
                    value 9;
                    description
                      "External-2 clock interface";
                  }
                  enum "bits" {
                    value 10;
                    description
                      "External BITS interface configuration";
                  }
                  enum "bits-a" {
                    value 11;
                    description
                      "External BITS interface A configuration";
                  }
                  enum "bits-b" {
                    value 12;
                    description
                      "External BITS interface B configuration";
                  }
                  enum "gps-0" {
                    value 13;
                    description
                      "External GPS interface A configuration";
                  }
                  enum "gps-1" {
                    value 14;
                    description
                      "External GPS interface B configuration";
                  }
                }
              }
    
              uses apply-advanced;
    
              leaf signal-type {
                type enumeration {
                  enum "1mhz" {
                    value 0;
                    description
                      "1 MHz clock signal";
                  }
                  enum "5mhz" {
                    value 1;
                    description
                      "5 MHz clock signal";
                  }
                  enum "10mhz" {
                    value 2;
                    description
                      "10 MHz clock signal";
                  }
                  enum "2048khz" {
                    junos:must "("chassis synchronization network-option option-1")";
                    junos:must-message "Must configure 'chassis synchronization network-option option-1'";
                    value 3;
                    description
                      "E1 unframed 2048Khz G.703 signal";
                  }
                  enum "e1" {
                    junos:must "("chassis synchronization network-option option-1")";
                    junos:must-message "Must configure 'chassis synchronization network-option option-1'";
                    value 4;
                    description
                      "E1-coded 2048 KHz signal on 120 ohm balanced line";
                  }
                  enum "t1" {
                    junos:must "("chassis synchronization network-option option-2")";
                    junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                    value 5;
                    description
                      "T1-coded 1.544 MHz signal on 100 ohm balanced line";
                  }
                  enum "cc-8k" {
                    junos:must "("chassis synchronization network-option option-2")";
                    junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                    value 6;
                    description
                      "Composite Clock 64kHz+8kHz";
                  }
                  enum "cc-8k-400" {
                    junos:must "("chassis synchronization network-option option-2")";
                    junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                    value 7;
                    description
                      "Composite Clock 64kHz+8kHz+400Hz";
                  }
                  enum "6312k" {
                    junos:must "("chassis synchronization network-option option-2")";
                    junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                    value 8;
                    description
                      "Japanese Standard 6312kHz";
                  }
                }
                description
                  "Frequency for provided reference clocks";
              }
    
              leaf pulse-per-second-enable {
                junos:must "((".. signal-type $$={1mhz}" || (".. signal-type $$={5mhz}" || ".. signal-type $$={10mhz}")))";
                junos:must-message "Must configure signal-type to 1/5/10 MHz";
                type empty;
                description
                  "Enable pulse-per-second (PPS) receive on the interface";
              }
    
              container e1-options {
                junos:must "("chassis synchronization network-option option-1")";
                junos:must-message "Must configure 'chassis synchronization network-option option-1'";
                description
                  "E1 interface-specific options";
                uses apply-advanced;
    
                leaf line-encoding {
                  type enumeration {
                    enum "ami" {
                      value 0;
                      description
                        "Automatic mark inversion";
                    }
                    enum "hdb3" {
                      value 1;
                      description
                        "High-density bipolar 3 code";
                    }
                  }
                  default "hdb3";
                  description "Line encoding";
                }
    
                leaf framing {
                  type enumeration {
                    enum "g704" {
                      value 0;
                      description
                        "G.704 framing format for E1 interfaces";
                    }
                    enum "g704-no-crc4" {
                      value 1;
                      description
                        "G.704 framing without CRC4 for E1 interfaces";
                    }
                  }
                  default "g704";
                  description "Framing mode";
                }
    
                leaf sabit {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "4 .. 8";
                    }
                  }
                  default "4";
                  description
                    "The sabit used for exchanging SSM quality";
                }
              }  // container e1-options
    
              container t1-options {
                junos:must "("chassis synchronization network-option option-2")";
                junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                description
                  "T1 interface-specific options";
                uses apply-advanced;
    
                leaf line-encoding {
                  type enumeration {
                    enum "ami" {
                      value 0;
                      description
                        "Automatic mark inversion";
                    }
                    enum "b8zs" {
                      value 1;
                      description
                        "8-bit zero suppression";
                    }
                  }
                  default "b8zs";
                  description "Line encoding";
                }
    
                leaf framing {
                  type enumeration {
                    enum "esf" {
                      value 0;
                      description
                        "Extended Super Frame";
                    }
                    enum "sf" {
                      value 1;
                      description "Super Frame";
                    }
                  }
                  default "esf";
                  description "Framing mode";
                }
              }  // container t1-options
            }  // list interfaces
    
            container source {
              junos:must "("chassis synchronization network-option")";
              junos:must-message "Must configure 'chassis synchronization network-option'";
              junos:must "(!(("chassis synchronization primary" || "chassis synchronization secondary")))";
              junos:must-message "primary or secondary cannot be configured with source";
              description
                "ESMC source(s) related";
              uses apply-advanced;
    
              container virtual-port {
                junos:must "("protocols ptp profile-type $$={g.8275.1}")";
                junos:must-message "Must configure ptp profile type g.8275.1";
                junos:must "("protocols ptp virtual-port")";
                junos:must-message "Must configure protocols ptp virtual-port";
                presence "enable virtual-port";
                description "Virtual port";
                uses apply-advanced;
    
                leaf priority {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 5";
                    }
                  }
                  description
                    "User priority for this clock";
                }
    
                leaf request {
                  type enumeration {
                    enum "lockout" {
                      value 0;
                      description
                        "Opt out of clock selection";
                    }
                    enum "force-switch" {
                      value 1;
                      description
                        "Switch to this interface as primary clock source";
                    }
                  }
                  description
                    "Clock selection request criterion";
                }
    
                leaf wait-to-restore {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 12";
                    }
                  }
                  units "min";
                  description
                    "Port signal up state time before opening for ESMC";
                }
    
                leaf quality-level {
                  type enumeration {
                    enum "ePRTC" {
                      junos:must "("chassis synchronization enable-extended-ql-tlv")";
                      junos:must-message "Must configure 'chassis synchronization enable-extended-ql-tlv'";
                      junos:must "("chassis synchronization network-option")";
                      junos:must-message "Must configure 'chassis synchronization network-option'";
                      value 0;
                      description
                        "Time quality of enhanced primary reference time clock";
                    }
                    enum "PRTC" {
                      junos:must "("chassis synchronization enable-extended-ql-tlv")";
                      junos:must-message "Must configure 'chassis synchronization enable-extended-ql-tlv'";
                      junos:must "("chassis synchronization network-option")";
                      junos:must-message "Must configure 'chassis synchronization network-option'";
                      value 1;
                      description
                        "Time quality of primary reference time clock";
                    }
                    enum "ePRC" {
                      junos:must "("chassis synchronization enable-extended-ql-tlv")";
                      junos:must-message "Must configure 'chassis synchronization enable-extended-ql-tlv'";
                      junos:must "("chassis synchronization network-option")";
                      junos:must-message "Must configure 'chassis synchronization network-option'";
                      value 2;
                      description
                        "Time quality of enhanced primary reference clock";
                    }
                    enum "eEEC" {
                      junos:must "("chassis synchronization enable-extended-ql-tlv")";
                      junos:must-message "Must configure 'chassis synchronization enable-extended-ql-tlv'";
                      junos:must "("chassis synchronization network-option")";
                      junos:must-message "Must configure 'chassis synchronization network-option'";
                      value 3;
                      description
                        "Time quality of enhanced ethernet equipment clock";
                    }
                    enum "prc" {
                      junos:must "("chassis synchronization network-option option-1")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-1'";
                      value 4;
                      description
                        "Timing quality of a primary reference clock (option-1 only)";
                    }
                    enum "ssu-a" {
                      junos:must "("chassis synchronization network-option option-1")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-1'";
                      value 5;
                      description
                        "Timing quality of a type I or IV slave clock (option-1 only)";
                    }
                    enum "ssu-b" {
                      junos:must "("chassis synchronization network-option option-1")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-1'";
                      value 6;
                      description
                        "Timing quality of a type VI slave clock (option-1 only)";
                    }
                    enum "sec" {
                      junos:must "("chassis synchronization network-option option-1")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-1'";
                      value 7;
                      description
                        "Timing quality of SDH equipment clock (option-1 only)";
                    }
                    enum "prs" {
                      junos:must "("chassis synchronization network-option option-2")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                      value 8;
                      description
                        "Clock traceable to primary reference source (option-2 only)";
                    }
                    enum "st2" {
                      junos:must "("chassis synchronization network-option option-2")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                      value 9;
                      description
                        "Clock traceable to stratum 2 (option-2 only)";
                    }
                    enum "tnc" {
                      junos:must "("chassis synchronization network-option option-2")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                      value 10;
                      description
                        "Clock traceable to transit node clock (option-2 only)";
                    }
                    enum "st3e" {
                      junos:must "("chassis synchronization network-option option-2")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                      value 11;
                      description
                        "Clock traceable to stratum 3E (option-2 only)";
                    }
                    enum "st3" {
                      junos:must "("chassis synchronization network-option option-2")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                      value 12;
                      description
                        "Clock traceable to stratum 3 (option-2 only)";
                    }
                    enum "st4" {
                      junos:must "("chassis synchronization network-option option-2")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                      value 13;
                      description
                        "Clock traceable to stratum 4 free-run (option-2 only)";
                    }
                    enum "smc" {
                      junos:must "("chassis synchronization network-option option-2")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                      value 14;
                      description
                        "Clock traceable to self-timed SONET (option-2 only)";
                    }
                    enum "stu" {
                      junos:must "("chassis synchronization network-option option-2")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                      value 15;
                      description
                        "Clock traceable to unknown quality (option-2 only)";
                    }
                  }
                  description
                    "ESMC Clock EEC level";
                }
              }  // container virtual-port
    
              list interfaces {
                key "name";
                description
                  "Interface(s) with upstream clock source";
                leaf name {
                  type string;
                }
    
                uses apply-advanced;
    
                leaf priority {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 5";
                    }
                  }
                  description
                    "User priority for this clock";
                }
    
                leaf request {
                  type enumeration {
                    enum "lockout" {
                      value 0;
                      description
                        "Opt out of clock selection";
                    }
                    enum "force-switch" {
                      value 1;
                      description
                        "Switch to this interface as primary clock source";
                    }
                  }
                  description
                    "Clock selection request criterion";
                }
    
                leaf wait-to-restore {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 12";
                    }
                  }
                  units "min";
                  description
                    "Port signal up state time before opening for ESMC";
                }
    
                leaf no-ssm-support {
                  type empty;
                  description
                    "No SSM support available for this interface";
                }
    
                leaf hold-off-time {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "300 .. 1800";
                    }
                  }
                  units "milliseconds";
                  description
                    "Port signal down state time before closing for ESMC";
                }
    
                leaf aggregated-ether {
                  junos:must "("interfaces $$-IFL")";
                  junos:must-message "System AE interface should be configured";
                  type string;
                  description
                    "Aggregated sources group name";
                }
    
                leaf quality-level {
                  type enumeration {
                    enum "ePRTC" {
                      junos:must "("chassis synchronization enable-extended-ql-tlv")";
                      junos:must-message "Must configure 'chassis synchronization enable-extended-ql-tlv'";
                      junos:must "("chassis synchronization network-option")";
                      junos:must-message "Must configure 'chassis synchronization network-option'";
                      value 0;
                      description
                        "Time quality of enhanced primary reference time clock";
                    }
                    enum "PRTC" {
                      junos:must "("chassis synchronization enable-extended-ql-tlv")";
                      junos:must-message "Must configure 'chassis synchronization enable-extended-ql-tlv'";
                      junos:must "("chassis synchronization network-option")";
                      junos:must-message "Must configure 'chassis synchronization network-option'";
                      value 1;
                      description
                        "Time quality of primary reference time clock";
                    }
                    enum "ePRC" {
                      junos:must "("chassis synchronization enable-extended-ql-tlv")";
                      junos:must-message "Must configure 'chassis synchronization enable-extended-ql-tlv'";
                      junos:must "("chassis synchronization network-option")";
                      junos:must-message "Must configure 'chassis synchronization network-option'";
                      value 2;
                      description
                        "Time quality of enhanced primary reference clock";
                    }
                    enum "eEEC" {
                      junos:must "("chassis synchronization enable-extended-ql-tlv")";
                      junos:must-message "Must configure 'chassis synchronization enable-extended-ql-tlv'";
                      junos:must "("chassis synchronization network-option")";
                      junos:must-message "Must configure 'chassis synchronization network-option'";
                      value 3;
                      description
                        "Time quality of enhanced ethernet equipment clock";
                    }
                    enum "prc" {
                      junos:must "("chassis synchronization network-option option-1")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-1'";
                      value 4;
                      description
                        "Timing quality of a primary reference clock (option-1 only)";
                    }
                    enum "ssu-a" {
                      junos:must "("chassis synchronization network-option option-1")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-1'";
                      value 5;
                      description
                        "Timing quality of a type I or IV slave clock (option-1 only)";
                    }
                    enum "ssu-b" {
                      junos:must "("chassis synchronization network-option option-1")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-1'";
                      value 6;
                      description
                        "Timing quality of a type VI slave clock (option-1 only)";
                    }
                    enum "sec" {
                      junos:must "("chassis synchronization network-option option-1")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-1'";
                      value 7;
                      description
                        "Timing quality of SDH equipment clock (option-1 only)";
                    }
                    enum "prs" {
                      junos:must "("chassis synchronization network-option option-2")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                      value 8;
                      description
                        "Clock traceable to primary reference source (option-2 only)";
                    }
                    enum "st2" {
                      junos:must "("chassis synchronization network-option option-2")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                      value 9;
                      description
                        "Clock traceable to stratum 2 (option-2 only)";
                    }
                    enum "tnc" {
                      junos:must "("chassis synchronization network-option option-2")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                      value 10;
                      description
                        "Clock traceable to transit node clock (option-2 only)";
                    }
                    enum "st3e" {
                      junos:must "("chassis synchronization network-option option-2")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                      value 11;
                      description
                        "Clock traceable to stratum 3E (option-2 only)";
                    }
                    enum "st3" {
                      junos:must "("chassis synchronization network-option option-2")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                      value 12;
                      description
                        "Clock traceable to stratum 3 (option-2 only)";
                    }
                    enum "st4" {
                      junos:must "("chassis synchronization network-option option-2")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                      value 13;
                      description
                        "Clock traceable to stratum 4 free-run (option-2 only)";
                    }
                    enum "smc" {
                      junos:must "("chassis synchronization network-option option-2")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                      value 14;
                      description
                        "Clock traceable to self-timed SONET (option-2 only)";
                    }
                    enum "stu" {
                      junos:must "("chassis synchronization network-option option-2")";
                      junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                      value 15;
                      description
                        "Clock traceable to unknown quality (option-2 only)";
                    }
                  }
                  description
                    "ESMC Clock EEC level";
                }
              }  // list interfaces
            }  // container source
    
            container esmc-transmit {
              junos:must "("chassis synchronization network-option")";
              junos:must-message "Must configure 'chassis synchronization network-option'";
              junos:must "(!(("chassis synchronization primary" || "chassis synchronization secondary")))";
              junos:must-message "primary or secondary cannot be configured with esmc-transmit";
              description
                "ESMC transmit parameters";
              uses apply-advanced;
    
              list interfaces {
                key "name";
                ordered-by user;
                description
                  "Interface(s) on which to permit ESMC transmit messages";
                leaf name {
                  type string;
                }
    
                uses apply-advanced;
    
                container squelch {
                  junos:must "(!(("protocols ptp profile-type $$={g.8275.2}" && !("protocols ptp slave hybrid"))))";
                  junos:must-message "Must not configure squelch when using PTS mode i.e. g.8275.2 profile in non-hybrid mode";
                  presence "enable squelch";
                  description
                    "Squelch a interface";
                  uses apply-advanced;
    
                  leaf method {
                    type enumeration {
                      enum "ais" {
                        value 0;
                        description "Send AIS";
                      }
                      enum "ql-dnu" {
                        value 1;
                        description
                          "Send DNU Quality level out";
                      }
                      enum "rai" {
                        value 2;
                        description "Method RAI";
                      }
                      enum "shut" {
                        value 3;
                        description "Shutdown";
                      }
                    }
                    description
                      "Type of Squelch to be done";
                  }
    
                  leaf quality-level {
                    type enumeration {
                      enum "ePRTC" {
                        junos:must "("chassis synchronization enable-extended-ql-tlv")";
                        junos:must-message "Must configure 'chassis synchronization enable-extended-ql-tlv'";
                        junos:must "("chassis synchronization network-option")";
                        junos:must-message "Must configure 'chassis synchronization network-option'";
                        value 0;
                        description
                          "Time quality of enhanced primary reference time clock";
                      }
                      enum "PRTC" {
                        junos:must "("chassis synchronization enable-extended-ql-tlv")";
                        junos:must-message "Must configure 'chassis synchronization enable-extended-ql-tlv'";
                        junos:must "("chassis synchronization network-option")";
                        junos:must-message "Must configure 'chassis synchronization network-option'";
                        value 1;
                        description
                          "Time quality of primary reference time clock";
                      }
                      enum "ePRC" {
                        junos:must "("chassis synchronization enable-extended-ql-tlv")";
                        junos:must-message "Must configure 'chassis synchronization enable-extended-ql-tlv'";
                        junos:must "("chassis synchronization network-option")";
                        junos:must-message "Must configure 'chassis synchronization network-option'";
                        value 2;
                        description
                          "Time quality of enhanced primary reference clock";
                      }
                      enum "eEEC" {
                        junos:must "("chassis synchronization enable-extended-ql-tlv")";
                        junos:must-message "Must configure 'chassis synchronization enable-extended-ql-tlv'";
                        junos:must "("chassis synchronization network-option")";
                        junos:must-message "Must configure 'chassis synchronization network-option'";
                        value 3;
                        description
                          "Time quality of enhanced ethernet equipment clock";
                      }
                      enum "prc" {
                        junos:must "("chassis synchronization network-option option-1")";
                        junos:must-message "Must configure 'chassis synchronization network-option option-1'";
                        value 4;
                        description
                          "Timing quality of a primary reference clock (option-1 only)";
                      }
                      enum "ssu-a" {
                        junos:must "("chassis synchronization network-option option-1")";
                        junos:must-message "Must configure 'chassis synchronization network-option option-1'";
                        value 5;
                        description
                          "Timing quality of a type I or IV slave clock (option-1 only)";
                      }
                      enum "ssu-b" {
                        junos:must "("chassis synchronization network-option option-1")";
                        junos:must-message "Must configure 'chassis synchronization network-option option-1'";
                        value 6;
                        description
                          "Timing quality of a type VI slave clock (option-1 only)";
                      }
                      enum "sec" {
                        junos:must "("chassis synchronization network-option option-1")";
                        junos:must-message "Must configure 'chassis synchronization network-option option-1'";
                        value 7;
                        description
                          "Timing quality of SDH equipment clock (option-1 only)";
                      }
                      enum "prs" {
                        junos:must "("chassis synchronization network-option option-2")";
                        junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                        value 8;
                        description
                          "Clock traceable to primary reference source (option-2 only)";
                      }
                      enum "st2" {
                        junos:must "("chassis synchronization network-option option-2")";
                        junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                        value 9;
                        description
                          "Clock traceable to stratum 2 (option-2 only)";
                      }
                      enum "tnc" {
                        junos:must "("chassis synchronization network-option option-2")";
                        junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                        value 10;
                        description
                          "Clock traceable to transit node clock (option-2 only)";
                      }
                      enum "st3e" {
                        junos:must "("chassis synchronization network-option option-2")";
                        junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                        value 11;
                        description
                          "Clock traceable to stratum 3E (option-2 only)";
                      }
                      enum "st3" {
                        junos:must "("chassis synchronization network-option option-2")";
                        junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                        value 12;
                        description
                          "Clock traceable to stratum 3 (option-2 only)";
                      }
                      enum "st4" {
                        junos:must "("chassis synchronization network-option option-2")";
                        junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                        value 13;
                        description
                          "Clock traceable to stratum 4 free-run (option-2 only)";
                      }
                      enum "smc" {
                        junos:must "("chassis synchronization network-option option-2")";
                        junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                        value 14;
                        description
                          "Clock traceable to self-timed SONET (option-2 only)";
                      }
                      enum "stu" {
                        junos:must "("chassis synchronization network-option option-2")";
                        junos:must-message "Must configure 'chassis synchronization network-option option-2'";
                        value 15;
                        description
                          "Clock traceable to unknown quality (option-2 only)";
                      }
                    }
                    description
                      "ESMC Quality level below which output is squelched";
                  }
                }  // container squelch
              }  // list interfaces
            }  // container esmc-transmit
    
            container hold-interval {
              description "Hold interval";
              uses apply-advanced;
    
              leaf switchover {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "30 .. 60";
                  }
                }
                units "sec";
                default "30";
                description
                  "Switchover wait time after clock recovery";
              }
    
              leaf configuration-change {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "15 .. 60";
                  }
                }
                units "sec";
                default "15";
                description
                  "Clock select wait time after change in config";
              }
    
              leaf restart {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "60 .. 180";
                  }
                }
                units "sec";
                default "120";
                description
                  "Clock select wait time after reboot";
              }
            }  // container hold-interval
    
            leaf signal-type {
              type enumeration {
                enum "e1" {
                  value 0;
                  description
                    "E1-coded 2048 Khz signal on 120 ohm balanced line";
                }
                enum "t1" {
                  value 1;
                  description
                    "T1-coded 1.544 Mhz signal on 100 ohm balanced line";
                }
                enum "cc-8k" {
                  value 2;
                  description
                    "Composite Clock 64kHz+8kHz";
                }
                enum "cc-8k-400" {
                  value 3;
                  description
                    "Composite Clock 64kHz+8kHz+400Hz";
                }
                enum "6312k" {
                  value 4;
                  description
                    "Japanese Standard 6312kHz";
                }
              }
              default "t1";
              description
                "Frequency for provided reference clocks";
            }
    
            leaf primary {
              junos:must "((!("chassis synchronization source") || "chassis synchronization esmc-transmit"))";
              junos:must-message "source or esmc-transmit cannot be configured with primary";
              type enumeration {
                enum "external-a" {
                  value 0;
                  description
                    "Use external-a as a primary source";
                }
                enum "external-b" {
                  value 1;
                  description
                    "Use external-b as a primary source";
                }
                enum "bits-a" {
                  value 2;
                  description
                    "Use bits-a as a primary source";
                }
                enum "bits-b" {
                  value 3;
                  description
                    "Use bits-b as a primary source";
                }
                enum "gps-0" {
                  junos:must "(!("chassis synchronization secondary gps-0"))";
                  junos:must-message "not allowed when gps-0 is already configured";
                  value 4;
                  description
                    "Use gps-0 as a primary source";
                }
                enum "gps-1" {
                  junos:must "(!("chassis synchronization secondary gps-1"))";
                  junos:must-message "not allowed when gps-1 is already configured";
                  value 5;
                  description
                    "Use gps-1 as a primary source";
                }
                enum "fpc-0" {
                  junos:must "(("chassis fpc 0 pic 0 recovered-clock" || "chassis fpc 0 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  value 6;
                  description
                    "Use fpc-0 as a primary source";
                }
                enum "fpc-1" {
                  junos:must "(("chassis fpc 1 pic 0 recovered-clock" || "chassis fpc 1 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  value 7;
                  description
                    "Use fpc-1 as a primary source";
                }
                enum "fpc-2" {
                  junos:must "(("chassis fpc 2 pic 0 recovered-clock" || "chassis fpc 2 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  value 8;
                  description
                    "Use fpc-2 as a primary source";
                }
                enum "fpc-3" {
                  junos:must "(("chassis fpc 3 pic 0 recovered-clock" || "chassis fpc 3 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  value 9;
                  description
                    "Use fpc-3 as a primary source";
                }
                enum "fpc-4" {
                  junos:must "(("chassis fpc 4 pic 0 recovered-clock" || "chassis fpc 4 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  value 10;
                  description
                    "Use fpc-4 as a primary source";
                }
                enum "fpc-5" {
                  junos:must "(("chassis fpc 5 pic 0 recovered-clock" || "chassis fpc 5 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  value 11;
                  description
                    "Use fpc-5 as a primary source";
                }
                enum "fpc-6" {
                  junos:must "(("chassis fpc 6 pic 0 recovered-clock" || "chassis fpc 6 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  value 12;
                  description
                    "Use fpc-6 as a primary source";
                }
                enum "fpc-7" {
                  junos:must "(("chassis fpc 7 pic 0 recovered-clock" || "chassis fpc 7 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  value 13;
                  description
                    "Use fpc-7 as a primary source";
                }
                enum "fpc-8" {
                  junos:must "(("chassis fpc 8 pic 0 recovered-clock" || "chassis fpc 8 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  value 14;
                  description
                    "Use fpc-8 as a primary source";
                }
                enum "fpc-9" {
                  junos:must "(("chassis fpc 9 pic 0 recovered-clock" || "chassis fpc 9 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  value 15;
                  description
                    "Use fpc-9 as a primary source";
                }
                enum "fpc-10" {
                  junos:must "(("chassis fpc 10 pic 0 recovered-clock" || "chassis fpc 10 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  value 16;
                  description
                    "Use fpc-10 as a primary source";
                }
                enum "fpc-11" {
                  junos:must "(("chassis fpc 11 pic 0 recovered-clock" || "chassis fpc 11 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  value 17;
                  description
                    "Use fpc-11 as a primary source";
                }
                enum "fpc-12" {
                  junos:must "(("chassis fpc 12 pic 0 recovered-clock" || "chassis fpc 12 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  value 18;
                  description
                    "Use fpc-12 as a primary source";
                }
                enum "fpc-13" {
                  junos:must "(("chassis fpc 13 pic 0 recovered-clock" || "chassis fpc 13 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  value 19;
                  description
                    "Use fpc-13 as a primary source";
                }
                enum "fpc-14" {
                  junos:must "(("chassis fpc 14 pic 0 recovered-clock" || "chassis fpc 14 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  value 20;
                  description
                    "Use fpc-14 as a primary source";
                }
                enum "fpc-15" {
                  junos:must "(("chassis fpc 15 pic 0 recovered-clock" || "chassis fpc 15 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  value 21;
                  description
                    "Use fpc-15 as a primary source";
                }
              }
              description
                "Best choice synchronization reference source list";
            }
    
            leaf secondary {
              junos:must "((!("chassis synchronization source") || "chassis synchronization esmc-transmit"))";
              junos:must-message "source or esmc-transmit cannot be configured with secondary";
              type enumeration {
                enum "external-a" {
                  junos:must "(!("chassis synchronization primary external-a"))";
                  junos:must-message "external-a can be either primary or secondary";
                  value 0;
                  description
                    "Use external-a as a secondary source";
                }
                enum "external-b" {
                  junos:must "(!("chassis synchronization primary external-b"))";
                  junos:must-message "external-b can be either primary or secondary";
                  value 1;
                  description
                    "Use external-b as a secondary source";
                }
                enum "bits-a" {
                  junos:must "(!("chassis synchronization primary bits-a"))";
                  junos:must-message "bits-a can be either primary or secondary";
                  value 2;
                  description
                    "Use bits-a as a secondary source";
                }
                enum "bits-b" {
                  junos:must "(!("chassis synchronization primary bits-b"))";
                  junos:must-message "bits-b can be either primary or secondary";
                  value 3;
                  description
                    "Use bits-b as a secondary source";
                }
                enum "gps-0" {
                  junos:must "(!("chassis synchronization primary gps-0"))";
                  junos:must-message "gps-0 can be either primary or secondary";
                  value 4;
                  description
                    "Use gps-0 as a secondary source";
                }
                enum "gps-1" {
                  junos:must "(!("chassis synchronization primary gps-1"))";
                  junos:must-message "gps-1 can be either primary or secondary";
                  value 5;
                  description
                    "Use gps-1 as a secondary source";
                }
                enum "fpc-0" {
                  junos:must "(("chassis fpc 0 pic 0 recovered-clock" || "chassis fpc 0 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  junos:must "(!("chassis synchronization primary fpc-0"))";
                  junos:must-message "fpc-0 can be either primary or secondary";
                  value 6;
                  description
                    "Use fpc-0 as a secondary source";
                }
                enum "fpc-1" {
                  junos:must "(("chassis fpc 1 pic 0 recovered-clock" || "chassis fpc 1 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  junos:must "(!("chassis synchronization primary fpc-1"))";
                  junos:must-message "fpc-1 can be either primary or secondary";
                  value 7;
                  description
                    "Use fpc-1 as a secondary source";
                }
                enum "fpc-2" {
                  junos:must "(("chassis fpc 2 pic 0 recovered-clock" || "chassis fpc 2 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  junos:must "(!("chassis synchronization primary fpc-2"))";
                  junos:must-message "fpc-2 can be either primary or secondary";
                  value 8;
                  description
                    "Use fpc-2 as a secondary source";
                }
                enum "fpc-3" {
                  junos:must "(("chassis fpc 3 pic 0 recovered-clock" || "chassis fpc 3 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  junos:must "(!("chassis synchronization primary fpc-3"))";
                  junos:must-message "fpc-3 can be either primary or secondary";
                  value 9;
                  description
                    "Use fpc-3 as a secondary source";
                }
                enum "fpc-4" {
                  junos:must "(("chassis fpc 4 pic 0 recovered-clock" || "chassis fpc 4 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  junos:must "(!("chassis synchronization primary fpc-4"))";
                  junos:must-message "fpc-4 can be either primary or secondary";
                  value 10;
                  description
                    "Use fpc-4 as a secondary source";
                }
                enum "fpc-5" {
                  junos:must "(("chassis fpc 5 pic 0 recovered-clock" || "chassis fpc 5 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  junos:must "(!("chassis synchronization primary fpc-5"))";
                  junos:must-message "fpc-5 can be either primary or secondary";
                  value 11;
                  description
                    "Use fpc-5 as a secondary source";
                }
                enum "fpc-6" {
                  junos:must "(("chassis fpc 6 pic 0 recovered-clock" || "chassis fpc 6 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  junos:must "(!("chassis synchronization primary fpc-6"))";
                  junos:must-message "fpc-6 can be either primary or secondary";
                  value 12;
                  description
                    "Use fpc-6 as a secondary source";
                }
                enum "fpc-7" {
                  junos:must "(("chassis fpc 7 pic 0 recovered-clock" || "chassis fpc 7 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  junos:must "(!("chassis synchronization primary fpc-7"))";
                  junos:must-message "fpc-7 can be either primary or secondary";
                  value 13;
                  description
                    "Use fpc-7 as a secondary source";
                }
                enum "fpc-8" {
                  junos:must "(("chassis fpc 8 pic 0 recovered-clock" || "chassis fpc 8 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  junos:must "(!("chassis synchronization primary fpc-8"))";
                  junos:must-message "fpc-8 can be either primary or secondary";
                  value 14;
                  description
                    "Use fpc-8 as a secondary source";
                }
                enum "fpc-9" {
                  junos:must "(("chassis fpc 9 pic 0 recovered-clock" || "chassis fpc 9 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  junos:must "(!("chassis synchronization primary fpc-9"))";
                  junos:must-message "fpc-9 can be either primary or secondary";
                  value 15;
                  description
                    "Use fpc-9 as a secondary source";
                }
                enum "fpc-10" {
                  junos:must "(("chassis fpc 10 pic 0 recovered-clock" || "chassis fpc 10 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  junos:must "(!("chassis synchronization primary fpc-10"))";
                  junos:must-message "fpc-10 can be either primary or secondary";
                  value 16;
                  description
                    "Use fpc-10 as a secondary source";
                }
                enum "fpc-11" {
                  junos:must "(("chassis fpc 11 pic 0 recovered-clock" || "chassis fpc 11 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  junos:must "(!("chassis synchronization primary fpc-11"))";
                  junos:must-message "fpc-11 can be either primary or secondary";
                  value 17;
                  description
                    "Use fpc-11 as a secondary source";
                }
                enum "fpc-12" {
                  junos:must "(("chassis fpc 12 pic 0 recovered-clock" || "chassis fpc 12 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  junos:must "(!("chassis synchronization primary fpc-12"))";
                  junos:must-message "fpc-12 can be either primary or secondary";
                  value 18;
                  description
                    "Use fpc-12 as a secondary source";
                }
                enum "fpc-13" {
                  junos:must "(("chassis fpc 13 pic 0 recovered-clock" || "chassis fpc 13 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  junos:must "(!("chassis synchronization primary fpc-13"))";
                  junos:must-message "fpc-13 can be either primary or secondary";
                  value 19;
                  description
                    "Use fpc-13 as a secondary source";
                }
                enum "fpc-14" {
                  junos:must "(("chassis fpc 14 pic 0 recovered-clock" || "chassis fpc 14 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  junos:must "(!("chassis synchronization primary fpc-14"))";
                  junos:must-message "fpc-14 can be either primary or secondary";
                  value 20;
                  description
                    "Use fpc-14 as a secondary source";
                }
                enum "fpc-15" {
                  junos:must "(("chassis fpc 15 pic 0 recovered-clock" || "chassis fpc 15 pic 1 recovered-clock"))";
                  junos:must-message "Must configure recovered-clock for this fpc";
                  junos:must "(!("chassis synchronization primary fpc-15"))";
                  junos:must-message "fpc-15 can be either primary or secondary";
                  value 21;
                  description
                    "Use fpc-15 as a secondary source";
                }
              }
              description
                "Alternative choice synchronization reference source list";
            }
          }  // container synchronization
    
          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 {
                  junos:must "(!(".. unicast-in-lpm"))";
                  junos:must-message "Cannot set both unicast-in-lpm and prefix-65-127-disable at the same time";
                  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 {
                    junos:must "(!(".. unicast-in-lpm"))";
                    junos:must-message "Cannot set both unicast-in-lpm and prefix-65-127-disable at the same time";
                    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";
          }
    
          container psm {
            description "Power supply module";
            uses apply-advanced;
          }  // container psm
    
          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
    
          leaf auto-satellite-conversion {
            type empty;
            description
              "Enable remote conversion to satellite device-mode";
          }
    
          container satellite-management {
            junos:must "(!("chassis aggregated-devices disable-lag-enhanced"))";
            junos:must-message "To configure chassis satellite-management, chassis aggregated-devices disable-lag-enhanced must not be set";
            presence
              "enable satellite-management";
            description
              "Satellite management configuration";
            uses apply-advanced;
    
            container designated-event-forwarding {
              presence
                "enable designated-event-forwarding";
              description
                "Designated event forwarding";
            }  // container designated-event-forwarding
    
            container traceoptions {
              description
                "Global satelite discovery and provisioning trace options";
              uses apply-advanced;
    
              leaf no-remote-trace {
                junos:must "("system tracing")";
                junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
                type empty;
                description
                  "Disable remote tracing";
              }
    
              container file {
                description
                  "Trace file information";
                leaf filename {
                  type string {
                    junos:posix-pattern "![/ %]";
                    junos:pattern-message "Must not contain '/', % or a space";
                    length "1 .. 1024";
                  }
                  description
                    "Name of file in which to write trace information";
                }
    
                leaf size {
                  type string;
                  description
                    "Maximum trace file size";
                }
    
                leaf files {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "2 .. 1000";
                    }
                  }
                  default "3";
                  description
                    "Maximum number of trace files";
                }
    
                choice world-readable-choice {
                  leaf world-readable {
                    type empty;
                    description
                      "Allow any user to read the log file";
                  }
                  leaf no-world-readable {
                    type empty;
                    description
                      "Don't allow any user to read the log file";
                  }
                }  // choice world-readable-choice
    
                leaf match {
                  type jt:regular-expression;
                  description
                    "Regular expression for lines to be logged";
                }
              }  // container file
    
              list flag {
                key "name";
                ordered-by user;
                description "Tracing parameters";
                leaf name {
                  type enumeration {
                    enum "parse" {
                      value 0;
                      description
                        "Trace configuration parsing";
                    }
                    enum "config-internal" {
                      value 1;
                      description
                        "Trace configuration internals";
                    }
                    enum "normal" {
                      value 2;
                      description
                        "Trace normal events";
                    }
                    enum "general" {
                      value 3;
                      description
                        "Trace general events";
                    }
                    enum "state" {
                      value 4;
                      description
                        "Trace state transitions";
                    }
                    enum "task" {
                      value 5;
                      description
                        "Trace SDPD task processing";
                    }
                    enum "timer" {
                      value 6;
                      description
                        "Trace SDPD task timer processing";
                    }
                    enum "krt" {
                      value 7;
                      description
                        "Trace communication over routing socket";
                    }
                    enum "lldp" {
                      value 8;
                      description
                        "Trace LLDP events";
                    }
                    enum "provision" {
                      value 9;
                      description
                        "Trace provisioning events";
                    }
                    enum "extended-port" {
                      value 10;
                      description
                        "Trace extended-port events";
                    }
                    enum "multi-chassis" {
                      value 11;
                      description
                        "Trace multi-chassis events";
                    }
                    enum "upgrade-group" {
                      value 12;
                      description
                        "Trace sw-update events";
                    }
                    enum "device" {
                      value 13;
                      description
                        "Trace device FSM events";
                    }
                    enum "tcp" {
                      value 14;
                      description
                        "Trace TCP events";
                    }
                    enum "interface" {
                      value 15;
                      description
                        "Trace interface events";
                    }
                    enum "cluster" {
                      value 16;
                      description
                        "Trace cluster events";
                    }
                    enum "all" {
                      value 17;
                      description
                        "Trace everything";
                    }
                  }
                }
    
                leaf disable {
                  type empty;
                  description
                    "Disable this trace flag";
                }
              }  // list flag
            }  // container traceoptions
    
            leaf cluster-policy {
              junos:must "("policy-options satellite-policies candidate-uplink-port-policy $$")";
              junos:must-message "Satellite cluster-policy not defined";
              type string;
              description "Cluster policy";
            }
    
            list cluster {
              key "name";
              description
                "Configure a satellite device cluster";
              leaf name {
                type string {
                  length "1 .. 16";
                }
                description
                  "Satellite cluster name";
              }
    
              uses apply-advanced;
    
              leaf cluster-id {
                junos:must "(unique "chassis satellite-management cluster <*> cluster-id $$")";
                junos:must-message "Cluster-id has to be unique among all provisioned clusters";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 32";
                  }
                }
                description
                  "Satellite cluster identifier";
              }
    
              leaf-list cascade-ports {
                type union {
                  type jt:interface-device;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description "Cascade ports";
              }
    
              leaf cluster-policy {
                junos:must "("policy-options satellite-policies candidate-uplink-port-policy $$")";
                junos:must-message "Satellite cluster-policy not defined";
                type string;
                description
                  "Candidate uplink policy";
              }
    
              list fpc {
                key "name";
                leaf name {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "65 .. 254";
                    }
                  }
                  description
                    "Satellite slot identifier";
                }
    
                uses apply-advanced;
    
                leaf alias {
                  junos:must "(unique "chassis satellite-management cluster <*> fpc <*> alias $$")";
                  junos:must-message "alias has to be unique among all provisioned satellite-devices";
                  junos:must "(unique "chassis satellite-management fpc <*> alias $$")";
                  junos:must-message "alias has to be unique among all provisioned satellite-devices";
                  type string {
                    length "1 .. 16";
                  }
                  description "Satellite alias";
                }
    
                leaf description {
                  type string {
                    length "1 .. 64";
                  }
                  description
                    "Satellite description";
                }
    
                leaf member-id {
                  junos:must "(unique ".. .. fpc <*> member-id $$")";
                  junos:must-message "Member-id has to be unique among all members in a cluster";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 62";
                    }
                  }
                  description
                    "Satellite member id";
                }
    
                leaf system-id {
                  junos:must "(unique "chassis satellite-management cluster <*> fpc <*> system-id $$")";
                  junos:must-message "System-id has to be unique among all provisioned satellite-devices";
                  junos:must "(unique "chassis satellite-management fpc <*> system-id $$")";
                  junos:must-message "System-id has to be unique among all provisioned satellite-devices";
                  type jt:mac-addr;
                  description
                    "Satellite system id";
                }
    
                leaf cluster-policy {
                  junos:must "("policy-options satellite-policies candidate-uplink-port-policy $$")";
                  junos:must-message "Satellite Cluster policy not defined";
                  type string;
                  description
                    "Candidate uplink policy";
                }
              }  // list fpc
            }  // list cluster
    
            list fpc {
              key "name";
              description
                "FPC identifier for a satellite device";
              leaf name {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "65 .. 254";
                  }
                }
                description
                  "Satellite slot identifier";
              }
    
              uses apply-advanced;
    
              leaf serial-number {
                junos:must "(unique "chassis satellite-management fpc <*> serial-number $$")";
                junos:must-message "serial-number has to be unique among all provisioned satellite-devices";
                type string {
                  length "1 .. 16";
                }
                description
                  "Satellite serial number";
              }
    
              leaf system-id {
                junos:must "(unique "chassis satellite-management fpc <*> system-id $$")";
                junos:must-message "System-id has to be unique among all provisioned satellite-devices";
                type jt:mac-addr;
                description
                  "Satellite system id";
              }
    
              leaf target-mode {
                type empty;
                description
                  "Enable target mode forwarding for extended-ports";
              }
    
              leaf alias {
                junos:must "(unique "chassis satellite-management fpc <*> alias $$")";
                junos:must-message "alias has to be unique among all provisioned satellite-devices";
                type string {
                  length "1 .. 16";
                }
                description "Satellite alias";
              }
    
              leaf description {
                type string {
                  length "1 .. 64";
                }
                description
                  "Satellite description";
              }
    
              container management-address {
                presence
                  "enable management-address";
                description
                  "Satellite Management Interface IP";
                uses apply-advanced;
    
                leaf address {
                  junos:must "(unique "chassis satellite-management fpc <*> management-address address $$")";
                  junos:must-message "management interface IP address has to be unique among all provisioned satellite-devices";
                  type jt:ipv4prefix;
                  description
                    "Satellite Management Interface IP address";
                }
    
                leaf gateway {
                  type jt:ipv4addr;
                  description
                    "Satellite Management Interface Gateway IP address";
                }
              }  // container management-address
    
              leaf-list cascade-ports {
                type union {
                  type jt:interface-device;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description "Cascade ports";
              }
    
              leaf extended-ports-template {
                junos:must "("policy-options satellite-policies extended-ports-template $$")";
                junos:must-message "Extended ports template not defined";
                type string;
                description
                  "Extended ports template";
              }
    
              choice ufd_type {
                container uplink-failure-detection {
                  presence
                    "enable uplink-failure-detection";
                  description
                    "Enable uplink-failure-detection";
                  uses apply-advanced;
    
                  leaf candidate-uplink-policy {
                    junos:must "("policy-options satellite-policies candidate-uplink-port-policy $$")";
                    junos:must-message "Candidate-uplink-port-policy not defined";
                    type string;
                    description
                      "Candidate uplink policy";
                  }
                }  // container uplink-failure-detection
              }  // choice ufd_type
    
              leaf environment-monitoring-policy {
                junos:must "("policy-options satellite-policies environment-monitoring-policy $$")";
                junos:must-message "Environment monitoring policy not defined";
                type string;
                description
                  "Environment monitoring policy";
              }
    
              choice forwarding-policy-type {
                container forwarding-policy {
                  presence
                    "enable forwarding-policy";
                  description
                    "Enable a forwarding policy";
                  uses apply-advanced;
    
                  leaf forwarding-policy-alias {
                    junos:must "("policy-options satellite-policies forwarding-policy $$")";
                    junos:must-message "forwarding-policy not defined";
                    type string;
                    description
                      "Define forwarding policy alias";
                  }
                }  // container forwarding-policy
              }  // choice forwarding-policy-type
            }  // list fpc
    
            leaf extended-ports-policy {
              junos:must "("policy-options satellite-policies extended-ports-policy $$")";
              junos:must-message "Extended ports policy not defined";
              type string;
              description
                "Extended ports policy";
            }
    
            choice ufd_type {
              container uplink-failure-detection {
                presence
                  "enable uplink-failure-detection";
                description
                  "Enable uplink-failure-detection";
                uses apply-advanced;
    
                leaf candidate-uplink-policy {
                  junos:must "("policy-options satellite-policies candidate-uplink-port-policy $$")";
                  junos:must-message "Candidate-uplink-port-policy not defined";
                  type string;
                  description
                    "Candidate uplink policy";
                }
              }  // container uplink-failure-detection
            }  // choice ufd_type
    
            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
    
            container environment-monitoring-policy {
              presence
                "enable environment-monitoring-policy";
              description
                "Environment monitoring policy";
              uses apply-advanced;
    
              leaf policy-name {
                junos:must "("policy-options satellite-policies environment-monitoring-policy $$")";
                junos:must-message "Environment monitoring policy not defined";
                type string;
                description
                  "Default environment monitoring policy";
              }
            }  // container environment-monitoring-policy
    
            choice forwarding-policy-type {
              container forwarding-policy {
                presence
                  "enable forwarding-policy";
                description
                  "Enable a forwarding policy";
                uses apply-advanced;
    
                leaf forwarding-policy-alias {
                  junos:must "("policy-options satellite-policies forwarding-policy $$")";
                  junos:must-message "forwarding-policy not defined";
                  type string;
                  description
                    "Define forwarding policy alias";
                }
              }  // container forwarding-policy
            }  // choice forwarding-policy-type
    
            container redundancy-groups {
              description
                "Redundancy groups configuration";
              uses apply-advanced;
    
              leaf chassis-id {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 4";
                  }
                }
                description "Chassis identifier";
              }
    
              list rg-group {
                key "name";
                ordered-by user;
                description "Redundancy groups";
                uses redundancy-group-type;
              }  // list rg-group
            }  // container redundancy-groups
    
            container upgrade-groups {
              description
                "Upgrade group configuration";
              uses apply-advanced;
    
              list upgrade-group {
                key "name";
                description "Upgrade group";
                uses upgrade-group-type;
              }  // list upgrade-group
            }  // container upgrade-groups
    
            container auto-satellite-conversion {
              description
                "Enable automatic satellite conversion";
              uses apply-advanced;
    
              leaf-list satellite {
                type string {
                  length "1 .. 100";
                }
                ordered-by user;
                description
                  "Satellite slot-id or range or all";
              }
            }  // container auto-satellite-conversion
    
            container single-home {
              description
                "Devices are connected to local aggregation device only";
              uses apply-advanced;
    
              leaf-list satellite {
                type string {
                  length "1 .. 100";
                }
                ordered-by user;
                description
                  "Satellite slot-id or range or all";
              }
            }  // container single-home
    
            leaf aging-timer {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 60000";
                }
              }
              units "minutes";
              description "Aging-timer";
            }
    
            leaf block-console-access {
              type empty;
              description "Block console access";
            }
    
            container firewall {
              description
                "Define a firewall configuration";
              uses apply-advanced;
    
              container family {
                description "Protocol family";
                container bridge {
                  description
                    "Protocol family BRIDGE for firewall filter";
                  uses apply-advanced;
    
                  list filter {
                    key "name";
                    ordered-by user;
                    uses satellite-bridge-filter;
                  }  // list filter
                }  // container bridge
    
                container ethernet-switching {
                  description
                    "Protocol family Ethernet Switching for firewall filter";
                  uses apply-advanced;
    
                  list filter {
                    key "name";
                    ordered-by user;
                    description
                      "Define an Ethernet Switching firewall filter";
                    uses satellite-bridge-filter;
                  }  // list filter
                }  // container ethernet-switching
              }  // container family
            }  // container firewall
          }  // container satellite-management
    
          container periodic {
            description
              "Chassisd periodic options";
            uses apply-advanced;
    
            leaf ch-power-check-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 60";
                }
              }
              units "seconds";
              default "0";
              description
                "Chassis power check interval, 0=default";
            }
    
            leaf re-check-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 60";
                }
              }
              units "seconds";
              default "0";
              description
                "Chassis RE check interval, 0=default";
            }
          }  // container periodic
    
          container thermal-health-check {
            presence
              "enable thermal-health-check";
            description
              "Enable Thermal Health check of the chassis";
            uses apply-advanced;
    
            container fet-failure-check {
              presence
                "enable fet-failure-check";
              uses apply-advanced;
    
              leaf action-onfail {
                type enumeration {
                  enum "none" {
                    value 0;
                    description
                      "No action when Oring FET detected";
                  }
                  enum "auto-shutdown" {
                    value 1;
                    description
                      "Shutdown when Oring FET detected";
                  }
                }
                default "none";
                description
                  "Set the action when Oring FET detected";
              }
            }  // container fet-failure-check
          }  // container thermal-health-check
    
          container mode {
            presence "enable mode";
            description
              "Bringup FRU in Standalone mode";
            uses apply-advanced;
    
            container standalone {
              presence "enable standalone";
              description
                "Bringup FRU in standalone mode1";
              uses apply-advanced;
    
              list fpc {
                key "name";
                leaf name {
                  type string {
                    length "1 .. 4";
                  }
                  description "FPC slot number";
                }
    
                uses apply-advanced;
    
                container loopback {
                  description
                    "Loopback Configuration for Mode & Type";
                  uses apply-advanced;
    
                  leaf wan {
                    type enumeration {
                      enum "serdes" {
                        value 0;
                        description
                          "Serdes type loopback";
                      }
                      enum "retimer" {
                        value 1;
                        description
                          "Retimer type loopback";
                      }
                    }
                    default "serdes";
                  }
    
                  leaf fabric {
                    type enumeration {
                      enum "serdes" {
                        value 0;
                        description
                          "Serdes type loopback";
                      }
                      enum "retimer" {
                        value 1;
                        description
                          "Retimer type loopback";
                      }
                    }
                    default "serdes";
                  }
                }  // container loopback
              }  // list fpc
    
              list fabric-card {
                key "name";
                ordered-by user;
                description
                  "Fabric Card Loopback setting";
                uses chassis_fabric_card_type;
              }  // list fabric-card
            }  // container standalone
          }  // container mode
    
          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
        }  // 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;
    
          leaf ae-20 {
            type empty;
            status deprecated;
            description
              "Run AE over Container nexthops Infrastructure";
          }
    
          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_port_op_type {
          uses apply-advanced;
    
          container input {
            description "Input alarm port";
            uses apply-advanced;
    
            list port {
              key "name";
              ordered-by user;
              description "Input Port";
              leaf name {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 3";
                  }
                }
                description "Alarm port ID";
              }
    
              uses apply-advanced;
    
              leaf active {
                type enumeration {
                  enum "low" {
                    value 0;
                    description
                      "Active signal of alarm IO port to low(default)";
                  }
                  enum "high" {
                    value 1;
                    description
                      "Active signal of alarm IO port to high";
                  }
                }
                description
                  "Active signal of alarm IO input port";
              }
    
              leaf admin-state {
                type enumeration {
                  enum "disabled" {
                    value 0;
                    description
                      "Administrative state of alarm IO port to disable(default)";
                  }
                  enum "enabled" {
                    value 1;
                    description
                      "Administrative state of alarm IO port to enabled";
                  }
                }
                description
                  "Administrative state of alarm IO input port";
              }
    
              container description {
                description
                  "Alarm description of alarm IO input port";
                uses apply-advanced;
    
                leaf descr {
                  type string;
                  description
                    "Description to be used for alarm IO output port";
                }
              }  // container description
    
              leaf severity {
                type enumeration {
                  enum "critical" {
                    value 0;
                    description
                      "Alarm severity of alarm IO input port to ciritical(default)";
                  }
                  enum "major" {
                    value 1;
                    description
                      "Alarm severity of alarm IO input port to major";
                  }
                  enum "minor" {
                    value 2;
                    description
                      "Alarm severity of alarm IO input port to minor";
                  }
                  enum "warning" {
                    value 3;
                    description
                      "Alarm severity of alarm IO input port to warning";
                  }
                }
                description
                  "Set alarm severity of alarm IO input port";
              }
            }  // list port
          }  // container input
    
          container output {
            description "Output alarm port";
            uses apply-advanced;
    
            list port {
              key "name";
              ordered-by user;
              description "Output port";
              leaf name {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1";
                  }
                }
                description
                  "Alarm IO output port ID";
              }
    
              uses apply-advanced;
    
              leaf admin-state {
                type enumeration {
                  enum "disabled" {
                    value 0;
                    description
                      "Administrative state of alarm IO port to disable(default)";
                  }
                  enum "enabled" {
                    value 1;
                    description
                      "Administrative state of alarm IO port to enabled";
                  }
                }
                description
                  "Administrative state of alarm IO output port";
              }
    
              container description {
                description
                  "Alarm description of alarm IO output port";
                uses apply-advanced;
    
                leaf descr {
                  type string;
                  description
                    "Description to be used for alarm IO output port";
                }
              }  // container description
            }  // list port
          }  // container output
        }  // grouping chassis_alarm_port_op_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 sonet {
            description "SONET alarms";
            uses chassis_alarm_sonet_type;
          }  // container sonet
    
          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 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
        }  // 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_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_alarm_sonet_type {
          uses apply-advanced;
    
          leaf lol {
            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 light";
          }
    
          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 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 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 ais-l {
            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 alarm indication signal, AIS-L failure";
          }
    
          leaf ais-p {
            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
              "Path alarm indication signal, AIS-P failure";
          }
    
          leaf lop-p {
            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 pointer, LOP-P failure";
          }
    
          leaf ber-sd {
            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
              "Signal Degrade (SD), bit error rate > 1E-6";
          }
    
          leaf ber-sf {
            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
              "Signal Fail (SF), bit error rate > 1E-3";
          }
    
          leaf rfi-l {
            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 remote failure indication, RFI-L, line FERF";
          }
    
          leaf rfi-p {
            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
              "Path remote failure indication, RFI-P, STS path yellow";
          }
    
          leaf uneq-p {
            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
              "STS Path (C2) unequipped, UNEQ-P failure";
          }
    
          leaf locd {
            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 cell delineation (ATM only)";
          }
    
          leaf plm-p {
            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
              "STS payload label (C2) mismatch, PLM-P failure";
          }
        }  // grouping chassis_alarm_sonet_type
    
        grouping chassis_fabric_card_type {
          leaf name {
            type string {
              length "1 .. 5";
            }
            description
              "Fabric Card slot number";
          }
    
          uses apply-advanced;
    
          container loopback {
            description
              "Loopback Configuration for Mode & Type";
            uses apply-advanced;
    
            leaf serdes {
              type empty;
              description
                "Fabric Card serdes setting";
            }
    
            leaf retimer {
              type empty;
              description
                "Fabric card retimer setting";
            }
          }  // container loopback
        }  // grouping chassis_fabric_card_type
    
        grouping chassis_fabric_type {
          uses apply-advanced;
    
          leaf upgrade-mode {
            type enumeration {
              enum "default" {
                value 0;
                description "Fabric upgrade";
              }
              enum "t4000" {
                junos:must "(!(any "class-of-service schedulers <*> drop-profile-map loss-priority <*> protocol non-tcp drop-profile <*>"))";
                junos:must-message "protocol based classification not allowed, only 'any' protocol config allowed";
                junos:must "(!(any "class-of-service schedulers <*> drop-profile-map loss-priority <*> protocol tcp drop-profile <*>"))";
                junos:must-message "protocol based classification not allowed, only 'any' protocol config allowed";
                value 1;
                description
                  "T4000 Fabric upgrade";
              }
              enum "3d-fabric" {
                junos:must "(!(any "class-of-service schedulers <*> drop-profile-map loss-priority <*> protocol non-tcp drop-profile <*>"))";
                junos:must-message "protocol based classification not allowed, only 'any' protocol config allowed";
                junos:must "(!(any "class-of-service schedulers <*> drop-profile-map loss-priority <*> protocol tcp drop-profile <*>"))";
                junos:must-message "protocol based classification not allowed, only 'any' protocol config allowed";
                value 2;
                description
                  "TXP-3D Fabric upgrade";
              }
            }
            description
              "Enable online switch fabric upgrade";
          }
    
          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;
    
            leaf detection-disable {
              type empty;
              description "Disable fabric OAM";
            }
          }  // 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";
            }
    
            leaf degraded-fpc-bad-plane-threshold {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "4 .. 18";
                }
              }
              default "4";
              description
                "No of bad planes to declare a FPC degraded";
            }
    
            leaf degraded-fabric-detection-enable {
              type empty;
              description
                "Enable degraded FPC detection";
            }
          }  // 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
    
          list slot {
            key "name";
            ordered-by user;
            leaf name {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32;
              }
              description "FEB slot number";
            }
    
            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
    
            leaf power {
              type enumeration {
                enum "off" {
                  value 0;
                  description
                    "Do not provide power to FEBs";
                }
                enum "on" {
                  value 1;
                  description
                    "Provide power to FEBs";
                }
              }
              description "Power FEBs on or off";
            }
    
            choice mode {
            }  // choice mode
    
            leaf port-mirror-instance {
              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 FEB";
            }
    
            leaf sampling-instance {
              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 FEB";
            }
    
            leaf ucode-imem-remap {
              type empty;
              description
                "Remap the PIC microcode to IMEM on FEB";
            }
    
            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";
                    }
                  }
                  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";
                  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";
                  }
                }
                description
                  "Maximum number of inline video monitoring flows per PFE instance";
              }
            }  // container inline-video-monitoring
    
            container openflow {
              description
                "Openflow configuration";
              uses apply-advanced;
    
              leaf access-list-partition {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 100";
                  }
                }
                units "percents";
                description
                  "Space reserved for openflow access-list rules";
              }
            }  // container openflow
          }  // list slot
        }  // 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
    
          list override-cmerror {
            key "name";
            max-elements 100;
            ordered-by user;
            description
              "Error configuration override";
            uses chassis_fru_cmerror_override_type;
          }  // list override-cmerror
    
          container scope {
            description "Error scope";
            uses chassis_fpc_scope_type;
          }  // container scope
        }  // 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_scope_type {
          description "Chassis Fpc Error Scope";
          uses apply-advanced;
    
          container board {
            description "Board level scope";
            uses chassis_fpc_scope_category;
          }  // container board
    
          container pfe {
            description
              "Forwarding engine scope ";
            uses chassis_fpc_scope_category;
          }  // container pfe
        }  // grouping chassis_fpc_scope_type
    
        grouping chassis_fpc_scope_category {
          description
            "Chassis Fpc Error Category";
          uses apply-advanced;
    
          container category {
            description "FPC error category";
            uses chassis_fpc_scope_category_type;
          }  // container category
        }  // grouping chassis_fpc_scope_category
    
        grouping chassis_fpc_scope_category_type {
          description
            "Chassis Fpc Category level";
          uses apply-advanced;
    
          container functional {
            description
              "FPC functional category";
            uses chassis_fpc_scope_category_error_type;
          }  // container functional
    
          container memory {
            description "FPC memory category";
            uses chassis_fpc_scope_category_error_type;
          }  // container memory
    
          container io {
            description
              "FPC input-output category";
            uses chassis_fpc_scope_category_error_type;
          }  // container io
    
          container storage {
            description "FPC storage category";
            uses chassis_fpc_scope_category_error_type;
          }  // container storage
    
          container switch {
            description "FPC switch category";
            uses chassis_fpc_scope_category_error_type;
          }  // container switch
    
          container processing {
            description
              "FPC processing category";
            uses chassis_fpc_scope_category_error_type;
          }  // container processing
        }  // grouping chassis_fpc_scope_category_type
    
        grouping chassis_fpc_scope_category_error_type {
          description "Chassis Fpc Error level";
          uses apply-advanced;
    
          container fatal {
            description
              "FPC Fatal errors (default threshold = 1)";
            uses chassis_fpc_error_level_type;
          }  // container fatal
    
          container major {
            description
              "FPC Major Level errors (default threshold = 1)";
            uses chassis_fpc_error_level_type;
          }  // container major
    
          container minor {
            description
              "FPC Minor Level errors (default threshold = 10)";
            uses chassis_fpc_error_level_type;
          }  // container minor
        }  // grouping chassis_fpc_scope_category_error_type
    
        grouping chassis_fpc_error_level_type {
          uses apply-advanced;
    
          leaf threshold {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 4294967295";
              }
            }
            description
              "Error count at which to take the action (0 - valid for minor only)";
          }
    
          list action {
            key "name";
            ordered-by user;
            description
              "Configure the action for this level";
            leaf name {
              type enumeration {
                enum "reset" {
                  junos:must "(!(".. .. action disable-pfe"))";
                  junos:must-message "'reset' and 'disable-pfe' cannot be both configured";
                  junos:must "(!(".. .. action offline"))";
                  junos:must-message "'reset' and 'offline' cannot be both configured";
                  value 0;
                  description "Reset FPC";
                }
                enum "offline" {
                  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" {
                  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 trap";
                }
              }
            }
    
            uses apply-advanced;
          }  // list action
        }  // grouping chassis_fpc_error_level_type
    
        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 {
                  junos:must "(!(".. unicast-in-lpm"))";
                  junos:must-message "Cannot set both unicast-in-lpm and prefix-65-127-disable at the same time";
                  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 {
                    junos:must "(!(".. unicast-in-lpm"))";
                    junos:must-message "Cannot set both unicast-in-lpm and prefix-65-127-disable at the same time";
                    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";
          }
    
          container traffic-manager {
            description
              "Configure traffic-manager attributes";
            uses apply-advanced;
    
            leaf buffer-monitor-enable {
              type empty;
              description
                "Enable port buffer monitoring";
            }
    
            container queue-threshold {
              description "Set queue thresholds";
              uses apply-advanced;
    
              container fabric-queue {
                description
                  "Set fabric queue thresholds";
                uses apply-advanced;
    
                list priority {
                  key "name";
                  ordered-by user;
                  description "Queue priority";
                  leaf name {
                    type enumeration {
                      enum "low" {
                        value 0;
                        description
                          "Low fabric priority";
                      }
                      enum "high" {
                        value 1;
                        description
                          "High fabric priority";
                      }
                    }
                    description "Priority level";
                  }
    
                  uses apply-advanced;
    
                  leaf threshold {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 100";
                      }
                    }
                    description
                      "Threshold percentage to be set";
                  }
                }  // list priority
              }  // container fabric-queue
    
              container wan-queue {
                description
                  "Set wan queue thresholds";
                uses apply-advanced;
    
                list priority {
                  key "name";
                  ordered-by user;
                  description "Queue Priority";
                  leaf name {
                    type enumeration {
                      enum "low" {
                        value 0;
                        description
                          "Low wan priority";
                      }
                      enum "medium-low" {
                        value 1;
                        description
                          "Medium low wan priority";
                      }
                      enum "medium-high" {
                        value 2;
                        description
                          "Medium high wan priority";
                      }
                      enum "high" {
                        value 3;
                        description
                          "High wan priority";
                      }
                    }
                    description "Priority level";
                  }
    
                  uses apply-advanced;
    
                  leaf threshold {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 100";
                      }
                    }
                    description
                      "Threshold percentage to be set";
                  }
                }  // list priority
              }  // container wan-queue
            }  // container queue-threshold
    
            choice enhanced-priority-mode-choice {
              leaf enhanced-priority-mode {
                type empty;
                description
                  "Enable enhanced priority mode";
              }
              leaf no-enhanced-priority-mode {
                type empty;
                description
                  "Don't enable enhanced priority mode";
              }
            }  // choice enhanced-priority-mode-choice
    
            leaf packet-timestamp {
              type enumeration {
                enum "enable" {
                  value 0;
                  description
                    "Enables collecting CoS last packet enqueued timestamp";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disables collecting CoS last packet enqueued timestamp";
                }
              }
              default "disable";
              description
                "Configure collecting CoS last packet enqueued timestamp";
            }
          }  // container traffic-manager
    
          leaf max-power {
            type union {
              type uint32;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description
              "Max power to be consumed by MPC";
          }
    
          leaf power-budget-priority {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32;
            }
            description "FPC priority number";
          }
    
          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 cfp-to-et {
            type empty;
            description
              "Enable ET interface and remove CFP client";
          }
    
          leaf offline {
            type empty;
            description "Keep FPC offline";
          }
    
          leaf license-mode {
            type enumeration {
              enum "r" {
                value 0;
                description "Set card to R mode";
              }
              enum "ir" {
                value 1;
                description
                  "Set card to IR mode";
              }
              enum "lsr" {
                value 2;
                description
                  "Set card to LSR mode";
              }
              enum "ip" {
                value 3;
                description
                  "Set card to full IP mode";
              }
            }
            description
              "Configure license mode for PTX FPC3 and later cards";
          }
    
          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
    
          leaf service-package {
            type enumeration {
              enum "bundle-rfc2544" {
                value 0;
                description
                  "Service Package for RFC2544";
              }
              enum "bundle-nat-ipsec" {
                value 1;
                description
                  "Service Package for NAT and IPSEC";
              }
              enum
                "bundle-ptp-enterprise-profile" {
                value 2;
                description
                  "Service Package for PTP Enterprise Profile";
              }
            }
            default "bundle-rfc2544";
            description
              "Service package to be loaded on FPC";
          }
    
          container error {
            description
              "Error level configuration for FPC";
            uses chassis_fpc_error_type;
          }  // container error
    
          list ether-type {
            key "name";
            ordered-by user;
            description
              "Set Ethernet type on FPC";
            leaf name {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint8 {
                  range "6 .. 27";
                }
              }
              description "TCAM slot";
            }
    
            uses apply-advanced;
    
            leaf etype {
              type string;
              description "Ether type";
            }
          }  // list ether-type
    
          container openflow {
            description "Openflow configuration";
            uses apply-advanced;
    
            leaf access-list-partition {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 100";
                }
              }
              units "percents";
              description
                "Space reserved for openflow access-list rules";
            }
    
            leaf buffer-partition {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 100";
                }
              }
              units "percents";
              description
                "Buffer space reserved for openflow traffic";
            }
          }  // container openflow
        }  // grouping chassis_fpc_type
    
        grouping chassis_fru_cmerror_override_type {
          description
            "Chassis Fpc Error override";
          leaf name {
            type string {
              junos:posix-pattern "^(/[^/ ]+/[0-9]+){4}/[^/ ]+$";
              junos:pattern-message "Invalid error identifier format";
              length "1 .. 255";
            }
            description "Error identifier";
          }
    
          uses apply-advanced;
    
          leaf state {
            type enumeration {
              enum "disable" {
                value 0;
                description "Disable error";
              }
            }
            description "State";
          }
    
          leaf severity {
            type enumeration {
              enum "minor" {
                value 0;
                description "Minor Severity";
              }
              enum "major" {
                value 1;
                description "Major Severity";
              }
              enum "fatal" {
                value 2;
                description "Fatal Severity";
              }
            }
            description "Severity";
          }
    
          container pfe {
            presence "enable pfe";
            description "Apply to these pfe";
            uses apply-advanced;
    
            leaf all {
              type empty;
              description "Apply to all pfe";
            }
          }  // container pfe
        }  // grouping chassis_fru_cmerror_override_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";
          }
    
          container tunnel-services {
            junos:must "(!(".. traffic-manager single-stream"))";
            junos:must-message "Cannot configure tunnel-services if single-stream is configured";
            presence "enable tunnel-services";
            description
              "Tunnel services configuration";
            uses apply-advanced;
    
            leaf bandwidth {
              type string;
              description
                "Amount of bandwidth reserved for tunnel service";
            }
    
            leaf tunnel-only {
              type empty;
              description
                "Support only tunnel traffic";
            }
    
            container priority {
              junos:must "(!(".. bandwidth"))";
              junos:must-message "Priorities cannot be configured if bandwidth is specified under the tunnel-services hierarchy";
              presence "enable priority";
              description
                "Specify bandwidths with priorities";
              uses apply-advanced;
    
              container high {
                presence "enable high";
                description "High Priority";
                uses apply-advanced;
    
                leaf bandwidth {
                  type string;
                  description
                    "Amount of bandwidth reserved for tunnel service";
                }
              }  // container high
    
              container medium {
                presence "enable medium";
                description "Medium Priority";
                uses apply-advanced;
    
                leaf bandwidth {
                  type string;
                  description
                    "Amount of bandwidth reserved for tunnel service";
                }
              }  // container medium
    
              container low {
                presence "enable low";
                description "Low Priority";
                uses apply-advanced;
    
                leaf bandwidth {
                  type string;
                  description
                    "Amount of bandwidth reserved for tunnel service";
                }
              }  // container low
            }  // container priority
    
            list tunnel-port {
              key "name";
              ordered-by user;
              description "Tunnel port number";
              leaf name {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32;
                }
                description "Port number";
              }
    
              uses apply-advanced;
    
              leaf bandwidth {
                type string;
                description
                  "Amount of bandwidth reserved for tunnel service";
              }
            }  // list tunnel-port
          }  // container tunnel-services
    
          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";
          }
    
          container recovered-clock {
            description
              "Select recovered clock for this port";
            uses apply-advanced;
    
            leaf port {
              junos:must "(unique "chassis fpc ${fpc} pic <*> recovered-clock")";
              junos:must-message "Recovered-clock can be configured only on single pic/port";
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 47";
                }
              }
              description "Port Number";
            }
    
            leaf channel {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 3";
                }
              }
              description "Channel Number";
            }
          }  // container recovered-clock
    
          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 pic-type {
            type string {
              junos:posix-pattern "^([.]?1|[a-zA-Z][a-zA-Z0-9]*)([.]([a-zA-Z]|[0-9]+))*$";
              junos:pattern-message "Must be an OID of the form 1.x.y.z... or objname[.x.y.z] where x, y, & z are either numbers or a single letter";
            }
            description
              "OID of PIC type to be configured";
          }
    
          container aggregated-devices {
            description
              "Aggregated devices configuration";
            uses apply-advanced;
    
            container ima {
              description
                "Aggregated device options for Inverse Multiplexing for ATM";
              uses apply-advanced;
    
              leaf device-count {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 42";
                  }
                }
                description
                  "Number of IMA groups";
              }
            }  // container ima
          }  // container aggregated-devices
    
          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 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";
          }
    
          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
    
          container shdsl {
            description
              "SHDSL chassis configuration";
            uses apply-advanced;
    
            leaf pic-mode {
              type enumeration {
                enum "1-port-atm" {
                  value 0;
                  description
                    "Single port ATM, 8 wire mode";
                }
                enum "2-port-atm" {
                  value 1;
                  description
                    "Two port ATM, 4 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
    
          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
    
          list port-range {
            key "port-range-low port-range-high";
            ordered-by user;
            description
              "Physical ports to channelize";
            leaf port-range-low {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32;
              }
              description
                "Port range low number";
            }
    
            leaf port-range-high {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32;
              }
              description
                "Port range high number";
            }
    
            uses apply-advanced;
    
            leaf short-reach-mode {
              type enumeration {
                enum "disable" {
                  value 0;
                  description "Disable";
                }
                enum "enable" {
                  value 1;
                  description "Enable";
                }
              }
              description
                "Short reach mode (For ports 0..47)";
            }
    
            leaf channel-speed {
              type enumeration {
                enum "10g" {
                  value 0;
                  description
                    "Set the port speed to 10G. This will restart PFE";
                }
                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";
            }
          }  // list port-range
    
          container fibre-channel {
            description
              "Fibre channel configuration option";
            uses chassis_fibre_channel_type;
          }  // container fibre-channel
    
          container xe {
            description
              "Ports configurable in 10G mode";
            uses apply-advanced;
    
            list port {
              key "port-number";
              ordered-by user;
              description "Attribute port";
              leaf port-number {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32;
                }
                description "Port number";
              }
    
              uses apply-advanced;
            }  // list port
    
            list port-range {
              key "port-range-low port-range-high";
              ordered-by user;
              description "Attribute port range";
              leaf port-range-low {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32;
                }
                description
                  "Port range low number";
              }
    
              leaf port-range-high {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32;
                }
                description
                  "Port range high number";
              }
    
              uses apply-advanced;
            }  // list port-range
          }  // container xe
    
          container xle {
            description
              "Ports configurable in 40G mode ";
            uses apply-advanced;
    
            list port {
              key "port-number";
              ordered-by user;
              description "Attribute port";
              leaf port-number {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32;
                }
                description "Port number";
              }
    
              uses apply-advanced;
            }  // list port
    
            list port-range {
              key "port-range-low port-range-high";
              ordered-by user;
              description "Attribute port range";
              leaf port-range-low {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32;
                }
                description
                  "Port range low number";
              }
    
              leaf port-range-high {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32;
                }
                description
                  "Port range high number";
              }
    
              uses apply-advanced;
            }  // list port-range
          }  // container xle
    
          container fte {
            description
              "Ports configurable in 40G HIGIG mode";
            uses apply-advanced;
    
            list port {
              key "port-number";
              ordered-by user;
              description "Attribute port";
              leaf port-number {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32;
                }
                description "Port number";
              }
    
              uses apply-advanced;
            }  // list port
    
            list port-range {
              key "port-range-low port-range-high";
              ordered-by user;
              description "Attribute port range";
              leaf port-range-low {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32;
                }
                description
                  "Port range low number";
              }
    
              leaf port-range-high {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32;
                }
                description
                  "Port range high number";
              }
    
              uses apply-advanced;
            }  // list port-range
          }  // container fte
    
          leaf account-layer2-overhead {
            type empty;
            description
              "Account Layer2 overhead in egress and ingress IFD/IFL stats";
          }
    
          leaf subscriber-aware-services {
            type empty;
            description
              "Enable subscriber aware services";
          }
    
          leaf ptp-mode {
            type empty;
            description
              "Set hardware to run PTP BC applications.";
          }
        }  // 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 {
            key "name";
            ordered-by user;
            description "Fibre channel port";
            leaf name {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 47";
                }
              }
              description
                "Port number for fibre channel mode";
            }
    
            uses apply-advanced;
          }  // list port
    
          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 short-reach-mode {
            type enumeration {
              enum "disable" {
                value 0;
                description "Disable";
              }
              enum "enable" {
                value 1;
                description "Enable";
              }
            }
            description
              "Short reach mode (For ports 0...47)";
          }
    
          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 unused {
            type empty;
            description "Keep the port unused.";
          }
    
          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";
          }
    
          container forwarding-mode {
            description
              "PIC packet distribution mode - Brooklyn interop mode";
            uses apply-advanced;
    
            leaf sa-multicast {
              type empty;
              description
                "SA multicast mode - interop with 100G Brooklyn PIC";
            }
          }  // container forwarding-mode
    
          leaf no-mcast-replication {
            type empty;
            description
              "No multicast replication";
          }
        }  // 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;
    
          leaf disable {
            type empty;
            description
              "Disable better RE evaluation algorithm";
          }
    
          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 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
        }  // 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
        }  // grouping chassis_re_on_disk_failure
    
        grouping chassis_sib_type {
          uses apply-advanced;
    
          list slot {
            key "name";
            description "SIB slot number";
            leaf name {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32;
              }
              description "SIB slot number";
            }
    
            uses apply-advanced;
          }  // list slot
    
          container power-off {
            description "Power off the SIB slot";
            uses apply-advanced;
    
            list slot {
              key "name";
              ordered-by user;
              description
                "SIB slot number to be powered off";
              leaf name {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32;
                }
                description
                  "SIB slot number to be offlined";
              }
    
              uses apply-advanced;
            }  // list slot
          }  // container power-off
        }  // grouping chassis_sib_type
    
        grouping chassisd-redundancy-group-type {
          uses apply-advanced;
    
          container interface-type {
            uses apply-advanced;
    
            container redundant-logical-tunnel {
              description
                "Redundant logical tunnel interface group";
              uses apply-advanced;
    
              leaf device-count {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 255";
                  }
                }
                description "Number of devices";
              }
            }  // container redundant-logical-tunnel
    
            container redundant-virtual-tunnel {
              description
                "Redundant virtual tunnel interface group";
              uses apply-advanced;
    
              leaf device-count {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 16";
                  }
                }
                description "Number of devices";
              }
            }  // container redundant-virtual-tunnel
          }  // container interface-type
        }  // grouping chassisd-redundancy-group-type
    
        grouping chassisd_agg_container_type {
          uses apply-advanced;
    
          leaf device-count {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 128";
              }
            }
            description
              "Number of container devices";
          }
        }  // grouping chassisd_agg_container_type
    
        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 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
    
        grouping redundancy-group-type {
          description
            "Redundancy-group provisioning";
          leaf name {
            type string {
              junos:posix-pattern "^[[:alpha:]][[:alnum:]_.-]+$";
              junos:pattern-message "Must be a string of length at least 2 beginning with a letter and consisting of letters, numbers, periods, dashes, and underscores";
              length "2 .. 64";
            }
            description "Redundancy-group name";
          }
    
          uses apply-advanced;
    
          leaf redundancy-group-id {
            junos:must "((!((any "protocols iccp peer <*> redundancy-group-id-list <*>" || any "logical-systems <*> protocols iccp peer <*> redundancy-group-id-list <*>")) || (any "protocols iccp peer <*> redundancy-group-id-list $$" || any "logical-systems <*> protocols iccp peer <*> redundancy-group-id-list $$")))";
            junos:must-message "The redundancy group id must match with one defined at <protocols iccp peer redundancy-group-id-list> and must be less than 256";
            junos:must "(unique "chassis satellite-management redundancy-groups <*> redundancy-group-id $$")";
            junos:must-message "Redundancy-group-id has to be unique";
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 255";
              }
            }
            description "Redundancy Group ID";
          }
    
          container protocol {
            description
              "Redundancy-group Protocol";
            uses apply-advanced;
    
            container evpn {
              description
                "EVPN Redundancy Group";
              uses apply-advanced;
    
              leaf-list peer-ip {
                junos:must "(!(any "chassis satellite-management redundancy-groups <*> peer-chassis-id <*>"))";
                junos:must-message "peer-chassis-id configuration invalid for EVPN redundancy-group protocol";
                type jt:ipv4addr;
                ordered-by user;
                description
                  "Peer chassis IPs for EVPN Cluster";
              }
    
              leaf local-ip {
                type jt:ipv4addr;
                description
                  "Local chassis IP for EVPN Cluster";
              }
    
              leaf routing-instance {
                type string;
                description
                  "Name of routing instance for EVPN Cluster";
              }
            }  // container evpn
          }  // container protocol
    
          list peer-chassis-id {
            key "name";
            ordered-by user;
            description "Peer Chassis ID";
            leaf name {
              junos:must "(unique "satellite-management redundancy-groups <*> peer-chassis-id $$")";
              junos:must-message "Peer chassis ID must be unique";
              junos:must "(!("chassis satellite-management redundancy-groups chassis-id $$"))";
              junos:must-message "Peer chassis ID can't be same as local chassis ID";
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 4";
                }
              }
              description
                "Peer chassis identifier";
            }
    
            uses apply-advanced;
    
            leaf no-auto-vlan-provisioning {
              type empty;
              description
                "Disable auto VLAN provisioning on inter-chassis-link";
            }
    
            leaf inter-chassis-link {
              junos:must "(((("interfaces $$ unit $$={0} family bridge interface-mode trunk" || "interfaces $$ unit $$={0} family ethernet-switching interface-mode trunk") && !(" .. no-auto-vlan-provisioning")) || " .. no-auto-vlan-provisioning"))";
              junos:must-message "bridge or ethernet-switching family with unit 0 must be present for ICL trunk interface if auto-vlan-provisioning is enabled";
              junos:must "("interfaces $$")";
              junos:must-message "ICL interface must be defined in the [edit interfaces] hierarchy";
              junos:must "(!("interfaces $$ cascade-port"))";
              junos:must-message "ICL interface can't be provisioned as cascade-port";
              type union {
                type jt:interface-device;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description "ICL interface name";
            }
    
            leaf no-auto-iccp-provisioning {
              junos:must "(any "protocols iccp peer <*>")";
              junos:must-message "ICCP configuration must be present if auto ICCP provisioning is disabled";
              type empty;
              description
                "Disable auto ICCP provisioning";
            }
    
            leaf session-establishment-hold-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "45 .. 600";
                }
              }
              units "seconds";
              description
                "Time within which connection must succeed with this peer";
            }
    
            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
    
            leaf authentication-key {
              type string {
                length "1 .. 126";
              }
              description
                "MD5 authentication key";
            }
    
            container traceoptions {
              description
                "Trace options for ICCP";
              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
                  "Trace flag information";
                leaf name {
                  type enumeration {
                    enum "error" {
                      value 0;
                      description
                        "Trace all errors";
                    }
                    enum "event" {
                      value 1;
                      description
                        "Trace all events";
                    }
                    enum "packet" {
                      value 2;
                      description
                        "Trace all packets";
                    }
                    enum "pipe" {
                      value 3;
                      description
                        "Trace pipe messages";
                    }
                    enum "pipe-detail" {
                      value 4;
                      description
                        "Trace pipe messages in detail";
                    }
                    enum "all" {
                      value 5;
                      description
                        "Trace everything";
                    }
                  }
                }
              }  // list flag
            }  // container traceoptions
          }  // list peer-chassis-id
    
          leaf-list satellite {
            type string {
              length "1 .. 100";
            }
            ordered-by user;
            description
              "Satellite slot-id or range or all";
          }
    
          leaf system-mac-address {
            type jt:mac-unicast;
            description "System MAC address";
          }
    
          list cluster {
            key "name";
            description
              "Cluster member of redundancy-group";
            leaf name {
              junos:must "("chassis satellite-management cluster $$")";
              junos:must-message "Cluster must be defined";
              type string;
              description "Cluster name";
            }
    
            uses apply-advanced;
          }  // list cluster
        }  // grouping redundancy-group-type
    
        grouping satellite-bridge-filter {
          leaf name {
            type string {
              junos:posix-pattern "!^((__.*)|(.{65,}))$";
              junos:pattern-message "Must be a non-reserved string of 64 characters or less";
            }
            description "Filter name";
          }
    
          uses apply-advanced;
    
          list term {
            key "name";
            ordered-by user;
            description "Define a firewall term";
            leaf name {
              type string {
                junos:posix-pattern "!^((__.*)|(.{65,}))$";
                junos:pattern-message "Must be a non-reserved string of 64 characters or less";
              }
              description "Term name";
            }
    
            uses apply-advanced;
    
            container from {
              description
                "Define match criteria";
              uses apply-advanced;
    
              list source-mac-address {
                key "name";
                ordered-by user;
                description
                  "Match MAC source address";
                uses firewall_mac_addr_object;
              }  // list source-mac-address
    
              list destination-mac-address {
                key "name";
                ordered-by user;
                description
                  "Match MAC destination address";
                uses firewall_mac_addr_object;
              }  // list destination-mac-address
    
              list ip-source-address {
                key "name";
                ordered-by user;
                description
                  "Match IP source address";
                uses firewall_addr_object;
              }  // list ip-source-address
    
              list ip-destination-address {
                key "name";
                ordered-by user;
                description
                  "Match IP destination address";
                uses firewall_addr_object;
              }  // list ip-destination-address
    
              choice ip-protocol_choice {
                leaf-list ip-protocol {
                  type string;
                  ordered-by user;
                }
                leaf-list ip-protocol-except {
                  type string;
                  ordered-by user;
                }
              }  // choice ip-protocol_choice
    
              choice source-port_choice {
                leaf-list source-port {
                  type string;
                  ordered-by user;
                }
                leaf-list source-port-except {
                  type string;
                  ordered-by user;
                }
              }  // choice source-port_choice
    
              choice destination-port_choice {
                leaf-list destination-port {
                  type string;
                  ordered-by user;
                }
                leaf-list destination-port-except {
                  type string;
                  ordered-by user;
                }
              }  // choice destination-port_choice
    
              choice user-vlan-id_choice {
                leaf-list user-vlan-id {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
                leaf-list user-vlan-id-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice user-vlan-id_choice
            }  // container from
    
            container then {
              description
                "Action to take if the 'from' condition is matched";
              uses apply-advanced;
    
              choice designation {
                leaf accept {
                  type empty;
                  description
                    "Accept the packet";
                }
                leaf discard {
                  type empty;
                  description
                    "Discard the packets";
                }
              }  // choice designation
    
              leaf next-hop-group {
                junos:must "(("policy-options satellite-policies port-group-alias $$" || "policy-options satellite-policies chassis-group-alias $$"))";
                junos:must-message "port-group-alias or chassis-group-alias not defined";
                type string;
                description
                  "Use specified next-hop group";
              }
            }  // container then
          }  // list term
        }  // grouping satellite-bridge-filter
    
        grouping firewall_addr_object {
          leaf name {
            type jt:ipv4prefix;
            description "Prefix to match";
          }
    
          leaf except {
            type empty;
            description
              "Match address not in this prefix";
          }
        }  // grouping firewall_addr_object
    
        grouping firewall_mac_addr_object {
          leaf name {
            type jt:mac-addr-prefix;
            description "MAC address to match";
          }
    
          leaf except {
            type empty;
            description
              "Match MAC address not in this range";
          }
        }  // grouping firewall_mac_addr_object
    
        grouping upgrade-group-type {
          description "Upgrade group";
          leaf name {
            type string {
              junos:posix-pattern "![^a-zA-Z0-9_-]|^[^a-zA-Z]|(^(all|.{64,}|.{0,1})$)";
              junos:pattern-message "Must be a string of length at least 2 beginning with a letter and consisting of letters, numbers, periods, dashes, and underscores. Must not be 'all'";
              length "2 .. 64";
            }
            description "Upgrade group name";
          }
    
          uses apply-advanced;
    
          leaf-list satellite {
            type string {
              length "1 .. 100";
            }
            ordered-by user;
            description
              "Satellite slot-id or range or all";
          }
        }  // grouping upgrade-group-type
      }  // module junos-qfx-conf-chassis
    

© 2024 YumaWorks, Inc. All rights reserved.