junos-ex-conf-dynamic-profiles

Junos dynamic-profiles configuration module

  • Version: 2019-01-01

    junos-ex-conf-dynamic-profiles@2019-01-01


    
      module junos-ex-conf-dynamic-profiles {
    
        yang-version 1;
    
        namespace
          "http://yang.juniper.net/junos-ex/conf/dynamic-profiles";
    
        prefix jc-dynamic-profiles;
    
        import junos-common-ddl-extensions {
          prefix junos;
          revision-date "2019-01-01";
        }
        import junos-common-types {
          prefix jt;
          revision-date "2019-01-01";
        }
        import junos-ex-conf-root {
          prefix jc;
          revision-date "2019-01-01";
        }
    
        organization "Juniper Networks, Inc.";
    
        contact "yang-support@juniper.net";
    
        description
          "Junos dynamic-profiles configuration module";
    
        revision "2019-01-01" {
          description "Junos: 21.3R1.9";
        }
    
    
        augment /jc:configuration {
          uses dynamic-profiles-group;
        }
    
        augment /jc:configuration/jc:groups {
          uses dynamic-profiles-group;
        }
    
        grouping dynamic-profiles-group {
          list dynamic-profiles {
            key "name";
            ordered-by user;
            description
              "Dynamic profiles configuration";
            uses juniper-dynamic-profile-object;
          }  // list dynamic-profiles
        }  // grouping dynamic-profiles-group
    
        grouping juniper-dynamic-profile-object {
          leaf name {
            type string {
              length "1 .. 80";
            }
            description
              "Name for dynamic profile";
          }
    
          uses apply-advanced;
    
          leaf version-alias {
            type string {
              length "1 .. 63";
            }
            description
              "Dynamic profile version alias, transmitted to RADIUS during authentication";
          }
    
          list variables {
            key "name";
            ordered-by user;
            description
              "Dynamic variable configuration";
            uses juniper-dynamic-variable-object;
          }  // list variables
    
          container predefined-variable-defaults {
            description
              "Assign default values to predefined variables";
            uses apply-advanced;
    
            container aggregation-interface-set-name {
              presence
                "enable aggregation-interface-set-name";
              description
                "Default for junos-aggregation-interface-set-name";
              uses apply-advanced;
    
              choice def-value {
                leaf default-value {
                  type string;
                  description
                    "Default value for junos-aggregation-interface-set-name";
                }
                leaf equals {
                  type string;
                  description
                    "Computable expression of dynamic profile variables";
                }
              }  // choice def-value
            }  // container aggregation-interface-set-name
    
            container interface-set-name {
              presence
                "enable interface-set-name";
              description
                "Default for junos-interface-set-name";
              uses apply-advanced;
    
              choice def-value {
                leaf default-value {
                  type string;
                  description
                    "Default value for junos-interface-set-name";
                }
                leaf equals {
                  type string;
                  description
                    "Computable expression of dynamic profile variables";
                }
              }  // choice def-value
            }  // container interface-set-name
    
            container default-interface-set-name {
              presence
                "enable default-interface-set-name";
              description
                "Default for junos-default-interface-set-name";
              uses apply-advanced;
    
              leaf equals {
                type string;
                description
                  "Computable expression of dynamic profile variables";
              }
            }  // container default-interface-set-name
    
            container phy-ifd-interface-set-name {
              presence
                "enable phy-ifd-interface-set-name";
              description
                "Default for junos-phy-ifd-interface-set-name";
              uses apply-advanced;
    
              choice def-value {
                leaf default-value {
                  type string;
                  description
                    "Default value for junos-phy-ifd-interface-set-name";
                }
                leaf equals {
                  type string;
                  description
                    "Computable expression of dynamic profile variables";
                }
              }  // choice def-value
            }  // container phy-ifd-interface-set-name
    
            container phy-ifd-underlying-intf-set-name {
              presence
                "enable phy-ifd-underlying-intf-set-name";
              description
                "Default for junos-phy-ifd-underlying-intf-set-name";
              uses apply-advanced;
    
              choice def-value {
                leaf default-value {
                  type string;
                  description
                    "Default value for junos-phy-ifd-underlying-intf-set-name";
                }
                leaf equals {
                  type string;
                  description
                    "Computable expression of dynamic profile variables";
                }
              }  // choice def-value
            }  // container phy-ifd-underlying-intf-set-name
    
            container cos-excess-rate {
              description
                "Default for junos-cos-excess-rate";
              uses apply-advanced;
    
              leaf proportion {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 1000";
                  }
                }
                description
                  "Excess rate as proportion";
              }
    
              leaf percent {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 100";
                  }
                }
                description
                  "Excess rate as percentage";
              }
            }  // container cos-excess-rate
    
            container cos-excess-rate-high {
              description
                "Default for junos-cos-excess-rate-high";
              uses apply-advanced;
    
              leaf proportion {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 1000";
                  }
                }
                description
                  "Excess rate as proportion";
              }
    
              leaf percent {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 100";
                  }
                }
                description
                  "Excess rate as percentage";
              }
            }  // container cos-excess-rate-high
    
            container cos-excess-rate-low {
              description
                "Default for junos-cos-excess-rate-low";
              uses apply-advanced;
    
              leaf proportion {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 1000";
                  }
                }
                description
                  "Excess rate as proportion";
              }
    
              leaf percent {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 100";
                  }
                }
                description
                  "Excess rate as percentage";
              }
            }  // container cos-excess-rate-low
    
            container cos-scheduler-tx {
              description
                "Default for junos-cos-scheduler-tx";
              uses apply-advanced;
    
              leaf rate {
                type string;
                description
                  "Transmit rate as rate";
              }
    
              leaf percent {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 100";
                  }
                }
                description
                  "Transmit rate as percentage";
              }
            }  // container cos-scheduler-tx
    
            container cos-scheduler-bs {
              description
                "Default for junos-cos-scheduler-bs";
              uses apply-advanced;
    
              leaf percent {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 100";
                  }
                }
                description
                  "Buffer size as percentage";
              }
    
              leaf temporal {
                type union {
                  type uint32;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                units "microseconds";
                description
                  "Buffer size as temporal";
              }
            }  // container cos-scheduler-bs
    
            container cos-scheduler-shaping-rate {
              description
                "Default for junos-cos-scheduler-shaping-rate";
              uses apply-advanced;
    
              leaf rate {
                type string;
                units "bits per second";
                description
                  "Shaping rate as rate";
              }
    
              leaf percent {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 100";
                  }
                }
                description
                  "Shaping rate as percentage";
              }
            }  // container cos-scheduler-shaping-rate
    
            list other-variables {
              key "name";
              ordered-by user;
              uses base-default-variable-object;
            }  // list other-variables
          }  // container predefined-variable-defaults
    
          container routing-instances {
            description
              "Routing instance configuration";
            uses apply-advanced;
    
            list instance {
              key "name";
              ordered-by user;
              leaf name {
                type enumeration {
                  enum "$junos-routing-instance" {
                    value 0;
                    description
                      "Dynamic profile routing instance name";
                  }
                }
              }
    
              uses apply-advanced;
    
              list interface {
                key "name";
                description
                  "Interface name for this routing instance";
                leaf name {
                  junos:must "((!("interfaces $$-IFL etree-ac-role") || ".. .. protocols evpn evpn-etree"))";
                  junos:must-message "etree must be enabled under routing-instance";
                  junos:must "(!(("interfaces $$-IFL family bridge interface-mode" && ".. .. instance-type evpn")))";
                  junos:must-message "access/trunk interfaces are not allowed in evpn instance";
                  junos:must "((!(("interfaces $$-IFL vlan-id-list" || "interfaces $$-IFL vlan-tags inner-list")) || !((".. .. vlan-id" || ".. .. vlan-tags"))))";
                  junos:must-message "interface with vlan-id-list/inner-list cannot be added to routing-instance with a vlan-id/vlan-tags configured";
                  junos:must "((!(("interfaces $$-IFL family bridge interface-mode" || "interfaces $$-IFL family ethernet-switching")) || (".. .. instance-type virtual-switch" || ".. .. instance-type mac-vrf")))";
                  junos:must-message "Interface with 'interface-mode' is allowed only in a virtual-switch or mac-vrf instance";
                  junos:must "((!(".. .. instance-type virtual-switch") || ("interfaces $$-IFL family bridge interface-mode" || "interfaces $$-IFL family ethernet-switching")))";
                  junos:must-message "Only interface with 'interface-mode' is allowed in a virtual-switch";
                  junos:must "(!(".. .. .. routing-instances bridge-domains interfaces $$"))";
                  junos:must-message "The interface cannot be defined both at routing-instance and bridge-domain level";
                  junos:must "((!("interfaces $$-IFL vlan-id-range") || (".. .. instance-type vpls" || ".. .. instance-type evpn")))";
                  junos:must-message "vlan-id-range is specified for this logical interface; the routing instance must be of type vpls or evpn";
                  junos:must "(((".. .. vlan-id all" && "interfaces $$-IFL input-vlan-map pop") || (".. .. vlan-id inner-all" || (!((".. .. vlan-id" || ".. .. vlan-tags")) || (!(("interfaces $$-IFL input-vlan-map" || "interfaces $$-IFL output-vlan-map")) || (".. .. no-normalization" || ".. .. bridge-options no-normalization"))))))";
                  junos:must-message "interface with input/output vlan-maps cannot be added to a routing-instance with a vlan-id/vlan-tags configured";
                  junos:must "((!("interfaces $$-IFL vlan-tags inner-range") || ((".. .. vlan-id all" || ".. .. vlan-id inner-all") || (".. .. no-normalization" || ".. .. bridge-options no-normalization"))))";
                  junos:must-message "vlan-tags inner-range is specified for this logical interface; 'vlan-id all' or 'vlan-id inner-all' should also be enabled";
                  type string;
                }
    
                uses apply-advanced;
    
                choice mode {
                  leaf any {
                    type empty;
                    description
                      "Interface used for both unicast and multicast traffic";
                  }
                  leaf unicast {
                    type empty;
                    description
                      "Interface used for unicast traffic only";
                  }
                  leaf multicast {
                    type empty;
                    description
                      "Interface used for multicast traffic only";
                  }
                }  // choice mode
    
                leaf primary {
                  junos:must "(!(".. unicast"))";
                  junos:must-message "'primary' option can not be configured for unicast interface";
                  junos:must "((".. .. instance-type vrf" || ".. .. instance-type mpls-internet-multicast"))";
                  junos:must-message "'primary' option can only be configured for instance-type 'vrf' or 'mpls-internet-multicast'";
                  type empty;
                  description
                    "Preferred multicast vt interface for the routing-instance";
                }
    
                leaf protect-interface {
                  junos:must "("interfaces $$")";
                  junos:must-message "Interface must be part of this routing instance";
                  junos:must "(!("interfaces ${inter_name} esi"))";
                  junos:must-message "ESI can not be configured for protect interface";
                  junos:must "("routing-instances ${instance} protocols evpn")";
                  junos:must-message "Protocol EVPN must be configured in the evpn instance";
                  type union {
                    type jt:interface-name;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description
                    "Name of protect interface";
                }
              }  // list interface
    
              container routing-options {
                description
                  "Protocol-independent routing option configuration";
                uses apply-advanced;
    
                list rib {
                  key "name";
                  ordered-by user;
                  description
                    "Routing table options";
                  leaf name {
                    type string;
                    description
                      "Routing table name";
                  }
    
                  uses apply-advanced;
    
                  container static {
                    description "Static routes";
                    uses apply-advanced;
    
                    leaf rib-group {
                      type string;
                      description
                        "Routing table group";
                    }
    
                    container defaults {
                      description
                        "Global route options";
                      uses apply-advanced;
    
                      choice retain-choice {
                        leaf retain {
                          junos:must "(!(".. resolve"))";
                          junos:must-message "Must not specify resolve with retain";
                          type empty;
                          description
                            "Always keep route in forwarding table";
                        }
                        leaf no-retain {
                          junos:must "(!(".. resolve"))";
                          junos:must-message "Must not specify resolve with retain";
                          type empty;
                          description
                            "Don't always keep route in forwarding table";
                        }
                      }  // choice retain-choice
    
                      choice install-choice {
                        leaf install {
                          type empty;
                          description
                            "Install route into forwarding table";
                        }
                        leaf no-install {
                          type empty;
                          description
                            "Don't install route into forwarding table";
                        }
                      }  // choice install-choice
    
                      choice readvertise-choice {
                        leaf readvertise {
                          type empty;
                          description
                            "Mark route as eligible to be readvertised";
                        }
                        leaf no-readvertise {
                          type empty;
                          description
                            "Don't mark route as eligible to be readvertised";
                        }
                      }  // choice readvertise-choice
    
                      choice resolve-choice {
                        leaf resolve {
                          type empty;
                          description
                            "Allow resolution of indirectly connected next hops";
                        }
                        leaf no-resolve {
                          type empty;
                          description
                            "Don't allow resolution of indirectly connected next hops";
                        }
                      }  // choice resolve-choice
    
                      choice longest-match-choice {
                        leaf longest-match {
                          junos:must "(".. resolve")";
                          junos:must-message "Requires resolve to be configured";
                          type empty;
                          description
                            "Always use longest prefix match to resolve next hops";
                        }
                        leaf no-longest-match {
                          junos:must "(".. resolve")";
                          junos:must-message "Requires resolve to be configured";
                          type empty;
                          description
                            "Don't always use longest prefix match to resolve next hops";
                        }
                      }  // choice longest-match-choice
    
                      choice passive_flag {
                        leaf active {
                          type empty;
                          description
                            "Remove inactive route from forwarding table";
                        }
                        leaf passive {
                          type empty;
                          description
                            "Retain inactive route in forwarding table";
                        }
                      }  // choice passive_flag
    
                      container metric {
                        presence "enable metric";
                        description
                          "Metric value";
                        uses rib_static_metric_type;
                      }  // container metric
    
                      container metric2 {
                        presence
                          "enable metric2";
                        description
                          "Metric value 2";
                        uses rib_static_metric_type;
                      }  // container metric2
    
                      container metric3 {
                        presence
                          "enable metric3";
                        description
                          "Metric value 3";
                        uses rib_static_metric_type;
                      }  // container metric3
    
                      container metric4 {
                        presence
                          "enable metric4";
                        description
                          "Metric value 4";
                        uses rib_static_metric_type;
                      }  // container metric4
    
                      container tag {
                        presence "enable tag";
                        description "Tag string";
                        uses rib_static_metric_type;
                      }  // container tag
    
                      container tag2 {
                        presence "enable tag2";
                        description
                          "Tag string 2";
                        uses rib_static_metric_type;
                      }  // container tag2
    
                      container preference {
                        presence
                          "enable preference";
                        description
                          "Preference value";
                        uses rib_static_metric_type;
                      }  // container preference
    
                      container preference2 {
                        presence
                          "enable preference2";
                        description
                          "Preference value 2";
                        uses rib_static_metric_type;
                      }  // container preference2
    
                      container color {
                        presence "enable color";
                        description
                          "Color (preference) value";
                        uses rib_static_metric_type;
                      }  // container color
    
                      container color2 {
                        presence "enable color2";
                        description
                          "Color (preference) value 2";
                        uses rib_static_metric_type;
                      }  // container color2
    
                      leaf-list community {
                        type jt:community;
                        ordered-by user;
                        description
                          "BGP community identifier";
                      }
    
                      container as-path {
                        description
                          "Autonomous system path";
                        uses apply-advanced;
    
                        leaf path {
                          type string;
                          description
                            "Autonomous system path";
                        }
    
                        leaf origin {
                          type enumeration {
                            enum "igp" {
                              value 0;
                              description
                                "Path originated in the local IGP";
                            }
                            enum "egp" {
                              value 1;
                              description
                                "Path originated in another AS";
                            }
                            enum "incomplete" {
                              value 2;
                              description
                                "Path was learned by some other means";
                            }
                          }
                        }
    
                        leaf atomic-aggregate {
                          type empty;
                          description
                            "Add ATOMIC_AGGREGATE path attribute to route";
                        }
    
                        container aggregator {
                          presence
                            "enable aggregator";
                          description
                            "Add AGGREGATOR path attribute to route";
                        }  // container aggregator
    
                        leaf as-number {
                          type string {
                            junos:posix-pattern "^[0-9]+(.[0-9]+)?$";
                            junos:pattern-message "Use format 'x' or 'x.y' to specify number 'x' (Range 1 .. 4294967295) or number with higher 2 bytes 'x' (Range 0 .. 65535) and lower 2 bytes 'y' (Range 0 .. 65535) respectively";
                          }
                          description
                            " Autonomous system number in plain number or 'higher 16bits'.'Lower 16 bits' (asdot notation) format";
                        }
    
                        leaf address {
                          type jt:ipv4addr;
                          description
                            "Address of BGP system that formed the route";
                        }
                      }  // container as-path
                    }  // container defaults
    
                    list route {
                      key "name";
                      ordered-by user;
                      description "Static route";
                      leaf name {
                        type jt:ipprefix;
                      }
    
                      uses apply-advanced;
    
                      choice next_hop {
                        leaf-list next-hop {
                          type union {
                            type jt:ipaddr-or-interface;
                            type string {
                              pattern "<.*>|$.*";
                            }
                          }
                          ordered-by user;
                          description
                            "Next hop to destination";
                        }
                        leaf reject {
                          type empty;
                          description
                            "Drop packets to destination; send ICMP unreachables";
                        }
                        leaf discard {
                          type empty;
                          description
                            "Drop packets to destination; send no ICMP unreachables";
                        }
                        leaf receive {
                          type empty;
                          description
                            "Install a receive route for the destination";
                        }
                        leaf next-table {
                          type string {
                            junos:posix-pattern "^(((.{0,128})[:](.{1,128})[.]|((.{1,128})[.]))?([a-z]|[0-9]|[-_])+[.]((1?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5])))$";
                            junos:pattern-message "Must match the format [<instance-name>[:<topology-name>].]<family-name>.<rib-id>";
                          }
                          description
                            "Next hop to another table";
                        }
                      }  // choice next_hop
    
                      list qualified-next-hop {
                        key "name";
                        ordered-by user;
                        description
                          "Next hop with qualifiers";
                        uses qualified_nh_obj;
                      }  // list qualified-next-hop
    
                      leaf backup-pe-group {
                        junos:must "(".. p2mp-lsp-next-hop")";
                        junos:must-message "Backup groups only allowed for static routes with p2mp lsp next-hop";
                        type string;
                        description
                          "Multicast source redundancy group";
                      }
    
                      container bfd-liveness-detection {
                        description
                          "Bidirectional Forwarding Detection (BFD) options";
                        uses apply-advanced;
    
                        leaf version {
                          type enumeration {
                            enum "0" {
                              value 0;
                              description
                                "BFD version 0 (deprecated)";
                            }
                            enum "1" {
                              value 1;
                              description
                                "BFD version 1";
                            }
                            enum "automatic" {
                              value 2;
                              description
                                "Choose BFD version automatically";
                            }
                          }
                          default "automatic";
                          description
                            "BFD protocol version number";
                        }
    
                        leaf minimum-interval {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range
                                "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 authentication {
                          description
                            "Authentication options";
                          uses apply-advanced;
    
                          leaf key-chain {
                            junos:must "(".. algorithm")";
                            junos:must-message "May not be configured without algorithm";
                            junos:must "("security authentication-key-chains key-chain $$")";
                            junos:must-message "Referenced key-chain must be defined";
                            type string;
                            description
                              "Key chain name";
                          }
    
                          leaf algorithm {
                            junos:must "(".. key-chain")";
                            junos:must-message "May not be configured without key-chain";
                            type enumeration {
                              enum
                                "simple-password" {
                                value 0;
                                description
                                  "Simple password";
                              }
                              enum "keyed-md5" {
                                value 1;
                                description
                                  "Keyed message Digest 5";
                              }
                              enum
                                "meticulous-keyed-md5" {
                                value 2;
                                description
                                  "Meticulous keyed message Digest 5";
                              }
                              enum "keyed-sha-1" {
                                value 3;
                                description
                                  "Keyed secure hash algorithm (SHA1) ";
                              }
                              enum
                                "meticulous-keyed-sha-1" {
                                value 4;
                                description
                                  "Meticulous keyed secure hash algorithm (SHA1) ";
                              }
                            }
                            description
                              "Algorithm name";
                          }
    
                          leaf loose-check {
                            type empty;
                            description
                              "Verify authentication only if authentication is negotiated";
                          }
                        }  // container authentication
    
                        leaf neighbor {
                          type jt:ipaddr;
                          description
                            "BFD neighbor address";
                        }
    
                        leaf local-address {
                          type jt:ipaddr;
                          description
                            "BFD local address (for multihop only)";
                        }
    
                        leaf holddown-interval {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range
                                "0 .. 255000";
                            }
                          }
                          units "milliseconds";
                          description
                            "Time to hold the session-UP notification to the client";
                        }
    
                        leaf minimum-receive-ttl {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint8 {
                              range "1 .. 255";
                            }
                          }
                          description
                            "Minimum receive TTL below which to drop";
                        }
                      }  // container bfd-liveness-detection
    
                      choice retain-choice {
                        leaf retain {
                          junos:must "(!(".. resolve"))";
                          junos:must-message "Must not specify resolve with retain";
                          type empty;
                          description
                            "Always keep route in forwarding table";
                        }
                        leaf no-retain {
                          junos:must "(!(".. resolve"))";
                          junos:must-message "Must not specify resolve with retain";
                          type empty;
                          description
                            "Don't always keep route in forwarding table";
                        }
                      }  // choice retain-choice
    
                      choice install-choice {
                        leaf install {
                          type empty;
                          description
                            "Install route into forwarding table";
                        }
                        leaf no-install {
                          type empty;
                          description
                            "Don't install route into forwarding table";
                        }
                      }  // choice install-choice
    
                      choice readvertise-choice {
                        leaf readvertise {
                          type empty;
                          description
                            "Mark route as eligible to be readvertised";
                        }
                        leaf no-readvertise {
                          type empty;
                          description
                            "Don't mark route as eligible to be readvertised";
                        }
                      }  // choice readvertise-choice
    
                      choice resolve-choice {
                        leaf resolve {
                          type empty;
                          description
                            "Allow resolution of indirectly connected next hops";
                        }
                        leaf no-resolve {
                          type empty;
                          description
                            "Don't allow resolution of indirectly connected next hops";
                        }
                      }  // choice resolve-choice
    
                      choice longest-match-choice {
                        leaf longest-match {
                          junos:must "(".. resolve")";
                          junos:must-message "Requires resolve to be configured";
                          type empty;
                          description
                            "Always use longest prefix match to resolve next hops";
                        }
                        leaf no-longest-match {
                          junos:must "(".. resolve")";
                          junos:must-message "Requires resolve to be configured";
                          type empty;
                          description
                            "Don't always use longest prefix match to resolve next hops";
                        }
                      }  // choice longest-match-choice
    
                      choice passive_flag {
                        leaf active {
                          type empty;
                          description
                            "Remove inactive route from forwarding table";
                        }
                        leaf passive {
                          type empty;
                          description
                            "Retain inactive route in forwarding table";
                        }
                      }  // choice passive_flag
    
                      container metric {
                        presence "enable metric";
                        description
                          "Metric value";
                        uses rib_static_metric_type;
                      }  // container metric
    
                      container metric2 {
                        presence
                          "enable metric2";
                        description
                          "Metric value 2";
                        uses rib_static_metric_type;
                      }  // container metric2
    
                      container metric3 {
                        presence
                          "enable metric3";
                        description
                          "Metric value 3";
                        uses rib_static_metric_type;
                      }  // container metric3
    
                      container metric4 {
                        presence
                          "enable metric4";
                        description
                          "Metric value 4";
                        uses rib_static_metric_type;
                      }  // container metric4
    
                      container tag {
                        presence "enable tag";
                        description "Tag string";
                        uses rib_static_metric_type;
                      }  // container tag
    
                      container tag2 {
                        presence "enable tag2";
                        description
                          "Tag string 2";
                        uses rib_static_metric_type;
                      }  // container tag2
    
                      container preference {
                        presence
                          "enable preference";
                        description
                          "Preference value";
                        uses rib_static_metric_type;
                      }  // container preference
    
                      container preference2 {
                        presence
                          "enable preference2";
                        description
                          "Preference value 2";
                        uses rib_static_metric_type;
                      }  // container preference2
    
                      container color {
                        presence "enable color";
                        description
                          "Color (preference) value";
                        uses rib_static_metric_type;
                      }  // container color
    
                      container color2 {
                        presence "enable color2";
                        description
                          "Color (preference) value 2";
                        uses rib_static_metric_type;
                      }  // container color2
    
                      leaf-list community {
                        type jt:community;
                        ordered-by user;
                        description
                          "BGP community identifier";
                      }
    
                      container as-path {
                        description
                          "Autonomous system path";
                        uses apply-advanced;
    
                        leaf path {
                          type string;
                          description
                            "Autonomous system path";
                        }
    
                        leaf origin {
                          type enumeration {
                            enum "igp" {
                              value 0;
                              description
                                "Path originated in the local IGP";
                            }
                            enum "egp" {
                              value 1;
                              description
                                "Path originated in another AS";
                            }
                            enum "incomplete" {
                              value 2;
                              description
                                "Path was learned by some other means";
                            }
                          }
                        }
    
                        leaf atomic-aggregate {
                          type empty;
                          description
                            "Add ATOMIC_AGGREGATE path attribute to route";
                        }
    
                        container aggregator {
                          presence
                            "enable aggregator";
                          description
                            "Add AGGREGATOR path attribute to route";
                        }  // container aggregator
    
                        leaf as-number {
                          type string {
                            junos:posix-pattern "^[0-9]+(.[0-9]+)?$";
                            junos:pattern-message "Use format 'x' or 'x.y' to specify number 'x' (Range 1 .. 4294967295) or number with higher 2 bytes 'x' (Range 0 .. 65535) and lower 2 bytes 'y' (Range 0 .. 65535) respectively";
                          }
                          description
                            " Autonomous system number in plain number or 'higher 16bits'.'Lower 16 bits' (asdot notation) format";
                        }
    
                        leaf address {
                          type jt:ipv4addr;
                          description
                            "Address of BGP system that formed the route";
                        }
                      }  // container as-path
    
                      list lsp-next-hop {
                        key "name";
                        ordered-by user;
                        description
                          "LSP next hop";
                        uses lsp_nh_obj;
                      }  // list lsp-next-hop
    
                      list p2mp-lsp-next-hop {
                        key "name";
                        max-elements 1;
                        ordered-by user;
                        description
                          "Point-to-multipoint LSP next hop";
                        uses lsp_nh_obj;
                      }  // list p2mp-lsp-next-hop
    
                      container spring-te-lsp-next-hop {
                        junos:must "("protocols source-packet-routing tunnel-tracking")";
                        junos:must-message "Please enable the tunnel-tracking  under 'protocols source-packet-routing' hierarchy";
                        description
                          "SPRING-TE LSP next hop";
                        uses springte_lsp_nh_obj;
                      }  // container spring-te-lsp-next-hop
    
                      container p2mp-ldp-next-hop {
                        description
                          "Point-to-multipoint LDP LSP next hop";
                        uses p2mp_ldp_lsp_nh_obj;
                      }  // container p2mp-ldp-next-hop
    
                      list static-lsp-next-hop {
                        key "name";
                        ordered-by user;
                        description
                          "Static LSP next hop";
                        uses lsp_nh_obj;
                      }  // list static-lsp-next-hop
                    }  // list route
    
                    container static-route {
                      description
                        "Static route Status";
                      leaf bfd-admin-down {
                        type enumeration {
                          enum "active" {
                            value 0;
                            description
                              "Static route will be inactive on bfd-admin-down";
                          }
                          enum "passive" {
                            value 1;
                            description
                              "Static route will remain active on bfd-admin-down";
                          }
                        }
                        description
                          "Static route State on BFD ADMIN DOWN";
                      }
                    }  // container static-route
    
                    list route-target-filter {
                      key "name";
                      ordered-by user;
                      description
                        "Route-target-filter route";
                      leaf name {
                        type string {
                          junos:posix-pattern "^[0-9.]{1,15}L?:[0-9]{1,10}/([0-9]|[2-5][0-9]|6[0-4])$";
                          junos:pattern-message "Use format 'x:y/len' where 'x' is an AS number followed by an optional 'L' (To indicate 4 byte AS), or an IP address and 'y' is a number. e.g. 123456L:100 and len is a prefix length from 0 to 64";
                          length "1 .. 47";
                        }
                      }
    
                      uses apply-advanced;
    
                      leaf-list neighbor {
                        type jt:ipaddr-scoped;
                        ordered-by user;
                        description
                          "BGP peers for filter";
                      }
    
                      leaf-list group {
                        type string;
                        ordered-by user;
                        description
                          "BGP groups for filter";
                      }
    
                      leaf local {
                        type empty;
                        description
                          "Locally originated filter";
                      }
                    }  // list route-target-filter
                  }  // container static
    
                  list martians {
                    key "address choice-ident choice-value";
                    ordered-by user;
                    description "Invalid routes";
                    uses martian_type;
                  }  // list martians
    
                  container aggregate {
                    description
                      "Coalesced routes";
                    uses rib_aggregate_type;
                  }  // container aggregate
    
                  container generate {
                    description
                      "Route of last resort";
                    uses rib_aggregate_type;
                  }  // container generate
    
                  choice maximum-paths-type {
                    container maximum-routes {
                      status deprecated;
                      description
                        "Maximum number of routes";
                      leaf limit {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range
                              "1 .. 4294967295";
                          }
                        }
                        description
                          "Maximum number of routes";
                      }
    
                      choice log_type {
                        leaf threshold {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "1 .. 100";
                            }
                          }
                          description
                            "Percentage of limit at which to start generating warnings";
                        }
                        leaf log-only {
                          type empty;
                          description
                            "Generate warning messages only";
                        }
                      }  // choice log_type
    
                      leaf log-interval {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "5 .. 86400";
                          }
                        }
                        units "seconds";
                        description
                          "Minimum interval between log messages";
                      }
                    }  // container maximum-routes
                    container maximum-paths {
                      description
                        "Maximum number of paths";
                      leaf limit {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range
                              "1 .. 4294967295";
                          }
                        }
                        description
                          "Maximum number of paths";
                      }
    
                      choice log_type {
                        leaf threshold {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "1 .. 100";
                            }
                          }
                          description
                            "Percentage of limit at which to start generating warnings";
                        }
                        leaf log-only {
                          type empty;
                          description
                            "Generate warning messages only";
                        }
                      }  // choice log_type
    
                      leaf log-interval {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "5 .. 86400";
                          }
                        }
                        units "seconds";
                        description
                          "Minimum interval between log messages";
                      }
                    }  // container maximum-paths
                  }  // choice maximum-paths-type
    
                  container maximum-prefixes {
                    description
                      "Maximum number of prefixes";
                    leaf limit {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range
                            "1 .. 4294967295";
                        }
                      }
                      description
                        "Maximum number of prefixes";
                    }
    
                    choice log_type {
                      leaf threshold {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 100";
                          }
                        }
                        description
                          "Percentage of limit at which to start generating warnings";
                      }
                      leaf log-only {
                        type empty;
                        description
                          "Generate warning messages only";
                      }
                    }  // choice log_type
    
                    leaf log-interval {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "5 .. 86400";
                        }
                      }
                      units "seconds";
                      description
                        "Minimum interval between log messages";
                    }
                  }  // container maximum-prefixes
    
                  container multipath {
                    presence "enable multipath";
                    description
                      "Protocol-independent load balancing";
                    uses apply-advanced;
    
                    container vpn-unequal-cost {
                      presence
                        "enable vpn-unequal-cost";
                      description
                        "Include VPN routes with unequal IGP metrics";
                      leaf equal-external-internal {
                        type empty;
                        description
                          "Include external and internal VPN routes";
                      }
                    }  // container vpn-unequal-cost
    
                    leaf as-path-compare {
                      type empty;
                      description
                        "Compare AS path sequences in addition to AS path length";
                    }
    
                    leaf preserve-nexthop-hierarchy {
                      type empty;
                      description
                        "Force multipath to create List nexthop";
                    }
                  }  // container multipath
    
                  container policy-multipath {
                    description
                      "Policy based multipath";
                    uses apply-advanced;
    
                    leaf-list policy {
                      type jt:policy-algebra;
                      ordered-by user;
                      description
                        "Import policy to create policy based multipath";
                    }
    
                    container traceoptions {
                      description
                        "Trace options";
                      uses apply-advanced;
    
                      container file {
                        description
                          "Trace file options";
                        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 replace {
                          type empty;
                          status deprecated;
                          description
                            "Replace trace file rather than appending to it";
                        }
    
                        leaf size {
                          type string;
                          description
                            "Maximum trace file size";
                        }
    
                        leaf files {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "2 .. 1000";
                            }
                          }
                          default "10";
                          description
                            "Maximum number of trace files";
                        }
    
                        leaf no-stamp {
                          type empty;
                          status deprecated;
                          description
                            "Do not timestamp trace file";
                        }
    
                        choice world-readable-choice {
                          leaf world-readable {
                            type empty;
                            description
                              "Allow any user to read the log file";
                          }
                          leaf no-world-readable {
                            type empty;
                            description
                              "Don't allow any user to read the log file";
                          }
                        }  // choice world-readable-choice
                      }  // container file
    
                      list flag {
                        key "name";
                        ordered-by user;
                        description
                          "Tracing parameters";
                        leaf name {
                          type enumeration {
                            enum "route" {
                              value 0;
                              description
                                "Policy-multipath route tracing.";
                            }
                          }
                        }
    
                        leaf send {
                          type empty;
                          description
                            "Trace transmitted packets";
                        }
    
                        leaf receive {
                          type empty;
                          description
                            "Trace received packets";
                        }
    
                        leaf detail {
                          type empty;
                          description
                            "Trace detailed information";
                        }
    
                        leaf disable {
                          type empty;
                          description
                            "Disable this trace flag";
                        }
                      }  // list flag
                    }  // container traceoptions
                  }  // container policy-multipath
    
                  container protect {
                    description
                      "Protocol-independent protection";
                    leaf core {
                      type empty;
                      description
                        "Protect against unreachability to service-edge router";
                    }
                  }  // container protect
    
                  container access {
                    description "Access routes";
                    uses apply-advanced;
    
                    list route {
                      key "name";
                      ordered-by user;
                      description "Access route";
                      leaf name {
                        type jt:ipprefix;
                        description
                          "IP address of destination";
                      }
    
                      uses apply-advanced;
    
                      leaf-list next-hop {
                        type union {
                          type jt:ipaddr-or-interface;
                          type string {
                            pattern "<.*>|$.*";
                          }
                        }
                        ordered-by user;
                        description
                          "Next hop to destination";
                      }
    
                      list qualified-next-hop {
                        key "name";
                        ordered-by user;
                        description
                          "Next hop with qualifiers";
                        uses qualified_nh_obj;
                      }  // list qualified-next-hop
    
                      leaf metric {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 255";
                          }
                        }
                        description
                          "Metric value";
                      }
    
                      leaf preference {
                        type union {
                          type uint32;
                          type string {
                            pattern "<.*>|$.*";
                          }
                        }
                        description
                          "Preference value";
                      }
    
                      leaf tag {
                        type union {
                          type uint32;
                          type string {
                            pattern "<.*>|$.*";
                          }
                        }
                        description "Tag string";
                      }
    
                      leaf tag2 {
                        type union {
                          type uint32;
                          type string {
                            pattern "<.*>|$.*";
                          }
                        }
                        description
                          "Tag2 string";
                      }
                    }  // list route
                  }  // container access
    
                  container access-internal {
                    description
                      "Access-internal routes";
                    uses apply-advanced;
    
                    list route {
                      key "name";
                      ordered-by user;
                      description
                        "Access-internal route";
                      leaf name {
                        type jt:ipprefix;
                        description
                          "IP address and optional prefix length of destination";
                      }
    
                      uses apply-advanced;
    
                      leaf-list next-hop {
                        type union {
                          type jt:ipaddr-or-interface;
                          type string {
                            pattern "<.*>|$.*";
                          }
                        }
                        ordered-by user;
                        description
                          "Next hop to destination";
                      }
    
                      list qualified-next-hop {
                        key "name";
                        ordered-by user;
                        description
                          "Next hop with qualifiers";
                        uses qualified_nh_obj;
                      }  // list qualified-next-hop
                    }  // list route
                  }  // container access-internal
    
                  container bgp-static {
                    description
                      "Routes for BGP static advertisements";
                    uses apply-advanced;
    
                    list route {
                      key "name";
                      ordered-by user;
                      description
                        "BGP-static route";
                      leaf name {
                        type jt:ipprefix;
                        description
                          "IP address and optional prefix length of destination";
                      }
    
                      uses apply-advanced;
    
                      container metric {
                        presence "enable metric";
                        description
                          "Metric value";
                        uses rib_static_metric_type;
                      }  // container metric
    
                      container metric2 {
                        presence
                          "enable metric2";
                        description
                          "Metric value 2";
                        uses rib_static_metric_type;
                      }  // container metric2
    
                      container metric3 {
                        presence
                          "enable metric3";
                        description
                          "Metric value 3";
                        uses rib_static_metric_type;
                      }  // container metric3
    
                      container metric4 {
                        presence
                          "enable metric4";
                        description
                          "Metric value 4";
                        uses rib_static_metric_type;
                      }  // container metric4
    
                      container tag {
                        presence "enable tag";
                        description "Tag string";
                        uses rib_static_metric_type;
                      }  // container tag
    
                      container tag2 {
                        presence "enable tag2";
                        description
                          "Tag string 2";
                        uses rib_static_metric_type;
                      }  // container tag2
    
                      container preference {
                        presence
                          "enable preference";
                        description
                          "Preference value";
                        uses rib_static_metric_type;
                      }  // container preference
    
                      container preference2 {
                        presence
                          "enable preference2";
                        description
                          "Preference value 2";
                        uses rib_static_metric_type;
                      }  // container preference2
    
                      container color {
                        presence "enable color";
                        description
                          "Color (preference) value";
                        uses rib_static_metric_type;
                      }  // container color
    
                      container color2 {
                        presence "enable color2";
                        description
                          "Color (preference) value 2";
                        uses rib_static_metric_type;
                      }  // container color2
    
                      leaf-list community {
                        type jt:community;
                        ordered-by user;
                        description
                          "BGP community identifier";
                      }
    
                      container as-path {
                        description
                          "Autonomous system path";
                        uses apply-advanced;
    
                        leaf path {
                          type string;
                          description
                            "Autonomous system path";
                        }
    
                        leaf origin {
                          type enumeration {
                            enum "igp" {
                              value 0;
                              description
                                "Path originated in the local IGP";
                            }
                            enum "egp" {
                              value 1;
                              description
                                "Path originated in another AS";
                            }
                            enum "incomplete" {
                              value 2;
                              description
                                "Path was learned by some other means";
                            }
                          }
                        }
    
                        leaf atomic-aggregate {
                          type empty;
                          description
                            "Add ATOMIC_AGGREGATE path attribute to route";
                        }
    
                        container aggregator {
                          presence
                            "enable aggregator";
                          description
                            "Add AGGREGATOR path attribute to route";
                        }  // container aggregator
    
                        leaf as-number {
                          type string {
                            junos:posix-pattern "^[0-9]+(.[0-9]+)?$";
                            junos:pattern-message "Use format 'x' or 'x.y' to specify number 'x' (Range 1 .. 4294967295) or number with higher 2 bytes 'x' (Range 0 .. 65535) and lower 2 bytes 'y' (Range 0 .. 65535) respectively";
                          }
                          description
                            " Autonomous system number in plain number or 'higher 16bits'.'Lower 16 bits' (asdot notation) format";
                        }
    
                        leaf address {
                          type jt:ipv4addr;
                          description
                            "Address of BGP system that formed the route";
                        }
                      }  // container as-path
                    }  // list route
                  }  // container bgp-static
    
                  container flow {
                    description
                      "Locally defined flow routing information";
                    uses apply-advanced;
    
                    container validation {
                      presence
                        "enable validation";
                      description
                        "Flow route validation options";
                      uses flow-validation;
                    }  // container validation
    
                    list route {
                      key "name";
                      ordered-by user;
                      description "Flow route";
                      uses flow-route-inet6;
                    }  // list route
    
                    container interface-group {
                      description
                        "Interface-group for applying flow-spec filter";
                      uses flow-interface-group;
                    }  // container interface-group
    
                    leaf discard-action-for-unresolved-redir-addr {
                      type empty;
                      description
                        "For action redirect IP if redirect address is unresolved install discard action filter";
                    }
    
                    choice per-route-accounting-choice {
                      leaf per-route-accounting {
                        type empty;
                        description
                          "Enable traffic accounting per flowspec route";
                      }
                      leaf no-per-route-accounting {
                        type empty;
                        description
                          "Don't enable traffic accounting per flowspec route";
                      }
                    }  // choice per-route-accounting-choice
                  }  // container flow
    
                  container label {
                    presence "enable label";
                    description
                      "Label processing";
                    uses apply-advanced;
    
                    leaf-list allocation {
                      junos:must "(".. .. .. instance-type vrf")";
                      junos:must-message "'allocation' policy is valid only for 'instance-type vrf'";
                      type jt:policy-algebra;
                      ordered-by user;
                      description
                        "Label allocation policy";
                    }
    
                    leaf-list substitution {
                      junos:must "(".. .. .. instance-type vrf")";
                      junos:must-message "'substitution' policy is valid only for 'instance-type vrf'";
                      type jt:policy-algebra;
                      ordered-by user;
                      description
                        "Label substitution policy";
                    }
                  }  // container label
                }  // list rib
    
                container access {
                  description "Access routes";
                  uses apply-advanced;
    
                  list route {
                    key "name";
                    ordered-by user;
                    description "Access route";
                    leaf name {
                      type jt:ipprefix;
                      description
                        "IP address of destination";
                    }
    
                    uses apply-advanced;
    
                    leaf-list next-hop {
                      type union {
                        type jt:ipaddr-or-interface;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      ordered-by user;
                      description
                        "Next hop to destination";
                    }
    
                    list qualified-next-hop {
                      key "name";
                      ordered-by user;
                      description
                        "Next hop with qualifiers";
                      uses qualified_nh_obj;
                    }  // list qualified-next-hop
    
                    leaf metric {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 255";
                        }
                      }
                      description "Metric value";
                    }
    
                    leaf preference {
                      type union {
                        type uint32;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Preference value";
                    }
    
                    leaf tag {
                      type union {
                        type uint32;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description "Tag string";
                    }
    
                    leaf tag2 {
                      type union {
                        type uint32;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description "Tag2 string";
                    }
                  }  // list route
                }  // container access
    
                container access-internal {
                  description
                    "Access-internal routes";
                  uses apply-advanced;
    
                  list route {
                    key "name";
                    ordered-by user;
                    description
                      "Access-internal route";
                    leaf name {
                      type jt:ipprefix;
                      description
                        "IP address and optional prefix length of destination";
                    }
    
                    uses apply-advanced;
    
                    leaf-list next-hop {
                      type union {
                        type jt:ipaddr-or-interface;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      ordered-by user;
                      description
                        "Next hop to destination";
                    }
    
                    list qualified-next-hop {
                      key "name";
                      ordered-by user;
                      description
                        "Next hop with qualifiers";
                      uses qualified_nh_obj;
                    }  // list qualified-next-hop
                  }  // list route
                }  // container access-internal
    
                container multicast {
                  description
                    "Global multicast options";
                  uses apply-advanced;
    
                  container traceoptions {
                    description
                      "Global multicast trace options";
                    uses apply-advanced;
    
                    container file {
                      description
                        "Trace file options";
                      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 replace {
                        type empty;
                        status deprecated;
                        description
                          "Replace trace file rather than appending to it";
                      }
    
                      leaf size {
                        type string;
                        description
                          "Maximum trace file size";
                      }
    
                      leaf files {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "2 .. 1000";
                          }
                        }
                        default "10";
                        description
                          "Maximum number of trace files";
                      }
    
                      leaf no-stamp {
                        type empty;
                        status deprecated;
                        description
                          "Do not timestamp trace file";
                      }
    
                      choice world-readable-choice {
                        leaf world-readable {
                          type empty;
                          description
                            "Allow any user to read the log file";
                        }
                        leaf no-world-readable {
                          type empty;
                          description
                            "Don't allow any user to read the log file";
                        }
                      }  // choice world-readable-choice
                    }  // container file
    
                    list flag {
                      key "name";
                      ordered-by user;
                      description
                        "Tracing parameters";
                      leaf name {
                        type enumeration {
                          enum "parse" {
                            value 0;
                            description
                              "Trace configuration parsing";
                          }
                          enum "config-internal" {
                            value 1;
                            description
                              "Trace configuration internals";
                          }
                          enum "route" {
                            value 2;
                            description
                              "Trace routing information";
                          }
                          enum "normal" {
                            value 3;
                            description
                              "Trace normal events";
                          }
                          enum "general" {
                            value 4;
                            description
                              "Trace general events";
                          }
                          enum "state" {
                            value 5;
                            description
                              "Trace state transitions";
                          }
                          enum "policy" {
                            value 6;
                            description
                              "Trace policy processing";
                          }
                          enum "task" {
                            value 7;
                            description
                              "Trace routing protocol task processing";
                          }
                          enum "timer" {
                            value 8;
                            description
                              "Trace routing protocol timer processing";
                          }
                          enum "all" {
                            value 9;
                            description
                              "Trace everything";
                          }
                        }
                      }
    
                      leaf disable {
                        type empty;
                        description
                          "Disable this trace flag";
                      }
                    }  // list flag
                  }  // container traceoptions
    
                  leaf rpf {
                    type string;
                    status deprecated;
                  }
    
                  list scope {
                    key "name";
                    ordered-by user;
                    description
                      "Multicast address scope";
                    leaf name {
                      type string;
                      description
                        "Name to identify multicast address scope";
                    }
    
                    uses apply-advanced;
    
                    leaf prefix {
                      type jt:ipprefix;
                      description
                        "Administratively scoped address";
                    }
    
                    leaf-list interface {
                      type union {
                        type jt:interface-name;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      ordered-by user;
                      description
                        "Interface on which to configure scoping";
                    }
                  }  // list scope
    
                  leaf-list scope-policy {
                    type jt:policy-algebra;
                    ordered-by user;
                    description "Scoping policy";
                  }
    
                  list flow-map {
                    key "name";
                    ordered-by user;
                    description
                      "Multicast flow map configuration";
                    leaf name {
                      type string;
                      description
                        "Name of the flow map";
                    }
    
                    uses apply-advanced;
    
                    leaf-list policy {
                      type jt:policy-algebra;
                      ordered-by user;
                      description
                        "Policy for matched flows";
                    }
    
                    container bandwidth {
                      presence
                        "enable bandwidth";
                      description
                        "Bandwidth properties for matched flows";
                      leaf bandwidth-value {
                        type string;
                        units "bps";
                        description
                          "Static or default bandwidth for the matched flows";
                      }
    
                      leaf adaptive {
                        type empty;
                        description
                          "Auto-sense bandwidth for matched flows";
                      }
                    }  // container bandwidth
    
                    leaf-list redundant-sources {
                      junos:must "(".. bandwidth adaptive")";
                      junos:must-message "redundant-sources can only be configured together with 'bandwidth adaptive'";
                      type jt:ipaddr;
                      ordered-by user;
                      description
                        "Redundant source addresses";
                    }
    
                    container forwarding-cache {
                      description
                        "Forwarding cache properties for matched flows";
                      uses apply-advanced;
    
                      container timeout {
                        description
                          "Timeout properties for matched flows";
                        choice timeout_choice {
                          leaf timeout-value {
                            type union {
                              type string {
                                pattern
                                  "<.*>|$.*";
                              }
                              type uint32 {
                                range "1 .. 720";
                              }
                            }
                            units "minutes";
                            description
                              "Timeout for forwarding cache entry";
                          }
                          container never {
                            presence
                              "enable never";
                            description
                              "Forwarding cache entries never time out";
                            uses apply-advanced;
    
                            leaf non-discard-entry-only {
                              type empty;
                              description
                                "Apply only to non-discard entries";
                            }
                          }  // container never
                        }  // choice timeout_choice
                      }  // container timeout
                    }  // container forwarding-cache
                  }  // list flow-map
    
                  leaf-list resolve-filter {
                    type jt:policy-algebra;
                    ordered-by user;
                    status deprecated;
                    description
                      "Multicast resolve policy filter";
                  }
    
                  leaf-list ssm-groups {
                    type jt:ipprefix;
                    ordered-by user;
                    description
                      "Source-specific multicast group ranges";
                  }
    
                  leaf cont-stats-collection-interval {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint16 {
                        range "60 .. 3600";
                      }
                    }
                    default "300";
                    description
                      "IGMP/MLD continuous statistics collection interval";
                  }
    
                  leaf asm-override-ssm {
                    type empty;
                    description
                      "Allow ASM state for SSM group ranges";
                  }
    
                  leaf-list rpf-check-policy {
                    type jt:policy-algebra;
                    ordered-by user;
                    description
                      "Disable RPF check for a source group pair";
                  }
    
                  container pim-to-igmp-proxy {
                    description
                      "PIM-to-IGMP proxy";
                    uses apply-advanced;
    
                    leaf-list upstream-interface {
                      type union {
                        type jt:interface-name;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      max-elements 2;
                      ordered-by user;
                      description
                        "Upstream interface list";
                    }
                  }  // container pim-to-igmp-proxy
    
                  container pim-to-mld-proxy {
                    description
                      "PIM-to-MLD proxy";
                    uses apply-advanced;
    
                    leaf-list upstream-interface {
                      type union {
                        type jt:interface-name;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      max-elements 2;
                      ordered-by user;
                      description
                        "Upstream interface list";
                    }
                  }  // container pim-to-mld-proxy
    
                  container forwarding-cache {
                    description
                      "Multicast forwarding cache";
                    uses apply-advanced;
    
                    leaf allow-maximum {
                      type empty;
                      description
                        "Allow maximum of global and family level threshold values for suppress and reuse";
                    }
    
                    list family {
                      junos:must "((!(".. threshold") || ".. allow-maximum"))";
                      junos:must-message "Family threshold cannot be configured if global threshold is already configured";
                      key "name";
                      ordered-by user;
                      description
                        "Protocol family";
                      leaf name {
                        type enumeration {
                          enum "inet" {
                            value 0;
                            description
                              "IPv4 family";
                          }
                          enum "inet6" {
                            value 1;
                            description
                              "IPv6 family";
                          }
                        }
                        description
                          "Protocol family";
                      }
    
                      uses apply-advanced;
    
                      container threshold {
                        presence
                          "enable threshold";
                        description
                          "Multicast forwarding cache suppress threshold";
                        uses apply-advanced;
    
                        leaf suppress {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range
                                "1 .. 200000";
                            }
                          }
                          description
                            "Suppress threshold";
                        }
    
                        leaf reuse {
                          junos:must "(".. suppress")";
                          junos:must-message "To configure reuse, suppress must be configured";
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range
                                "1 .. 200000";
                            }
                          }
                          description
                            "Reuse threshold";
                        }
    
                        leaf mvpn-rpt-suppress {
                          junos:must "(".. suppress")";
                          junos:must-message "To configure mvpn-rpt-suppress, suppress must be configured";
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range
                                "1 .. 200000";
                            }
                          }
                          description
                            "MVPN RP tree entry suppress threshold";
                        }
    
                        leaf mvpn-rpt-reuse {
                          junos:must "(".. mvpn-rpt-suppress")";
                          junos:must-message "To configure mvpn-rpt-reuse, mvpn-rpt-suppress must be configured";
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range
                                "1 .. 200000";
                            }
                          }
                          description
                            "MVPN RP tree entry reuse threshold";
                        }
    
                        leaf log-warning {
                          junos:must "(".. suppress")";
                          junos:must-message "To configure log-warning, suppress must be configured";
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "1 .. 100";
                            }
                          }
                          description
                            "Percentage at which to start generating warnings";
                        }
                      }  // container threshold
                    }  // list family
    
                    container threshold {
                      junos:must "((!(".. family") || ".. allow-maximum"))";
                      junos:must-message "Global threshold cannot be configured if family threshold is configured";
                      description "Threshold";
                      uses apply-advanced;
    
                      leaf suppress {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 200000";
                          }
                        }
                        description
                          "Suppress threshold";
                      }
    
                      leaf reuse {
                        junos:must "(".. suppress")";
                        junos:must-message "To configure reuse, suppress must be configured";
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 200000";
                          }
                        }
                        description
                          "Reuse threshold";
                      }
    
                      leaf mvpn-rpt-suppress {
                        junos:must "(".. suppress")";
                        junos:must-message "To configure mvpn-rpt-suppress, suppress must be configured";
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 200000";
                          }
                        }
                        description
                          "MVPN RP tree entry suppress threshold";
                      }
    
                      leaf mvpn-rpt-reuse {
                        junos:must "(".. mvpn-rpt-suppress")";
                        junos:must-message "To configure mvpn-rpt-reuse, mvpn-rpt-suppress must be configured";
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 200000";
                          }
                        }
                        description
                          "MVPN RP tree entry reuse threshold";
                      }
    
                      leaf log-warning {
                        junos:must "(".. suppress")";
                        junos:must-message "To configure log-warning, suppress must be configured";
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 100";
                          }
                        }
                        description
                          "Percentage at which to start generating warnings";
                      }
                    }  // container threshold
    
                    leaf timeout {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 720";
                        }
                      }
                      description
                        "Forwarding cache entry timeout in minutes";
                    }
                  }  // container forwarding-cache
    
                  list interface {
                    key "name";
                    ordered-by user;
                    description
                      "Multicast interface options";
                    uses multicast_interface_options_type;
                  }  // list interface
    
                  list ssm-map {
                    key "name";
                    ordered-by user;
                    description
                      "SSM map definitions";
                    leaf name {
                      type string;
                      description "SSM map name";
                    }
    
                    uses apply-advanced;
    
                    leaf-list policy {
                      type jt:policy-algebra;
                      ordered-by user;
                      description
                        "Policy for matching group";
                    }
    
                    leaf-list source {
                      type jt:ipaddr;
                      ordered-by user;
                      description
                        "One or more source addresses";
                    }
                  }  // list ssm-map
    
                  list backup-pe-group {
                    key "name";
                    ordered-by user;
                    description
                      "Backup PE group definitions";
                    leaf name {
                      type string;
                      description
                        "PE group name";
                    }
    
                    uses apply-advanced;
    
                    leaf-list backups {
                      type jt:ipaddr;
                      max-elements 8;
                      ordered-by user;
                      description
                        "One or more IP addresses";
                    }
    
                    leaf local-address {
                      type jt:ipaddr;
                      description
                        "Address to be used as local-address for this group";
                    }
                  }  // list backup-pe-group
    
                  leaf omit-wildcard-address {
                    type empty;
                    description
                      "Omit wildcard source/group fields in SPMSI AD NLRI";
                  }
    
                  leaf local-address {
                    type jt:ipv4addr;
                    description
                      "Local address for PIM and MVPN sessions";
                  }
                }  // container multicast
              }  // container routing-options
            }  // list instance
          }  // container routing-instances
    
          container telemetry {
            description
              "Telemetry configuration";
            uses apply-advanced;
    
            container service-statistics {
              presence
                "enable service-statistics";
              description
                "Subscriber Service-statistics configuration";
            }  // container service-statistics
    
            container subscriber-statistics {
              presence
                "enable subscriber-statistics";
              description
                "Subscriber statistics configuration";
            }  // container subscriber-statistics
    
            container queue-statistics {
              description
                "Telemetry Queue-Statistics configuration";
              uses apply-advanced;
    
              list interface {
                key "name";
                ordered-by user;
                description
                  "Interface name for this telemetry configuration";
                leaf name {
                  type enumeration {
                    enum "$junos-interface-name" {
                      value 0;
                      description
                        "Dynamic profile interface";
                    }
                  }
                }
    
                uses apply-advanced;
    
                leaf refresh {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "300 .. 86400";
                    }
                  }
                  description
                    "Refresh interval range 300-86400";
                }
    
                leaf queues {
                  type string {
                    junos:posix-pattern "^[0-7,]{1,15}$";
                    junos:pattern-message "Must be 0 to 7 separated by comma";
                  }
                  description
                    "Queues to be exported 0-7 separated by ,";
                }
              }  // list interface
    
              list interface-set {
                key "name";
                ordered-by user;
                description
                  "Logical interface set configuration";
                leaf name {
                  type enumeration {
                    enum
                      "$junos-interface-set-name" {
                      value 0;
                      description
                        "Dynamic profile Interface set name";
                    }
                  }
                }
    
                uses apply-advanced;
    
                leaf refresh {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "300 .. 86400";
                    }
                  }
                  description
                    "Refresh interval range 300-86400";
                }
    
                leaf queues {
                  type string {
                    junos:posix-pattern "^[0-7,]{1,15}$";
                    junos:pattern-message "Must be 0 to 7 separated by comma";
                  }
                  description
                    "Queues to be exported 0-7 separated by ,";
                }
              }  // list interface-set
            }  // container queue-statistics
          }  // container telemetry
    
          container interfaces {
            description
              "Interface configuration";
            uses apply-advanced;
    
            list interface-set {
              key "name";
              ordered-by user;
              description
                "Logical interface set configuration";
              leaf name {
                type string;
              }
    
              uses apply-advanced;
    
              list interface {
                key "name";
                ordered-by user;
                description
                  "One or more interfaces that belong to interface set";
                leaf name {
                  junos:must "("interfaces $$")";
                  junos:must-message "Interface should have configuration defined for adding to interface-set";
                  type union {
                    type jt:interface-device;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description "Interface name";
                }
    
                uses apply-advanced;
    
                list unit {
                  junos:must "(!(".. vlan-tags-outer"))";
                  junos:must-message "'unit' statement cannot be included along with 'vlan-tags-outer' statement";
                  key "name";
                  description
                    "One or more logical interface unit numbers";
                  leaf name {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 1073741823";
                      }
                    }
                    description "Unit number";
                  }
    
                  uses apply-advanced;
                }  // list unit
    
                list vlan-tags-outer {
                  junos:must "(!(".. unit"))";
                  junos:must-message "'vlan-tags-outer' statement cannot be included along with 'unit' statement";
                  key "name";
                  description
                    "One or more outer VLAN tags";
                  leaf name {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 4094";
                      }
                    }
                    description "VLAN tag ID";
                  }
    
                  uses apply-advanced;
                }  // list vlan-tags-outer
              }  // list interface
            }  // list interface-set
    
            container stacked-interface-set {
              presence
                "enable stacked-interface-set";
              description
                "Stacked interface set configuration";
              uses apply-advanced;
    
              list interface-set {
                key "name";
                ordered-by user;
                description
                  "Stacked parent interface set configuration";
                leaf name {
                  type string;
                }
    
                uses apply-advanced;
    
                list interface-set {
                  key "name";
                  ordered-by user;
                  description
                    "Stacked child interface set configuration";
                  leaf name {
                    type string;
                  }
    
                  uses apply-advanced;
                }  // list interface-set
              }  // list interface-set
            }  // container stacked-interface-set
    
            container traceoptions {
              description
                "Interface 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";
                description "Tracing parameters";
                leaf name {
                  type enumeration {
                    enum "all" {
                      value 0;
                      description
                        "Enable all configuration logging";
                    }
                    enum "kernel" {
                      value 1;
                      description
                        "Log configuration IPC messages to kernel";
                    }
                    enum "change-events" {
                      value 2;
                      description
                        "Log changes that produce configuration events";
                    }
                    enum "kernel-detail" {
                      value 3;
                      description
                        "Log details of configuration messages to kernel";
                    }
                    enum "config-states" {
                      value 4;
                      description
                        "Log the configuration state machine changes";
                    }
                    enum "resource-usage" {
                      value 5;
                      description
                        "Log the resource usage for different states";
                    }
                    enum "gres-events" {
                      value 6;
                      description
                        "Log the events related to GRES ";
                    }
                    enum "select-events" {
                      value 7;
                      description
                        "Log the events on select state machine ";
                    }
                    enum "bfd-events" {
                      value 8;
                      description
                        "Log BFD related events";
                    }
                    enum "lib-events" {
                      value 9;
                      description
                        "Log DCD library related events";
                    }
                    enum "reserved" {
                      value 10;
                      description
                        "Reserved DCD logs";
                    }
                    enum "emergency" {
                      value 11;
                      description
                        "Log DCD emergency events";
                    }
                    enum "alert" {
                      value 12;
                      description
                        "Log DCD alert events";
                    }
                    enum "critical" {
                      value 13;
                      description
                        "Log DCD critical events";
                    }
                    enum "error" {
                      value 14;
                      description
                        "Log DCD error events";
                    }
                    enum "warning" {
                      value 15;
                      description
                        "Log DCD warning events";
                    }
                    enum "notice" {
                      value 16;
                      description
                        "Log DCD notification events";
                    }
                    enum "informational" {
                      value 17;
                      description
                        "Log DCD informations";
                    }
                    enum "debugging" {
                      value 18;
                      description
                        "Log DCD debug events";
                    }
                    enum "verbose" {
                      value 19;
                      description
                        "Log DCD debug all events";
                    }
                    enum "japi" {
                      value 20;
                      description
                        "Log DCD JAPI events";
                    }
                  }
                }
    
                leaf disable {
                  type empty;
                  description
                    "Disable this trace flag";
                }
              }  // list flag
            }  // container traceoptions
    
            list interface-range {
              key "name";
              ordered-by user;
              description
                "Interface ranges configuration";
              leaf name {
                type string {
                  junos:posix-pattern "^[[:alpha:]][[:alnum:]_.-]+$";
                  junos:pattern-message "Must start with a letter followed by letters, numbers, dashes or underscore";
                  length "1 .. 128";
                }
                description
                  "Interface-range name";
              }
    
              list member {
                key "name";
                ordered-by user;
                description
                  "Interfaces belonging to the interface range";
                leaf name {
                  type union {
                    type jt:interface-range-wild;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description
                    "Member interface name";
                }
    
                uses apply-advanced;
              }  // list member
    
              list member-range {
                key "name";
                ordered-by user;
                description
                  "Interfaces range in <start-range> to <end-range> format";
                leaf name {
                  type union {
                    type jt:interface-device;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                }
    
                leaf end-range {
                  type union {
                    type jt:interface-device;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                }
              }  // list member-range
    
              uses apply-advanced;
    
              leaf description {
                type string;
                description
                  "Text description of interface";
              }
    
              leaf external-model-name {
                type string;
                description
                  "Name for interface as configured using 3rd-party model";
              }
    
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable this interface";
                }
              }  // choice enable-disable
    
              container traceoptions {
                presence "enable traceoptions";
                description
                  "Interface trace options";
                uses apply-advanced;
    
                list flag {
                  key "name";
                  ordered-by user;
                  description
                    "Tracing parameters";
                  leaf name {
                    type enumeration {
                      enum "ipc" {
                        value 0;
                        description
                          "Trace interface IPC messages";
                      }
                      enum "event" {
                        value 1;
                        description
                          "Trace interface events";
                      }
                      enum "media" {
                        value 2;
                        description
                          "Trace interface media changes";
                      }
                      enum "all" {
                        value 3;
                        description
                          "Enable all interface trace flags";
                      }
                    }
                  }
                }  // list flag
              }  // container traceoptions
    
              leaf passive-monitor-mode {
                junos:must "(!(("services nat ipv6-multicast-interfaces $$={all}" || "services nat ipv6-multicast-interfaces ${interface}")))";
                junos:must-message "Can not configure 'services nat ipv6-multicast-interfaces' when passive montioring is enabled for the interface";
                junos:must "(!((".. encapsulation ethernet-ccc" || (".. encapsulation ethernet-tcc" || (".. encapsulation ethernet-bridge" || (".. encapsulation ethernet-vpls" || (".. encapsulation extended-vlan-ccc" || (".. encapsulation extended-vlan-tcc" || (".. encapsulation extended-vlan-vpls" || (".. encapsulation extended-vlan-bridge" || (".. encapsulation flexible-ethernet-services" || (".. encapsulation vlan-ccc" || (".. encapsulation vlan-vci-ccc" || ".. encapsulation vlan-vpls")))))))))))))";
                junos:must-message "Not compatible with specified 'encapsulation`";
                type empty;
                description
                  "Use interface to tap packets from another router";
              }
    
              choice keepalive_choices {
                container keepalives {
                  presence "enable keepalives";
                  description
                    "Send or demand keepalive messages";
                  uses keepalives_type;
                }  // container keepalives
                leaf no-keepalives {
                  type empty;
                  description
                    "Do not send keepalive messages";
                }
              }  // choice keepalive_choices
    
              choice traps-choice {
                leaf traps {
                  type empty;
                  description
                    "Enable SNMP notifications on state changes";
                }
                leaf no-traps {
                  type empty;
                  description
                    "Don't enable SNMP notifications on state changes";
                }
              }  // choice traps-choice
    
              choice interface-mib-choice {
                leaf interface-mib {
                  type empty;
                  description
                    "Enable interface-related MIBs";
                }
                leaf no-interface-mib {
                  type empty;
                  description
                    "Don't enable interface-related MIBs";
                }
              }  // choice interface-mib-choice
    
              leaf accounting-profile {
                junos:must "(("accounting-options interface-profile $$" || "accounting-options flat-file-profile $$"))";
                junos:must-message "referenced accounting profile must be defined";
                type string;
                description
                  "Accounting profile name";
              }
    
              choice scheduler_type {
                choice per-unit-scheduler-choice {
                  leaf per-unit-scheduler {
                    type empty;
                    description
                      "Enable subunit queuing on Frame Relay or VLAN IQ interface";
                  }
                  leaf no-per-unit-scheduler {
                    type empty;
                    description
                      "Don't enable subunit queuing on Frame Relay or VLAN IQ interface";
                  }
                }  // choice per-unit-scheduler-choice
                leaf shared-scheduler {
                  junos:must "((".. vlan-tagging" || (".. stacked-vlan-tagging" || (".. flexible-vlan-tagging" || ".. vlan-vci-tagging"))))";
                  junos:must-message "vlan tagging needs to be enabled for shared scheduler";
                  type empty;
                  description
                    "Enabled shared queuing on an IQ2 interface";
                }
                container hierarchical-scheduler {
                  presence
                    "enable hierarchical-scheduler";
                  description
                    "Enable hierarchical scheduling";
                  leaf maximum-hierarchy-levels {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "2 .. 4";
                      }
                    }
                    description
                      "Maximum hierarchy levels";
                  }
    
                  leaf implicit-hierarchy {
                    type empty;
                    description
                      "Implicit hierarchy (follows interface hierarchy)";
                  }
                }  // container hierarchical-scheduler
              }  // choice scheduler_type
    
              leaf l2tp-maximum-session {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 64000";
                  }
                }
                description
                  "Maximum L2TP session";
              }
    
              leaf schedulers {
                type union {
                  type uint32;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Number of schedulers to allocate for interface";
              }
    
              leaf dce {
                type empty;
                description
                  "Respond to Frame Relay status enquiry messages";
              }
    
              choice vlan_tag_mode {
                leaf vlan-tagging {
                  junos:must "(!(("protocols dot1x authenticator interface ${interface}.0" || "protocols dot1x supplicant interface ${interface}.0")))";
                  junos:must-message "Dot1x is not supported on vlan-tagged interface";
                  type empty;
                  description
                    "802.1q VLAN tagging support";
                }
                leaf stacked-vlan-tagging {
                  junos:must "(!(("protocols dot1x authenticator interface ${interface}.0" || "protocols dot1x supplicant interface ${interface}.0")))";
                  junos:must-message "Dot1x is not supported on vlan-tagged interface";
                  junos:must "(!((".. passive-monitor-mode" || ".. 802.3ad")))";
                  junos:must-message "Not compatible with passive-monitor-mode statement";
                  type empty;
                  description
                    "Stacked 802.1q VLAN tagging support";
                }
                leaf flexible-vlan-tagging {
                  junos:must "(!(("protocols dot1x authenticator interface ${interface}.0" || "protocols dot1x supplicant interface ${interface}.0")))";
                  junos:must-message "Dot1x is not supported on vlan-tagged interface";
                  type empty;
                  description
                    "Support for no tagging, or single and double 802.1q VLAN tagging";
                }
                leaf vlan-vci-tagging {
                  type empty;
                  description
                    "CCC for VLAN Q-in-Q and ATM VPI/VCI interworking";
                }
              }  // choice vlan_tag_mode
    
              leaf native-vlan-id {
                junos:must "((".. flexible-vlan-tagging" || (".. unit $$={0} family bridge interface-mode trunk" || (".. unit $$={0} family ethernet-switching interface-mode trunk" || (any "logical-systems <*> interfaces ${interface} unit <*> family bridge interface-mode trunk" || any "logical-systems <*> interfaces ${interface} unit <*> family ethernet-switching interface-mode trunk")))))";
                junos:must-message "native-vlan-id can be specified with flexible-vlan-tagging mode or with interface-mode trunk";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 4094";
                  }
                }
                description
                  "Virtual LAN identifier for untagged frames";
              }
    
              leaf number-of-sub-ports {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 8";
                  }
                }
                description
                  "Number of channels to create for a port";
              }
    
              leaf speed {
                type enumeration {
                  enum "auto" {
                    junos:must "((!("interfaces ${interface} gigether-options 802.3ad") || !("interfaces ${interface} ether-options 802.3ad")))";
                    junos:must-message "Auto speed cannot be configured for an aggregated ethernet member link";
                    junos:must "(("interfaces ${interface} gigether-options auto-negotiation" || "interfaces ${interface} ether-options auto-negotiation"))";
                    junos:must-message "gigether-options/ether-options auto-negotiation must be enabled";
                    value 0;
                    description
                      "Enable auto negotiation of interface speed";
                  }
                  enum "auto-10m-100m" {
                    junos:must "((!("interfaces ${interface} gigether-options 802.3ad") || !("interfaces ${interface} ether-options 802.3ad")))";
                    junos:must-message "Auto speed cannot be configured for an aggregated ethernet member link";
                    junos:must "(("interfaces ${interface} gigether-options auto-negotiation" || "interfaces ${interface} ether-options auto-negotiation"))";
                    junos:must-message "gigether-options/ether-options auto-negotiation must be enabled";
                    value 1;
                    description
                      "Enable auto negotiation of limiting interface speed to 10m/100m";
                  }
                  enum "10m" {
                    value 2;
                  }
                  enum "100m" {
                    value 3;
                  }
                  enum "1g" {
                    value 4;
                  }
                  enum "2.5g" {
                    value 5;
                  }
                  enum "5g" {
                    value 6;
                  }
                  enum "10g" {
                    value 7;
                  }
                  enum "25g" {
                    value 8;
                  }
                  enum "40g" {
                    value 9;
                  }
                  enum "50g" {
                    value 10;
                  }
                  enum "100g" {
                    value 11;
                  }
                  enum "200g" {
                    value 12;
                  }
                  enum "400g" {
                    value 13;
                  }
                  enum "oc3" {
                    value 14;
                  }
                  enum "oc12" {
                    value 15;
                  }
                  enum "oc48" {
                    value 16;
                  }
                }
                description "Link speed";
              }
    
              leaf mtu {
                junos:must "(!("interfaces ${interface} container-options container-list"))";
                junos:must-message "mtu is not supported for container child interfaces";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32;
                }
                description
                  "Maximum transmit packet size";
              }
    
              container hold-time {
                description
                  "Hold time for link up and link down";
                leaf up {
                  type union {
                    type uint32;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  units "milliseconds";
                  description
                    "Link up hold time";
                }
    
                leaf down {
                  type union {
                    type uint32;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  units "milliseconds";
                  description
                    "Link down hold time";
                }
              }  // container hold-time
    
              container link-degrade-monitor {
                presence
                  "enable link-degrade-monitor";
                description
                  "Enable link degrade monitoring";
                uses apply-advanced;
    
                choice enable_choice {
                  leaf link-degrade-monitor-enable {
                    type empty;
                    description
                      "Enable Link Degrade Monitoring";
                  }
                  leaf no-link-degrade-monitor-enable {
                    type empty;
                    description
                      "Disable Link Degrade Monitoring";
                  }
                }  // choice enable_choice
    
                container actions {
                  description
                    "Action upon link degrade event";
                  uses apply-advanced;
    
                  choice action_choice {
                    leaf media-based {
                      type empty;
                      description "Media based";
                    }
                  }  // choice action_choice
                }  // container actions
    
                container recovery {
                  description
                    "Link degrade recovery mechanism";
                  uses apply-advanced;
    
                  leaf timer {
                    junos:must "(!(".. manual"))";
                    junos:must-message "Recovery mechanism must be auto to configure recovery timer";
                    type union {
                      type uint32;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    default "1800";
                    description
                      "Auto recovery timer in seconds";
                  }
    
                  choice receovery_choice {
                    leaf auto {
                      type empty;
                      description
                        "Automatic recovery";
                    }
                    leaf manual {
                      type empty;
                      description
                        "Manual recovery";
                    }
                  }  // choice receovery_choice
                }  // container recovery
    
                container thresholds {
                  description
                    "Link degrade threshold parameters";
                  uses apply-advanced;
    
                  leaf set {
                    type string {
                      junos:posix-pattern "^1e-(1[0-6]?|[2-9])$";
                      junos:pattern-message "Ber threshold value in format: 1e-n, n = 1..16";
                    }
                    default "1e-7";
                    description
                      "BER at which link considered degraded(1..16)";
                  }
    
                  leaf clear {
                    type string {
                      junos:posix-pattern "^1e-(1[0-6]?|[2-9])$";
                      junos:pattern-message "Ber threshold value in format: 1e-n, n = 1..16";
                    }
                    default "1e-12";
                    description
                      "BER at which link considered improved(1..16)";
                  }
    
                  leaf warning-set {
                    type string {
                      junos:posix-pattern "^1e-(1[0-6]?|[2-9])$";
                      junos:pattern-message "Ber threshold value in format: 1e-n, n = 1..16";
                    }
                    default "1e-9";
                    description
                      "BER at which link degrade warning raised(1..16)";
                  }
    
                  leaf warning-clear {
                    type string {
                      junos:posix-pattern "^1e-(1[0-6]?|[2-9])$";
                      junos:pattern-message "Ber threshold value in format: 1e-n, n = 1..16";
                    }
                    default "1e-11";
                    description
                      "BER at which link degrade warning cleared(1..16)";
                  }
    
                  leaf interval {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 256";
                      }
                    }
                    default "10";
                    description
                      "Consecutive link degrade events";
                  }
                }  // container thresholds
              }  // container link-degrade-monitor
    
              container satop-options {
                junos:must "((!(".. t1-options framing") && !(".. e1-options framing")))";
                junos:must-message "SAToP & Framing cannot be configured on same interface";
                junos:must "(!(".. ima-link-options"))";
                junos:must-message "SAToP & IMA cannot be configured on same interface";
                junos:must "((!("interfaces ${interface} container-options") || ("interfaces ${interface} container-options container-type" || "interfaces ${interface} container-options allow-configuration-override")))";
                junos:must-message "satop-options cannot be configured without allow-configuration-override";
                description
                  "Structure-Agnostic TDM over Packet protocol options";
                uses apply-advanced;
    
                leaf idle-pattern {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 255";
                    }
                  }
                  description
                    "An 8-bit hexadecimal pattern to replace TDM data in a lost packet";
                }
    
                leaf payload-size {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "64 .. 1024";
                    }
                  }
                  description
                    "Number of payload bytes per packet";
                }
    
                container excessive-packet-loss-rate {
                  description
                    "Packet loss options";
                  uses apply-advanced;
    
                  leaf threshold {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint8 {
                        range "1 .. 100";
                      }
                    }
                    description
                      "Percentile designating the threshold of excessive packet loss rate";
                  }
    
                  leaf sample-period {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1000 .. 65535";
                      }
                    }
                    description
                      "Number of milliseconds over which excessive packet loss rate is calculated";
                  }
                }  // container excessive-packet-loss-rate
    
                choice jitter-buffer-size {
                  leaf jitter-buffer-packets {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 64";
                      }
                    }
                    description
                      "Number of packets in jitter buffer before packet data is played out in the line";
                  }
                  leaf jitter-buffer-latency {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 1000";
                      }
                    }
                    units "milliseconds";
                    description
                      "Number of milliseconds delay in jitter buffer before packet data is played out in the line";
                  }
                  leaf jitter-buffer-auto-adjust {
                    type empty;
                    description
                      "Automatically adjust jitter buffer";
                  }
                }  // choice jitter-buffer-size
    
                leaf bit-rate {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 10240";
                    }
                  }
                  description
                    "In multiples of DS0";
                }
              }  // container satop-options
    
              container cesopsn-options {
                junos:must "((!("interfaces ${interface} container-options") || ("interfaces ${interface} container-options container-type" || "interfaces ${interface} container-options allow-configuration-override")))";
                junos:must-message "cesopsn-options cannot be configured without allow-configuration-override";
                description
                  "Structure-Aware TDM over Packet protocol options";
                uses apply-advanced;
    
                leaf idle-pattern {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 255";
                    }
                  }
                  description
                    "An 8-bit hexadecimal pattern to replace TDM data in a lost packet";
                }
    
                leaf packetization-latency {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1000 .. 8000";
                    }
                  }
                  units "microseconds";
                  description
                    "Number of microseconds to create packets";
                }
    
                leaf payload-size {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "64 .. 1024";
                    }
                  }
                  description
                    "Number of payload bytes per packet";
                }
    
                container excessive-packet-loss-rate {
                  description
                    "Packet loss options";
                  uses apply-advanced;
    
                  leaf threshold {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint8 {
                        range "1 .. 100";
                      }
                    }
                    description
                      "Percentile designating the threshold of excessive packet loss rate";
                  }
    
                  leaf sample-period {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1000 .. 65535";
                      }
                    }
                    description
                      "Number of milliseconds over which excessive packet loss rate is calculated";
                  }
                }  // container excessive-packet-loss-rate
    
                choice jitter-buffer-size {
                  leaf jitter-buffer-packets {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 64";
                      }
                    }
                    description
                      "Number of packets in jitter buffer before packet data is played out in the line";
                  }
                  leaf jitter-buffer-latency {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 1000";
                      }
                    }
                    units "milliseconds";
                    description
                      "Number of milliseconds delay in jitter buffer before packet data is played out in the line";
                  }
                  leaf jitter-buffer-auto-adjust {
                    type empty;
                    description
                      "Automatically adjust jitter buffer";
                  }
                }  // choice jitter-buffer-size
    
                leaf bit-rate {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 10240";
                    }
                  }
                  description
                    "In multiples of DS0";
                }
              }  // container cesopsn-options
    
              container clocking {
                description
                  "Interface clock source";
                choice clocking_choices {
                  leaf internal {
                    type empty;
                    description
                      "Clocking provided by local system";
                  }
                  container external {
                    presence "enable external";
                    description
                      "Clocking provided by DCE (loop timing)";
                  }  // container external
                }  // choice clocking_choices
              }  // container clocking
    
              leaf link-mode {
                type enumeration {
                  enum "automatic" {
                    value 0;
                    description
                      "Automatically negotiate duplex";
                  }
                  enum "half-duplex" {
                    value 1;
                    description
                      "Half-duplex operation";
                  }
                  enum "full-duplex" {
                    value 2;
                    description
                      "Full-duplex operation";
                  }
                }
                description
                  "Link operational mode";
              }
    
              leaf media-type {
                type enumeration {
                  enum "copper" {
                    value 0;
                    description
                      "Copper as media";
                  }
                  enum "fiber" {
                    value 1;
                    description "Fiber as media";
                  }
                }
                description
                  "Interface media type (copper or fiber)";
              }
    
              leaf encapsulation {
                junos:must "(!("interfaces ${interface} container-options container-list"))";
                junos:must-message "encapsulation is not supported for container child interfaces";
                type enumeration {
                  enum "ethernet" {
                    value 0;
                    description
                      "Ethernet physical media";
                  }
                  enum "fddi" {
                    value 1;
                    description
                      "FDDI physical media";
                  }
                  enum "token-ring" {
                    value 2;
                    description
                      "Token Ring physical media";
                  }
                  enum "ppp" {
                    value 3;
                    description
                      "Serial PPP device";
                  }
                  enum "ppp-ccc" {
                    value 4;
                    description
                      "Serial PPP device for a cross-connect";
                  }
                  enum "ppp-tcc" {
                    value 5;
                    description
                      "Serial PPP device for a translational cross-connect";
                  }
                  enum "ether-vpls-ppp" {
                    value 6;
                    description
                      "Ethernet VPLS over PPP (bridging) device";
                  }
                  enum "frame-relay" {
                    value 7;
                    description
                      "Frame Relay encapsulation";
                  }
                  enum "frame-relay-ccc" {
                    value 8;
                    description
                      "Frame Relay for cross-connect";
                  }
                  enum "frame-relay-tcc" {
                    value 9;
                    description
                      "Frame Relay for translational cross-connect";
                  }
                  enum
                    "extended-frame-relay-ccc" {
                    value 10;
                    description
                      "Any Frame Relay DLCI for cross-connect";
                  }
                  enum
                    "extended-frame-relay-tcc" {
                    value 11;
                    description
                      "Any Frame Relay DLCI for translational cross-connect";
                  }
                  enum "flexible-frame-relay" {
                    value 12;
                    description
                      "Multiple Frame Relay encapsulations";
                  }
                  enum "frame-relay-port-ccc" {
                    value 13;
                    description
                      "Frame Relay port encapsulation for a cross-connect";
                  }
                  enum "frame-relay-ether-type" {
                    value 14;
                    description
                      "Cisco-compatible Frame Relay encapsulation";
                  }
                  enum
                    "frame-relay-ether-type-tcc" {
                    value 15;
                    description
                      "Cisco-compatible Frame Relay encapsulation for translational cross-connect";
                  }
                  enum
                    "extended-frame-relay-ether-type-tcc" {
                    value 16;
                    description
                      "Cisco-compatible Frame Relay encapsulation any DLCI for translational cross-connect";
                  }
                  enum "cisco-hdlc" {
                    value 17;
                    description
                      "Cisco-compatible HDLC framing";
                  }
                  enum "cisco-hdlc-ccc" {
                    value 18;
                    description
                      "Cisco-compatible HDLC framing for a cross-connect";
                  }
                  enum "cisco-hdlc-tcc" {
                    value 19;
                    description
                      "Cisco-compatible HDLC framing for a translational cross-connect";
                  }
                  enum "vlan-ccc" {
                    value 20;
                    description
                      "802.1q tagging for a cross-connect";
                  }
                  enum "extended-vlan-ccc" {
                    value 21;
                    description
                      "Nonstandard TPID tagging for a cross-connect";
                  }
                  enum "ethernet-ccc" {
                    value 22;
                    description
                      "Ethernet cross-connect";
                  }
                  enum
                    "flexible-ethernet-services" {
                    value 23;
                    description
                      "Allows per-unit Ethernet encapsulation configuration";
                  }
                  enum "smds-dxi" {
                    value 24;
                    description
                      "SMDS DXI framing";
                  }
                  enum "atm-pvc" {
                    value 25;
                    description
                      "ATM permanent virtual circuits";
                  }
                  enum "atm-ccc-cell-relay" {
                    value 26;
                    description
                      "ATM cell relay encapsulation for cross-connect";
                  }
                  enum "ethernet-over-atm" {
                    value 27;
                    description
                      "Ethernet over ATM encapsulation";
                  }
                  enum "ethernet-tcc" {
                    value 28;
                    description
                      "Ethernet translational cross-connect";
                  }
                  enum "extended-vlan-tcc" {
                    value 29;
                    description
                      "802.1q tagging for a translational cross-connect";
                  }
                  enum
                    "multilink-frame-relay-uni-nni" {
                    value 30;
                    description
                      "Multilink Frame Relay UNI NNI (FRF.16) encapsulation";
                  }
                  enum "satop" {
                    junos:must "((!(".. t1-options framing") && !(".. e1-options framing")))";
                    junos:must-message "SAToP & Framing cannot be configured on same interface";
                    junos:must "(!(".. ima-link-options"))";
                    junos:must-message "SAToP & IMA cannot be configured on same interface";
                    value 31;
                    description
                      "Structure-Agnostic TDM over Packet encapsulation";
                  }
                  enum "cesopsn" {
                    value 32;
                    description
                      "Structure-Agnostic TDM over Packet encapsulation";
                  }
                  enum "ima" {
                    junos:must "(!(".. satop-options"))";
                    junos:must-message "SAToP & IMA cannot be configured on same interface";
                    value 33;
                    description
                      "Inverse Multiplexing for ATM";
                  }
                  enum "ethernet-vpls" {
                    value 34;
                    description
                      "Ethernet virtual private LAN service";
                  }
                  enum "ethernet-bridge" {
                    value 35;
                    description
                      "Ethernet layer-2 bridging";
                  }
                  enum "vlan-vpls" {
                    value 36;
                    description
                      "VLAN virtual private LAN service";
                  }
                  enum "vlan-vci-ccc" {
                    junos:must "("interfaces ${interface} vlan-vci-tagging")";
                    junos:must-message "valid only with vlan-vci-tagging mode";
                    value 37;
                    description
                      "CCC for VLAN Q-in-Q and ATM VPI/VCI interworking";
                  }
                  enum "extended-vlan-vpls" {
                    value 38;
                    description
                      "Extended VLAN virtual private LAN service";
                  }
                  enum "extended-vlan-bridge" {
                    value 39;
                    description
                      "VLAN layer-2 bridging";
                  }
                  enum "multilink-ppp" {
                    value 40;
                    description "Multilink PPP";
                  }
                  enum "generic-services" {
                    value 41;
                    description
                      "Generic services";
                  }
                }
                description
                  "Physical link-layer encapsulation";
              }
    
              container framing {
                description "Frame type";
                uses apply-advanced;
    
                choice frame {
                  leaf lan-phy {
                    type empty;
                    description
                      "802.3ae 10-Gbps LAN-mode interface";
                  }
                  leaf wan-phy {
                    type empty;
                    description
                      "802.3ae 10-Gbps WAN-mode interface";
                  }
                  leaf sonet {
                    type empty;
                    description "SONET framing";
                  }
                  leaf sdh {
                    type empty;
                    description "SDH framing";
                  }
                }  // choice frame
              }  // container framing
    
              container lmi {
                description
                  "Local Management Interface settings";
                uses apply-advanced;
    
                leaf n391dte {
                  junos:must "(!((".. .. dce" || ".. .. loose-ncp")))";
                  junos:must-message "LMI DTE options not valid for DCE interface";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 255";
                    }
                  }
                  description
                    "DTE full status polling interval";
                }
    
                leaf n392dce {
                  junos:must "((".. .. dce" || ".. .. loose-ncp"))";
                  junos:must-message "LMI DCE options not valid for DTE interface";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 10";
                    }
                  }
                  description
                    "DCE error threshold";
                }
    
                leaf n392dte {
                  junos:must "(!((".. .. dce" || ".. .. loose-ncp")))";
                  junos:must-message "LMI DTE options not valid for DCE interface";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 10";
                    }
                  }
                  description
                    "DTE error threshold";
                }
    
                leaf n393dce {
                  junos:must "((".. .. dce" || ".. .. loose-ncp"))";
                  junos:must-message "LMI DCE options not valid for DTE interface.";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 10";
                    }
                  }
                  description
                    "DCE monitored event count";
                }
    
                leaf n393dte {
                  junos:must "(!((".. .. dce" || ".. .. loose-ncp")))";
                  junos:must-message "LMI DTE options not valid for DCE interface";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 10";
                    }
                  }
                  description
                    "DTE monitored event count";
                }
    
                leaf t391dte {
                  junos:must "(!((".. .. dce" || ".. .. loose-ncp")))";
                  junos:must-message "LMI DTE options not valid for DCE interface";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "5 .. 30";
                    }
                  }
                  units "seconds";
                  description
                    "DTE polling timer";
                }
    
                leaf t392dce {
                  junos:must "((".. .. dce" || ".. .. loose-ncp"))";
                  junos:must-message "LMI DCE options not valid for DTE interface.";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "5 .. 30";
                    }
                  }
                  units "seconds";
                  description
                    "DCE polling verification timer";
                }
    
                leaf lmi-type {
                  type enumeration {
                    enum "ansi" {
                      value 0;
                      description
                        "Use ANSI Annex D LMI";
                    }
                    enum "itu" {
                      value 1;
                      description
                        "Use ITU Q933a Annex A LMI";
                    }
                    enum "c-lmi" {
                      value 2;
                      description
                        "Use Consortium LMI";
                    }
                  }
                  description
                    "Specify the Frame Relay LMI type";
                }
              }  // container lmi
    
              container mlfr-uni-nni-bundle-options {
                description
                  "Multilink Frame Relay UNI NNI (FRF.16) management settings";
                uses apply-advanced;
    
                container cisco-interoperability {
                  description
                    "FRF.16 Cisco interoperability settings";
                  uses apply-advanced;
    
                  leaf send-lip-remove-link-for-link-reject {
                    type empty;
                    description
                      "Send Link Integrity Protocol remove link on receiving add-link rejection";
                  }
                }  // container cisco-interoperability
    
                leaf mrru {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1500 .. 4500";
                    }
                  }
                  units "bytes";
                  description
                    "Maximum received reconstructed unit";
                }
    
                leaf yellow-differential-delay {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "3 .. 2000";
                    }
                  }
                  units "milliseconds";
                  description
                    "Yellow differential delay among bundle links to give warning";
                }
    
                leaf red-differential-delay {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "5 .. 2000";
                    }
                  }
                  units "milliseconds";
                  description
                    "Red differential delay among bundle links to take action";
                }
    
                leaf action-red-differential-delay {
                  type enumeration {
                    enum "remove-link" {
                      value 0;
                      description
                        "Remove bundle link from service when exceeding red limit";
                    }
                    enum "disable-tx" {
                      value 1;
                      description
                        "Disable transfer of bundle link when exceeding red limit";
                    }
                  }
                  description
                    "Type of actions when differential delay exceeds red limit";
                }
    
                leaf fragment-threshold {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "64 .. 16320";
                    }
                  }
                  units "bytes";
                  description
                    "Fragmentation threshold";
                }
    
                leaf drop-timeout {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "0 .. 2000";
                    }
                  }
                  units "milliseconds";
                  description "Drop timeout";
                }
    
                leaf link-layer-overhead {
                  type jt:unsigned-float;
                  description
                    "Link layer bit stuffing overhead (0.0 .. 50.0 percent)";
                }
    
                leaf lmi-type {
                  type enumeration {
                    enum "ansi" {
                      value 0;
                      description
                        "Use ANSI Annex D LMI";
                    }
                    enum "itu" {
                      value 1;
                      description
                        "Use ITU Q933a Annex A LMI";
                    }
                    enum "c-lmi" {
                      value 2;
                      description
                        "Use Consortium LMI";
                    }
                  }
                  description
                    "Specify the multilink Frame Relay UNI NNI LMI type";
                }
    
                leaf minimum-links {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 8";
                    }
                  }
                  description
                    "Minimum number of links to sustain the bundle";
                }
    
                leaf hello-timer {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "5 .. 180";
                    }
                  }
                  description "LIP hello timer";
                }
    
                leaf acknowledge-timer {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 10";
                    }
                  }
                  description "LIP ack timer";
                }
    
                leaf acknowledge-retries {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 5";
                    }
                  }
                  description
                    "LIP ack retry times";
                }
    
                leaf n391 {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 255";
                    }
                  }
                  description
                    "Multilink Frame Relay UNI NNI full status polling counter";
                }
    
                leaf n392 {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 10";
                    }
                  }
                  description
                    "Multilink Frame Relay UNI NNI LMI error threshold";
                }
    
                leaf n393 {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 10";
                    }
                  }
                  description
                    "Multilink Frame Relay UNI NNI LMI monitored event count";
                }
    
                leaf t391 {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "5 .. 30";
                    }
                  }
                  description
                    "Multilink Frame Relay UNI NNI link integrity verify polling timer";
                }
    
                leaf t392 {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "5 .. 30";
                    }
                  }
                  description
                    "Multilink Frame Relay UNI NNI polling verification timer";
                }
              }  // container mlfr-uni-nni-bundle-options
    
              leaf mac {
                type jt:mac-unicast;
                description
                  "Hardware MAC address";
              }
    
              container receive-bucket {
                description
                  "Set receive bucket parameters";
                uses dcd_rx_bucket_config;
              }  // container receive-bucket
    
              container transmit-bucket {
                description
                  "Set transmit bucket parameters";
                uses dcd_tx_bucket_config;
              }  // container transmit-bucket
    
              leaf shared-interface {
                type empty;
                description
                  "Enable shared interface on the interface";
              }
    
              container sonet-options {
                junos:must "((!("interfaces ${interface} container-options") || ("interfaces ${interface} container-options container-type" || "interfaces ${interface} container-options allow-configuration-override")))";
                junos:must-message "sonet-options cannot be configured without allow-configuration-override";
                description
                  "SONET interface-specific options";
                uses sonet_options_type;
              }  // container sonet-options
    
              container logical-tunnel-options {
                description
                  "Logical Tunnel interface-specific options";
                uses apply-advanced;
    
                container link-protection {
                  presence
                    "enable link-protection";
                  description
                    "Enable link protection mode";
                  uses apply-advanced;
    
                  leaf revertive {
                    junos:must "(!("interfaces ${interface} logical-tunnel-options link-protection non-revertive"))";
                    junos:must-message "link-protection revertive and non-revertive are mutually exclusive";
                    junos:must "(any "interfaces ${interface} redundancy-group member-interface <*> active")";
                    junos:must-message "link-protection mode can be configured only when link-protection is enabled";
                    type empty;
                    description
                      "Revert back (Default mode) from active backup link to primary, if primary is UP";
                  }
    
                  leaf non-revertive {
                    junos:must "(!("interfaces ${interface} logical-tunnel-options link-protection revertive"))";
                    junos:must-message "link-protection revertive and non-revertive are mutually exclusive";
                    junos:must "(any "interfaces ${interface} redundancy-group member-interface <*> active")";
                    junos:must-message "link-protection mode can be configured only when link-protection is enabled";
                    type empty;
                    description
                      "Do not revert back from active backup link to primary, if primary is UP";
                  }
                }  // container link-protection
    
                leaf per-unit-mac-disable {
                  type empty;
                  description
                    "Disable the creation of per unit mac address on LT IFLs for VPLS/CCC encaps";
                }
              }  // container logical-tunnel-options
    
              container aggregated-sonet-options {
                description
                  "Aggregated SONET interface-specific options";
                uses apply-advanced;
    
                leaf minimum-links {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16;
                  }
                  description
                    "Minimum number of aggregated links";
                }
    
                leaf link-speed {
                  type enumeration {
                    enum "oc3" {
                      value 0;
                      description
                        "Links are OC-3c or STM-1c";
                    }
                    enum "oc12" {
                      value 1;
                      description
                        "Links are OC-12c or STM-4c";
                    }
                    enum "oc48" {
                      value 2;
                      description
                        "Links are OC-48c or STM-16c";
                    }
                    enum "oc192" {
                      value 3;
                      description
                        "Links are OC-192c or STM-64c";
                    }
                    enum "oc768" {
                      value 4;
                      description
                        "Links are OC-768c or STM-256c";
                    }
                    enum "mixed" {
                      value 5;
                      description
                        "Links are various speeds";
                    }
                  }
                  description
                    "Aggregated links speed";
                }
    
                leaf minimum-bandwidth {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint64 {
                      range "0 .. 159232000000";
                    }
                  }
                  units "bps";
                  description
                    "Minimum bandwidth necessary to sustain bundle";
                }
              }  // container aggregated-sonet-options
    
              container atm-options {
                junos:must "((!("interfaces ${interface} container-options") || ("interfaces ${interface} container-options container-type" || !("interfaces ${interface} container-options container-list"))))";
                junos:must-message "atm-options cannot be configured on container children";
                description
                  "ATM interface-specific options";
                uses apply-advanced;
    
                leaf pic-type {
                  type enumeration {
                    enum "atm-ce" {
                      value 0;
                      description "CE PIC";
                    }
                    enum "atm2" {
                      value 1;
                      description
                        "ATM II IQ PIC";
                    }
                    enum "atm1" {
                      junos:must "(!("interfaces ${interface} container-options"))";
                      junos:must-message "Only ATM-II pics are supported as container member link";
                      value 2;
                      description "ATM I PIC";
                    }
                  }
                  description
                    "Type of ATM PIC (ATM I, ATM II or ATM CE)";
                }
    
                leaf cell-bundle-size {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 176";
                    }
                  }
                  units "cells";
                  description
                    "L2 circuit cell bundle size";
                }
    
                leaf cell-bundle-timeout {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 512";
                    }
                  }
                  units "microseconds";
                  description
                    "L2 circuit cell bundle timeout";
                }
    
                leaf plp-to-clp {
                  type empty;
                  description
                    "Enable ATM2 PLP to CLP copy";
                }
    
                leaf use-null-cw {
                  type empty;
                  description
                    "Always insert/strip null control words with cell-relay";
                }
    
                container promiscuous-mode {
                  presence
                    "enable promiscuous-mode";
                  description
                    "Set ATM interface to promiscuous mode";
                  uses apply-advanced;
    
                  list vpi {
                    key "name";
                    ordered-by user;
                    description
                      "Open this VPI in promiscuous mode";
                    leaf name {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "0 .. 255";
                        }
                      }
                      description
                        "Virtual path index";
                    }
                  }  // list vpi
                }  // container promiscuous-mode
    
                list vpi {
                  key "name";
                  ordered-by user;
                  description
                    "Define a virtual path";
                  leaf name {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 255";
                      }
                    }
                    description
                      "Virtual path index";
                  }
    
                  uses apply-advanced;
    
                  leaf maximum-vcs {
                    junos:must "(!("interfaces ${interface} container-options"))";
                    junos:must-message "Only ATM-II pics are supported as container member link";
                    type union {
                      type uint32;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description
                      "Maximum number of virtual circuits on this VP";
                  }
    
                  container shaping {
                    description
                      "Virtual path traffic-shaping options";
                    uses dcd_shaping_config;
                  }  // container shaping
    
                  container oam-period {
                    description
                      "F4 OAM cell period";
                    choice oam_period_choices {
                      leaf oam-period {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 900";
                          }
                        }
                        units "seconds";
                        description
                          "F4 OAM cell period";
                      }
                      container disable {
                        presence
                          "enable disable";
                        description
                          "Disable F4 OAM loopback";
                      }  // container disable
                    }  // choice oam_period_choices
                  }  // container oam-period
    
                  container oam-liveness {
                    description
                      "F4 OAM virtual path liveness parameters";
                    uses apply-advanced;
    
                    leaf up-count {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 255";
                        }
                      }
                      description
                        "Number of F4 OAM cells to consider VP up";
                    }
    
                    leaf down-count {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 255";
                        }
                      }
                      description
                        "Number of F4 OAM cells to consider VP down";
                    }
                  }  // container oam-liveness
                }  // list vpi
    
                container ilmi {
                  presence "enable ilmi";
                  description
                    "Enable Interim Local Management Interface";
                  uses apply-advanced;
                }  // container ilmi
    
                list linear-red-profiles {
                  key "name";
                  ordered-by user;
                  description
                    "ATM2 CoS virtual circuit drop profiles";
                  leaf name {
                    type string {
                      junos:posix-pattern "^.{1,64}$";
                      junos:pattern-message "Must be string of 64 characters or less";
                    }
                    description
                      "Linear RED profile name";
                  }
    
                  leaf queue-depth {
                    type string;
                    units "cells";
                    description
                      "Maximum queue depth";
                  }
    
                  leaf high-plp-threshold {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 100";
                      }
                    }
                    description
                      "Fill level percentage when linear RED is applied for high PLP";
                  }
    
                  leaf low-plp-threshold {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 100";
                      }
                    }
                    description
                      "Fill level percentage when linear RED is applied for low PLP";
                  }
    
                  leaf high-plp-max-threshold {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 100";
                      }
                    }
                    description
                      "Fill level percentage with 100 percent packet drop for high PLP";
                  }
    
                  leaf low-plp-max-threshold {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 100";
                      }
                    }
                    description
                      "Fill level percentage with 100 percent packet drop for low PLP";
                  }
                }  // list linear-red-profiles
    
                list scheduler-maps {
                  key "name";
                  ordered-by user;
                  description
                    "ATM2 CoS parameters assigned to forwarding classes";
                  leaf name {
                    type string {
                      junos:posix-pattern "^((default)|(.{1,64}))$";
                      junos:pattern-message "Must be a string of 64 characters or less and not 'default'";
                    }
                    description
                      "ATM2 CoS scheduler map name";
                  }
    
                  uses apply-advanced;
    
                  leaf vc-cos-mode {
                    type enumeration {
                      enum "strict" {
                        value 0;
                        description
                          "Always schedule high priority queue first";
                      }
                      enum "alternate" {
                        value 1;
                        description
                          "Every other packet from high priority queue (default)";
                      }
                    }
                    description
                      "ATM2 virtual circuit CoS mode";
                  }
    
                  list forwarding-class {
                    key "name";
                    ordered-by user;
                    description
                      "Scheduling parameters associated with forwarding class";
                    leaf name {
                      type string {
                        junos:posix-pattern "^.{1,64}$";
                        junos:pattern-message "Must be string of 64 characters or less";
                      }
                      description
                        "Forwarding class name";
                    }
    
                    uses apply-advanced;
    
                    leaf priority {
                      type enumeration {
                        enum "low" {
                          value 0;
                          description
                            "Low priority queuing";
                        }
                        enum "high" {
                          value 1;
                          description
                            "High priority queuing";
                        }
                      }
                      description
                        "Queuing priority assigned to forwarding class";
                    }
    
                    container transmit-weight {
                      description
                        "Transmit weight";
                      choice weight-method {
                        leaf percent {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "5 .. 100";
                            }
                          }
                          description
                            "Transmit weight as percentage";
                        }
                        leaf cells {
                          type string;
                          description
                            "Transmit weight by cells count";
                        }
                      }  // choice weight-method
                    }  // container transmit-weight
    
                    choice drop-profile-method {
                      container epd-threshold {
                        description
                          "Early packet discard threshold for ATM2";
                        uses epd_threshold_config;
                      }  // container epd-threshold
                      leaf linear-red-profile {
                        type string;
                        description
                          "Linear RED profile profile name";
                      }
                    }  // choice drop-profile-method
                  }  // list forwarding-class
                }  // list scheduler-maps
    
                container mpls {
                  description "MPLS options";
                  uses mpls_ifd_options;
                }  // container mpls
    
                choice payload-scrambler-choice {
                  leaf payload-scrambler {
                    type empty;
                    description
                      "Enable payload scrambling";
                  }
                  leaf no-payload-scrambler {
                    type empty;
                    description
                      "Don't enable payload scrambling";
                  }
                }  // choice payload-scrambler-choice
              }  // container atm-options
    
              container multiservice-options {
                description
                  "Multiservice interface-specific options";
                uses apply-advanced;
    
                choice syslog-choice {
                  leaf syslog {
                    type empty;
                    description
                      "Enable system logging on this interface";
                  }
                  leaf no-syslog {
                    type empty;
                    description
                      "Don't enable system logging on this interface";
                  }
                }  // choice syslog-choice
    
                choice core-dump-choice {
                  leaf core-dump {
                    type empty;
                    description
                      "Enable core dumping on this interface";
                  }
                  leaf no-core-dump {
                    type empty;
                    description
                      "Don't enable core dumping on this interface";
                  }
                }  // choice core-dump-choice
    
                choice dump-on-flow-control-choice {
                  leaf dump-on-flow-control {
                    type empty;
                    status deprecated;
                    description
                      "Enable dumping for this interface on prolonged flow-control";
                  }
                  leaf no-dump-on-flow-control {
                    type empty;
                    status deprecated;
                    description
                      "Don't enable dumping for this interface on prolonged flow-control";
                  }
                }  // choice dump-on-flow-control-choice
    
                choice reset-on-flow-control-choice {
                  leaf reset-on-flow-control {
                    type empty;
                    status deprecated;
                    description
                      "Enable resetting this interface on prolonged flow-control";
                  }
                  leaf no-reset-on-flow-control {
                    type empty;
                    status deprecated;
                    description
                      "Don't enable resetting this interface on prolonged flow-control";
                  }
                }  // choice reset-on-flow-control-choice
    
                container flow-control-options {
                  description
                    "Flow control configuration";
                  uses apply-advanced;
    
                  leaf dump-on-flow-control {
                    junos:must "(!(".. up-on-flow-control"))";
                    junos:must-message "Option not valid with up-on-flow-control";
                    junos:must "(!(".. down-on-flow-control"))";
                    junos:must-message "Option not valid with down-on-flow-control";
                    junos:must "(!(".. reset-on-flow-control"))";
                    junos:must-message "Option not valid with reset-on-flow-control";
                    type empty;
                    description
                      "Cause core dump during prolonged flow-control";
                  }
    
                  leaf reset-on-flow-control {
                    junos:must "(!(".. up-on-flow-control"))";
                    junos:must-message "Option not valid with up-on-flow-control";
                    junos:must "(!(".. down-on-flow-control"))";
                    junos:must-message "Option not valid with down-on-flow-control";
                    junos:must "(!(".. dump-on-flow-control"))";
                    junos:must-message "Option not valid with dump-on-flow-control";
                    type empty;
                    description
                      "Reset interface during prolonged flow-control";
                  }
    
                  leaf down-on-flow-control {
                    junos:must "(!(".. up-on-flow-control"))";
                    junos:must-message "Option not valid with up-on-flow-control";
                    junos:must "(!(".. reset-on-flow-control"))";
                    junos:must-message "Option not valid with reset-on-flow-control";
                    junos:must "(!(".. dump-on-flow-control"))";
                    junos:must-message "Option not valid with dump-on-flow-control";
                    type empty;
                    description
                      "Bring interface down during prolonged flow-control";
                  }
    
                  leaf up-on-flow-control {
                    junos:must "(!(".. down-on-flow-control"))";
                    junos:must-message "Option not valid with down-on-flow-control";
                    junos:must "(!(".. reset-on-flow-control"))";
                    junos:must-message "Option not valid with reset-on-flow-control";
                    junos:must "(!(".. dump-on-flow-control"))";
                    junos:must-message "Option not valid with dump-on-flow-control";
                    type empty;
                    description
                      "Keep interface up during prolonged flow-control";
                  }
                }  // container flow-control-options
              }  // container multiservice-options
    
              container ggsn-options {
                description
                  "GGSN interface-specific options";
                uses apply-advanced;
    
                choice syslog-choice {
                  leaf syslog {
                    type empty;
                    description
                      "Enable system logging on this interface";
                  }
                  leaf no-syslog {
                    type empty;
                    description
                      "Don't enable system logging on this interface";
                  }
                }  // choice syslog-choice
    
                choice core-dump-choice {
                  leaf core-dump {
                    type empty;
                    description
                      "Enable core dumping on this interface";
                  }
                  leaf no-core-dump {
                    type empty;
                    description
                      "Don't enable core dumping on this interface";
                  }
                }  // choice core-dump-choice
              }  // container ggsn-options
    
              container ppp-options {
                junos:must "((".. encapsulation ppp" || (".. encapsulation ether-vpls-ppp" || !(".. encapsulation"))))";
                junos:must-message "invalid encapsulation";
                description
                  "Point-to-Point Protocol (PPP) interface-specific options";
                uses ppp_options_type;
              }  // container ppp-options
    
              container lsq-failure-options {
                description
                  "Link services queuing failure options";
                uses apply-advanced;
    
                list trigger-link-failure {
                  key "name";
                  ordered-by user;
                  description
                    "Link on which to trigger failure";
                  leaf name {
                    type union {
                      type jt:interface-device;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description "Interface name";
                  }
    
                  uses apply-advanced;
                }  // list trigger-link-failure
    
                choice no-termination-request-choice {
                  leaf no-termination-request {
                    type empty;
                    description
                      "Do not send PPP termination requests";
                  }
                  leaf no-no-termination-request {
                    type empty;
                    description
                      "Don't do not send PPP termination requests";
                  }
                }  // choice no-termination-request-choice
              }  // container lsq-failure-options
    
              container services-options {
                description
                  "Services interface-specific options";
                uses apply-advanced;
    
                container syslog {
                  description
                    "Define system log parameters";
                  uses log-object;
                }  // container syslog
    
                container jflow-log {
                  description
                    "Define Jflow-log parameters.";
                  uses apply-advanced;
    
                  leaf message-rate-limit {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 2147483647";
                      }
                    }
                    units "messages per second";
                    description
                      "Maximum jflow-log NAT error events allowed per second from this interface";
                  }
                }  // container jflow-log
    
                container deterministic-nat-configuration-log-interval {
                  presence
                    "enable deterministic-nat-configuration-log-interval";
                  description
                    "Define Deterministic NAT parameters";
                  uses apply-advanced;
    
                  leaf interval {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1800 .. 86400";
                      }
                    }
                    units "seconds";
                    description
                      "Interval in which deterministic NAT logs are generated";
                  }
                }  // container deterministic-nat-configuration-log-interval
    
                leaf open-timeout {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "4 .. 300";
                    }
                  }
                  units "seconds";
                  description
                    "Timeout period for TCP session establishment";
                }
    
                leaf close-timeout {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "2 .. 300";
                    }
                  }
                  units "seconds";
                  description
                    "Timeout period for TCP session tear-down";
                }
    
                leaf inactivity-timeout {
                  type union {
                    type uint32;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  units "seconds";
                  description
                    "Inactivity timeout period for established sessions (4..86400)";
                }
    
                leaf inactivity-tcp-timeout {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "4 .. 86400";
                    }
                  }
                  units "seconds";
                  description
                    "Inactivity timeout period for TCP established sessions";
                }
    
                leaf inactivity-asymm-tcp-timeout {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "4 .. 86400";
                    }
                  }
                  units "seconds";
                  description
                    "Inactivity timeout period for asymmetric TCP established sessions";
                }
    
                leaf inactivity-non-tcp-timeout {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "4 .. 86400";
                    }
                  }
                  units "seconds";
                  description
                    "Inactivity timeout period for non-TCP established sessions";
                }
    
                leaf session-timeout {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "4 .. 86400";
                    }
                  }
                  units "seconds";
                  description
                    "Session timeout period for established sessions";
                }
    
                leaf disable-global-timeout-override {
                  type empty;
                  description
                    "Disallow overriding  global inactivity or session timeout";
                }
    
                leaf tcp-tickles {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint8 {
                      range "0 .. 30";
                    }
                  }
                  default "4";
                  description
                    "Number of TCP keep-alive packets to be sent for bi-directional TCP flows";
                }
    
                leaf fragment-limit {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint8 {
                      range "1 .. 250";
                    }
                  }
                  default "250";
                  description
                    "Maximum number of fragments allowed for a packet";
                }
    
                leaf reassembly-timeout {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint8 {
                      range "1 .. 60";
                    }
                  }
                  units "seconds";
                  default "4";
                  description
                    "Re-assembly timeout (seconds) for fragments of a packet";
                }
    
                leaf cgn-pic {
                  type empty;
                  description
                    "PIC will be used for Carrier Grade NAT configuration only";
                }
    
                leaf pba-interim-logging-interval {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 86400";
                    }
                  }
                  units "seconds";
                  default "0";
                  description
                    "Interim logging interval in seconds";
                }
    
                container session-limit {
                  presence
                    "enable session-limit";
                  description "Session limit";
                  uses apply-advanced;
    
                  leaf maximum {
                    type string;
                    description
                      "Maximum number of sessions allowed simultaneously";
                  }
    
                  leaf rate {
                    type string;
                    description
                      "Maximum number of new sessions allowed per second";
                  }
    
                  leaf cpu-load-threshold {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint8 {
                        range "1 .. 100";
                      }
                    }
                    units "percent";
                    description
                      "CPU limit in percentage for auto-tuning of session rate";
                  }
                }  // container session-limit
    
                leaf enable-subscriber-analysis {
                  junos:must "(!(".. disable-subscriber-analysis"))";
                  junos:must-message "can not set with enable-subscriber-analysis";
                  type empty;
                  description
                    "Enable subscriber analysis on the interface";
                }
    
                leaf disable-subscriber-analysis {
                  junos:must "(!(".. enable-subscriber-analysis"))";
                  junos:must-message "can not set with disable-subscriber-analysis";
                  type empty;
                  description
                    "Disable subscriber analysis on the interface";
                }
    
                leaf disable-usp-tracing {
                  type empty;
                  description
                    "Disable usp tracing on this pic";
                }
    
                leaf disable-drop-flows {
                  type empty;
                  description
                    "Disable drop flows on this pic";
                }
    
                container ignore-errors {
                  presence
                    "enable ignore-errors";
                  description
                    "Ignore anomalies or errors";
                  leaf tcp {
                    type empty;
                    description
                      "TCP protocol errors";
                  }
    
                  leaf alg {
                    type empty;
                    description
                      "ALG anomalies or errors";
                  }
                }  // container ignore-errors
    
                container capture {
                  description
                    "Packet capture for SFW and NAT on the Services PIC";
                  uses apply-advanced;
    
                  leaf capture-size {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 344000";
                      }
                    }
                    description
                      "The number of packets to store";
                  }
    
                  leaf pkt-size {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint16 {
                        range "64 .. 15000";
                      }
                    }
                    description
                      "Number of bytes to be saved from each packet";
                  }
    
                  leaf logs-per-packet {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint16 {
                        range "0 .. 500";
                      }
                    }
                    description
                      "The number of trace messages stored for each packet";
                  }
    
                  leaf max-log-line-size {
                    type union {
                      type uint8;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description
                      "The maximum length of a stored trace message";
                  }
    
                  container filter {
                    presence "enable filter";
                    description
                      "Filtering options for the packet capture";
                    uses apply-advanced;
    
                    container source-ip {
                      description
                        "Filter based on source-ip (and wildcard)";
                      leaf ip {
                        type jt:ipaddr;
                        description "Source IP";
                      }
    
                      leaf wildcard {
                        type jt:ipaddr;
                        description
                          "Source IP wildcard";
                      }
                    }  // container source-ip
    
                    container dest-ip {
                      description
                        "Filter based on dest-ip (and wildcard)";
                      leaf ip {
                        type jt:ipaddr;
                        description "Dest IP";
                      }
    
                      leaf wildcard {
                        type jt:ipaddr;
                        description
                          "Dest IP wildcard";
                      }
                    }  // container dest-ip
    
                    container sw-sip {
                      description
                        "Filter based on source softwire ip (and wildcard)";
                      leaf ip {
                        type jt:ipv6addr;
                        description
                          "Source softwire IP";
                      }
    
                      leaf wildcard {
                        type jt:ipv6addr;
                        description
                          "Source IP wildcard";
                      }
                    }  // container sw-sip
    
                    container sw-dip {
                      description
                        "Filter based on destination softwire ip (and wildcard)";
                      leaf ip {
                        type jt:ipaddr;
                        description
                          "Destination softwire IP";
                      }
    
                      leaf wildcard {
                        type jt:ipaddr;
                        description
                          "Destination IP wildcard";
                      }
                    }  // container sw-dip
    
                    container sport-range {
                      description
                        "Filter based on source port";
                      leaf low {
                        type union {
                          type uint16;
                          type string {
                            pattern "<.*>|$.*";
                          }
                        }
                        description
                          "Source port range start";
                      }
    
                      leaf high {
                        type union {
                          type uint16;
                          type string {
                            pattern "<.*>|$.*";
                          }
                        }
                        description
                          "Source port range end";
                      }
                    }  // container sport-range
    
                    container dport-range {
                      description
                        "Filter based on destination port";
                      leaf low {
                        type union {
                          type uint16;
                          type string {
                            pattern "<.*>|$.*";
                          }
                        }
                        description
                          "Destination port range start";
                      }
    
                      leaf high {
                        type union {
                          type uint16;
                          type string {
                            pattern "<.*>|$.*";
                          }
                        }
                        description
                          "Destination port range end";
                      }
                    }  // container dport-range
    
                    leaf proto {
                      type enumeration {
                        enum "icmp" {
                          value 0;
                        }
                        enum "tcp" {
                          value 1;
                        }
                        enum "udp" {
                          value 2;
                        }
                      }
                      description
                        "Filter based on L4 protocol";
                    }
                  }  // container filter
                }  // container capture
    
                container flow {
                  description
                    "Define flow parameters";
                  uses apply-advanced;
    
                  container traceoptions {
                    description
                      "Trace options for flow services";
                  }  // container traceoptions
                }  // container flow
    
                leaf fpc-pic-information {
                  type empty;
                  description
                    "Include FPC and PIC slot number in the syslogs";
                }
    
                leaf utc-timestamp {
                  type empty;
                  description
                    "Use UTC time for security log timestamps";
                }
    
                leaf syslog-local-system-timestamp {
                  type empty;
                  description
                    "Use local system time for services syslog timestamp";
                }
              }  // container services-options
    
              container t3-options {
                junos:must "((!("interfaces ${interface} container-options") || ("interfaces ${interface} container-options container-type" || "interfaces ${interface} container-options allow-configuration-override")))";
                junos:must-message "t1-options cannot be configured without allow-configuration-override";
                description
                  "T3 interface-specific options";
                uses apply-advanced;
    
                leaf loopback {
                  type enumeration {
                    enum "local" {
                      value 0;
                      description
                        "Local loopback";
                    }
                    enum "remote" {
                      value 1;
                      description
                        "Remote loopback";
                    }
                    enum "payload" {
                      value 2;
                      description
                        "Payload loopback";
                    }
                  }
                  description "Loopback mode";
                }
    
                choice long-buildout-choice {
                  leaf long-buildout {
                    type empty;
                    description
                      "Set hardware to drive line longer than 255 feet";
                  }
                  leaf no-long-buildout {
                    type empty;
                    description
                      "Don't set hardware to drive line longer than 255 feet";
                  }
                }  // choice long-buildout-choice
    
                choice loop-timing-choice {
                  leaf loop-timing {
                    type empty;
                    description
                      "Set loop timing for T3";
                  }
                  leaf no-loop-timing {
                    type empty;
                    description
                      "Don't set loop timing for T3";
                  }
                }  // choice loop-timing-choice
    
                container compatibility-mode {
                  description
                    "Set CSU compatibility mode";
                  choice vendor {
                    container larscom {
                      junos:must "(!(".. .. unframed"))";
                      junos:must-message "unframed and larscom cannot coexist";
                      presence "enable larscom";
                      description
                        "Compatible with Larscom CSU";
                      leaf subrate {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 14";
                          }
                        }
                        description
                          "Set subrate value";
                      }
                    }  // container larscom
                    container verilink {
                      junos:must "(!(".. .. unframed"))";
                      junos:must-message "unframed and verilink cannot coexist";
                      presence "enable verilink";
                      description
                        "Compatible with Verilink CSU (not on 2/4-port T3 PIC)";
                      leaf subrate {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 28";
                          }
                        }
                        description
                          "Set subrate value";
                      }
                    }  // container verilink
                    container adtran {
                      junos:must "(!(".. .. unframed"))";
                      junos:must-message "unframed and adtran cannot coexist";
                      presence "enable adtran";
                      description
                        "Compatible with Adtran CSU (not on 2/4-port T3 PIC)";
                      leaf subrate {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 588";
                          }
                        }
                        description
                          "Set subrate value";
                      }
                    }  // container adtran
                    container kentrox {
                      presence "enable kentrox";
                      description
                        "Compatible with Kentrox CSU";
                      leaf subrate {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 69";
                          }
                        }
                        description
                          "Set subrate value (not on 2/4-port T3 PIC)";
                      }
                    }  // container kentrox
                    container digital-link {
                      junos:must "(!(".. .. unframed"))";
                      junos:must-message "unframed and digital-link cannot coexist";
                      presence
                        "enable digital-link";
                      description
                        "Compatible with Digital Link CSU";
                      leaf subrate {
                        type enumeration {
                          enum "301Kb" {
                            value 0;
                            description
                              "301 Kbps";
                          }
                          enum "601Kb" {
                            value 1;
                            description
                              "601 Kbps";
                          }
                          enum "902Kb" {
                            value 2;
                            description
                              "902 Kbps";
                          }
                          enum "1.2Mb" {
                            value 3;
                            description
                              "1.2 Mbps";
                          }
                          enum "1.5Mb" {
                            value 4;
                            description
                              "1.5 Mbps";
                          }
                          enum "1.8Mb" {
                            value 5;
                            description
                              "1.8 Mbps";
                          }
                          enum "2.1Mb" {
                            value 6;
                            description
                              "2.1 Mbps";
                          }
                          enum "2.4Mb" {
                            value 7;
                            description
                              "2.4 Mbps";
                          }
                          enum "2.7Mb" {
                            value 8;
                            description
                              "2.7 Mbps";
                          }
                          enum "3.0Mb" {
                            value 9;
                            description
                              "3.0 Mbps";
                          }
                          enum "3.3Mb" {
                            value 10;
                            description
                              "3.3 Mbps";
                          }
                          enum "3.6Mb" {
                            value 11;
                            description
                              "3.6 Mbps";
                          }
                          enum "3.9Mb" {
                            value 12;
                            description
                              "3.9 Mbps";
                          }
                          enum "4.2Mb" {
                            value 13;
                            description
                              "4.2 Mbps";
                          }
                          enum "4.5Mb" {
                            value 14;
                            description
                              "4.5 Mbps";
                          }
                          enum "4.8Mb" {
                            value 15;
                            description
                              "4.8 Mbps";
                          }
                          enum "5.1Mb" {
                            value 16;
                            description
                              "5.1 Mbps";
                          }
                          enum "5.4Mb" {
                            value 17;
                            description
                              "5.4 Mbps";
                          }
                          enum "5.7Mb" {
                            value 18;
                            description
                              "5.7 Mbps";
                          }
                          enum "6.0Mb" {
                            value 19;
                            description
                              "6.0 Mbps";
                          }
                          enum "6.3Mb" {
                            value 20;
                            description
                              "6.3 Mbps";
                          }
                          enum "6.6Mb" {
                            value 21;
                            description
                              "6.6 Mbps";
                          }
                          enum "6.9Mb" {
                            value 22;
                            description
                              "6.9 Mbps";
                          }
                          enum "7.2Mb" {
                            value 23;
                            description
                              "7.2 Mbps";
                          }
                          enum "7.5Mb" {
                            value 24;
                            description
                              "7.5 Mbps";
                          }
                          enum "7.8Mb" {
                            value 25;
                            description
                              "7.8 Mbps";
                          }
                          enum "8.1Mb" {
                            value 26;
                            description
                              "8.1 Mbps";
                          }
                          enum "8.4Mb" {
                            value 27;
                            description
                              "8.4 Mbps";
                          }
                          enum "8.7Mb" {
                            value 28;
                            description
                              "8.7 Mbps";
                          }
                          enum "9.0Mb" {
                            value 29;
                            description
                              "9.0 Mbps";
                          }
                          enum "9.3Mb" {
                            value 30;
                            description
                              "9.3 Mbps";
                          }
                          enum "9.6Mb" {
                            value 31;
                            description
                              "9.6 Mbps";
                          }
                          enum "9.9Mb" {
                            value 32;
                            description
                              "9.9 Mbps";
                          }
                          enum "10.2Mb" {
                            value 33;
                            description
                              "10.2 Mbps";
                          }
                          enum "10.5Mb" {
                            value 34;
                            description
                              "10.5 Mbps";
                          }
                          enum "10.8Mb" {
                            value 35;
                            description
                              "10.8 Mbps";
                          }
                          enum "11.1Mb" {
                            value 36;
                            description
                              "11.1 Mbps";
                          }
                          enum "11.4Mb" {
                            value 37;
                            description
                              "11.4 Mbps";
                          }
                          enum "11.7Mb" {
                            value 38;
                            description
                              "11.7 Mbps";
                          }
                          enum "12.0Mb" {
                            value 39;
                            description
                              "12.0 Mbps";
                          }
                          enum "12.3Mb" {
                            value 40;
                            description
                              "12.3 Mbps";
                          }
                          enum "12.6Mb" {
                            value 41;
                            description
                              "12.6 Mbps";
                          }
                          enum "12.9Mb" {
                            value 42;
                            description
                              "12.9 Mbps";
                          }
                          enum "13.2Mb" {
                            value 43;
                            description
                              "13.2 Mbps";
                          }
                          enum "13.5Mb" {
                            value 44;
                            description
                              "13.5 Mbps";
                          }
                          enum "13.8Mb" {
                            value 45;
                            description
                              "13.8 Mbps";
                          }
                          enum "14.1Mb" {
                            value 46;
                            description
                              "14.1 Mbps";
                          }
                          enum "14.4Mb" {
                            value 47;
                            description
                              "14.4 Mbps";
                          }
                          enum "14.7Mb" {
                            value 48;
                            description
                              "14.7 Mbps";
                          }
                          enum "15.0Mb" {
                            value 49;
                            description
                              "15.0 Mbps";
                          }
                          enum "15.3Mb" {
                            value 50;
                            description
                              "15.3 Mbps";
                          }
                          enum "15.6Mb" {
                            value 51;
                            description
                              "15.6 Mbps";
                          }
                          enum "15.9Mb" {
                            value 52;
                            description
                              "15.9 Mbps";
                          }
                          enum "16.2Mb" {
                            value 53;
                            description
                              "16.2 Mbps";
                          }
                          enum "16.5Mb" {
                            value 54;
                            description
                              "16.5 Mbps";
                          }
                          enum "16.8Mb" {
                            value 55;
                            description
                              "16.8 Mbps";
                          }
                          enum "17.1Mb" {
                            value 56;
                            description
                              "17.1 Mbps";
                          }
                          enum "17.4Mb" {
                            value 57;
                            description
                              "17.4 Mbps";
                          }
                          enum "17.7Mb" {
                            value 58;
                            description
                              "17.7 Mbps";
                          }
                          enum "18.0Mb" {
                            value 59;
                            description
                              "18.0 Mbps";
                          }
                          enum "18.3Mb" {
                            value 60;
                            description
                              "18.3 Mbps";
                          }
                          enum "18.6Mb" {
                            value 61;
                            description
                              "18.6 Mbps";
                          }
                          enum "18.9Mb" {
                            value 62;
                            description
                              "18.9 Mbps";
                          }
                          enum "19.2Mb" {
                            value 63;
                            description
                              "19.2 Mbps";
                          }
                          enum "19.5Mb" {
                            value 64;
                            description
                              "19.5 Mbps";
                          }
                          enum "19.8Mb" {
                            value 65;
                            description
                              "19.8 Mbps";
                          }
                          enum "20.1Mb" {
                            value 66;
                            description
                              "20.1 Mbps";
                          }
                          enum "20.5Mb" {
                            value 67;
                            description
                              "20.5 Mbps";
                          }
                          enum "20.8Mb" {
                            value 68;
                            description
                              "20.8 Mbps";
                          }
                          enum "21.1Mb" {
                            value 69;
                            description
                              "21.1 Mbps";
                          }
                          enum "21.4Mb" {
                            value 70;
                            description
                              "21.4 Mbps";
                          }
                          enum "21.7Mb" {
                            value 71;
                            description
                              "21.7 Mbps";
                          }
                          enum "22.0Mb" {
                            value 72;
                            description
                              "22.0 Mbps";
                          }
                          enum "22.3Mb" {
                            value 73;
                            description
                              "22.3 Mbps";
                          }
                          enum "22.6Mb" {
                            value 74;
                            description
                              "22.6 Mbps";
                          }
                          enum "22.9Mb" {
                            value 75;
                            description
                              "22.9 Mbps";
                          }
                          enum "23.2Mb" {
                            value 76;
                            description
                              "23.2 Mbps";
                          }
                          enum "23.5Mb" {
                            value 77;
                            description
                              "23.5 Mbps";
                          }
                          enum "23.8Mb" {
                            value 78;
                            description
                              "23.8 Mbps";
                          }
                          enum "24.1Mb" {
                            value 79;
                            description
                              "24.1 Mbps";
                          }
                          enum "24.4Mb" {
                            value 80;
                            description
                              "24.4 Mbps";
                          }
                          enum "24.7Mb" {
                            value 81;
                            description
                              "24.7 Mbps";
                          }
                          enum "25.0Mb" {
                            value 82;
                            description
                              "25.0 Mbps";
                          }
                          enum "25.3Mb" {
                            value 83;
                            description
                              "25.3 Mbps";
                          }
                          enum "25.6Mb" {
                            value 84;
                            description
                              "25.6 Mbps";
                          }
                          enum "25.9Mb" {
                            value 85;
                            description
                              "25.9 Mbps";
                          }
                          enum "26.2Mb" {
                            value 86;
                            description
                              "26.2 Mbps";
                          }
                          enum "26.5Mb" {
                            value 87;
                            description
                              "26.5 Mbps";
                          }
                          enum "26.8Mb" {
                            value 88;
                            description
                              "26.8 Mbps";
                          }
                          enum "27.1Mb" {
                            value 89;
                            description
                              "27.1 Mbps";
                          }
                          enum "27.4Mb" {
                            value 90;
                            description
                              "27.4 Mbps";
                          }
                          enum "27.7Mb" {
                            value 91;
                            description
                              "27.7 Mbps";
                          }
                          enum "28.0Mb" {
                            value 92;
                            description
                              "28.0 Mbps";
                          }
                          enum "28.3Mb" {
                            value 93;
                            description
                              "28.3 Mbps";
                          }
                          enum "28.6Mb" {
                            value 94;
                            description
                              "28.6 Mbps";
                          }
                          enum "28.9Mb" {
                            value 95;
                            description
                              "28.9 Mbps";
                          }
                          enum "29.2Mb" {
                            value 96;
                            description
                              "29.2 Mbps";
                          }
                          enum "29.5Mb" {
                            value 97;
                            description
                              "29.5 Mbps";
                          }
                          enum "29.8Mb" {
                            value 98;
                            description
                              "29.8 Mbps";
                          }
                          enum "30.1Mb" {
                            value 99;
                            description
                              "30.1 Mbps";
                          }
                          enum "30.4Mb" {
                            value 100;
                            description
                              "30.4 Mbps";
                          }
                          enum "30.7Mb" {
                            value 101;
                            description
                              "30.7 Mbps";
                          }
                          enum "31.0Mb" {
                            value 102;
                            description
                              "31.0 Mbps";
                          }
                          enum "31.3Mb" {
                            value 103;
                            description
                              "31.3 Mbps";
                          }
                          enum "31.6Mb" {
                            value 104;
                            description
                              "31.6 Mbps";
                          }
                          enum "31.9Mb" {
                            value 105;
                            description
                              "31.9 Mbps";
                          }
                          enum "32.2Mb" {
                            value 106;
                            description
                              "32.2 Mbps";
                          }
                          enum "32.5Mb" {
                            value 107;
                            description
                              "32.5 Mbps";
                          }
                          enum "32.8Mb" {
                            value 108;
                            description
                              "32.8 Mbps";
                          }
                          enum "33.1Mb" {
                            value 109;
                            description
                              "33.1 Mbps";
                          }
                          enum "33.4Mb" {
                            value 110;
                            description
                              "33.4 Mbps";
                          }
                          enum "33.7Mb" {
                            value 111;
                            description
                              "33.7 Mbps";
                          }
                          enum "34.0Mb" {
                            value 112;
                            description
                              "34.0 Mbps";
                          }
                          enum "34.3Mb" {
                            value 113;
                            description
                              "34.3 Mbps";
                          }
                          enum "34.6Mb" {
                            value 114;
                            description
                              "34.6 Mbps";
                          }
                          enum "34.9Mb" {
                            value 115;
                            description
                              "34.9 Mbps";
                          }
                          enum "35.2Mb" {
                            value 116;
                            description
                              "35.2 Mbps";
                          }
                          enum "35.5Mb" {
                            value 117;
                            description
                              "35.5 Mbps";
                          }
                          enum "35.8Mb" {
                            value 118;
                            description
                              "35.8 Mbps";
                          }
                          enum "36.1Mb" {
                            value 119;
                            description
                              "36.1 Mbps";
                          }
                          enum "36.4Mb" {
                            value 120;
                            description
                              "36.4 Mbps";
                          }
                          enum "36.7Mb" {
                            value 121;
                            description
                              "36.7 Mbps";
                          }
                          enum "37.0Mb" {
                            value 122;
                            description
                              "37.0 Mbps";
                          }
                          enum "37.3Mb" {
                            value 123;
                            description
                              "37.3 Mbps";
                          }
                          enum "37.6Mb" {
                            value 124;
                            description
                              "37.6 Mbps";
                          }
                          enum "37.9Mb" {
                            value 125;
                            description
                              "37.9 Mbps";
                          }
                          enum "38.2Mb" {
                            value 126;
                            description
                              "38.2 Mbps";
                          }
                          enum "38.5Mb" {
                            value 127;
                            description
                              "38.5 Mbps";
                          }
                          enum "38.8Mb" {
                            value 128;
                            description
                              "38.8 Mbps";
                          }
                          enum "39.1Mb" {
                            value 129;
                            description
                              "39.1 Mbps";
                          }
                          enum "39.4Mb" {
                            value 130;
                            description
                              "39.4 Mbps";
                          }
                          enum "39.7Mb" {
                            value 131;
                            description
                              "39.7 Mbps";
                          }
                          enum "40.0Mb" {
                            value 132;
                            description
                              "40.0 Mbps";
                          }
                          enum "40.3Mb" {
                            value 133;
                            description
                              "40.3 Mbps";
                          }
                          enum "40.6Mb" {
                            value 134;
                            description
                              "40.6 Mbps";
                          }
                          enum "40.9Mb" {
                            value 135;
                            description
                              "40.9 Mbps";
                          }
                          enum "41.2Mb" {
                            value 136;
                            description
                              "41.2 Mbps";
                          }
                          enum "41.5Mb" {
                            value 137;
                            description
                              "41.5 Mbps";
                          }
                          enum "41.8Mb" {
                            value 138;
                            description
                              "41.8 Mbps";
                          }
                          enum "42.1Mb" {
                            value 139;
                            description
                              "42.1 Mbps";
                          }
                          enum "42.4Mb" {
                            value 140;
                            description
                              "42.4 Mbps";
                          }
                          enum "42.7Mb" {
                            value 141;
                            description
                              "42.7 Mbps";
                          }
                          enum "43.0Mb" {
                            value 142;
                            description
                              "43.0 Mbps";
                          }
                          enum "43.3Mb" {
                            value 143;
                            description
                              "43.3 Mbps";
                          }
                          enum "43.6Mb" {
                            value 144;
                            description
                              "43.6 Mbps";
                          }
                          enum "43.9Mb" {
                            value 145;
                            description
                              "43.9 Mbps";
                          }
                          enum "44.2Mb" {
                            value 146;
                            description
                              "44.2 Mbps";
                          }
                        }
                        description
                          "Set subrate value";
                      }
                    }  // container digital-link
                  }  // choice vendor
                }  // container compatibility-mode
    
                choice payload-scrambler-choice {
                  leaf payload-scrambler {
                    type empty;
                    description
                      "Enable payload scrambling";
                  }
                  leaf no-payload-scrambler {
                    type empty;
                    description
                      "Don't enable payload scrambling";
                  }
                }  // choice payload-scrambler-choice
    
                choice cbit-parity-choice {
                  leaf cbit-parity {
                    junos:must "(!(".. unframed"))";
                    junos:must-message "cbit-parity and unframed cannot coexist";
                    type empty;
                    description
                      "Enable C-bit parity mode";
                  }
                  leaf no-cbit-parity {
                    junos:must "(!(".. unframed"))";
                    junos:must-message "cbit-parity and unframed cannot coexist";
                    type empty;
                    description
                      "Don't enable C-bit parity mode";
                  }
                }  // choice cbit-parity-choice
    
                leaf fcs {
                  type enumeration {
                    enum "32" {
                      value 0;
                      description "32-bit mode";
                    }
                    enum "16" {
                      value 1;
                      description "16-bit mode";
                    }
                  }
                  description "Frame checksum";
                }
    
                leaf idle-cycle-flag {
                  type enumeration {
                    enum "flags" {
                      value 0;
                      description
                        "Transmit 0x7E in idle cycles";
                    }
                    enum "ones" {
                      value 1;
                      description
                        "Transmit 0xFF (all ones) in idle cycles";
                    }
                  }
                  description
                    "Value to transmit in idle cycles";
                }
    
                leaf start-end-flag {
                  type enumeration {
                    enum "shared" {
                      value 0;
                      description
                        "Share start/end flags on transmit";
                    }
                    enum "filler" {
                      value 1;
                      description
                        "Send two idle cycles between start/end flags";
                    }
                  }
                  description
                    "Set start/end flags on transmission";
                }
    
                choice feac-loop-respond-choice {
                  leaf feac-loop-respond {
                    type empty;
                    description
                      "Respond to FEAC loop requests";
                  }
                  leaf no-feac-loop-respond {
                    type empty;
                    description
                      "Don't respond to FEAC loop requests";
                  }
                }  // choice feac-loop-respond-choice
    
                leaf bert-algorithm {
                  type enumeration {
                    enum "pseudo-2e3" {
                      value 0;
                      description
                        "Pattern is 2^3 - 1";
                    }
                    enum "pseudo-2e4" {
                      value 1;
                      description
                        "Pattern is 2^4 - 1";
                    }
                    enum "pseudo-2e5" {
                      value 2;
                      description
                        "Pattern is 2^5 - 1";
                    }
                    enum "pseudo-2e6" {
                      value 3;
                      description
                        "Pattern is 2^6 - 1";
                    }
                    enum "pseudo-2e7" {
                      value 4;
                      description
                        "Pattern is 2^7 - 1";
                    }
                    enum "pseudo-2e9-o153" {
                      value 5;
                      description
                        "Pattern is 2^9 - 1 (per O.153 standard)";
                    }
                    enum "pseudo-2e10" {
                      value 6;
                      description
                        "Pattern is 2^10 - 1";
                    }
                    enum "pseudo-2e11-o152" {
                      value 7;
                      description
                        "Pattern is 2^11 -1 (per O.152 standard)";
                    }
                    enum "pseudo-2e15-o151" {
                      value 8;
                      description
                        "Pattern is 2^15 - 1 (per O.151 standard)";
                    }
                    enum "pseudo-2e17" {
                      value 9;
                      description
                        "Pattern is 2^17 - 1";
                    }
                    enum "pseudo-2e18" {
                      value 10;
                      description
                        "Pattern is 2^18 - 1";
                    }
                    enum "pseudo-2e20-o153" {
                      value 11;
                      description
                        "Pattern is 2^20 - 1 (per O.153 standard)";
                    }
                    enum "pseudo-2e20-o151" {
                      value 12;
                      description
                        "Pattern is 2^20 - 1 (per O.151 standard)";
                    }
                    enum "pseudo-2e21" {
                      value 13;
                      description
                        "Pattern is 2^21 - 1";
                    }
                    enum "pseudo-2e22" {
                      value 14;
                      description
                        "Pattern is 2^22 - 1";
                    }
                    enum "pseudo-2e23-o151" {
                      value 15;
                      description
                        "Pattern is 2^23 (per O.151 standard)";
                    }
                    enum "pseudo-2e25" {
                      value 16;
                      description
                        "Pattern is 2^25 - 1";
                    }
                    enum "pseudo-2e28" {
                      value 17;
                      description
                        "Pattern is 2^28 - 1";
                    }
                    enum "pseudo-2e29" {
                      value 18;
                      description
                        "Pattern is 2^29 - 1";
                    }
                    enum "pseudo-2e31" {
                      value 19;
                      description
                        "Pattern is 2^31 - 1";
                    }
                    enum "pseudo-2e32" {
                      value 20;
                      description
                        "Pattern is 2^32 - 1";
                    }
                    enum "all-ones-repeating" {
                      value 21;
                      description
                        "Repeating one bits";
                    }
                    enum "all-zeros-repeating" {
                      value 22;
                      description
                        "Repeating zero bits";
                    }
                    enum
                      "alternating-ones-zeros" {
                      value 23;
                      description
                        "Alternating ones and zeros";
                    }
                    enum
                      "alternating-double-ones-zeros" {
                      value 24;
                      description
                        "Alternating pairs of ones and zeros";
                    }
                    enum "repeating-3-in-24" {
                      value 25;
                      description
                        "3 bits in 24 are set";
                    }
                    enum "repeating-1-in-8" {
                      value 26;
                      description
                        "1 bit in 8 is set";
                    }
                    enum "repeating-1-in-4" {
                      value 27;
                      description
                        "1 bit in 4 is set";
                    }
                  }
                  description
                    "Set BERT algorithm";
                }
    
                leaf bert-error-rate {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 7";
                    }
                  }
                  description
                    "Bit error rate (10^-n for n > 0, and zero for n = 0)";
                }
    
                leaf bert-period {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 240";
                    }
                  }
                  units "seconds";
                  description
                    "Length of BERT test";
                }
    
                leaf buildout {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 450";
                    }
                  }
                  units "feet";
                  description "Line buildout";
                }
    
                leaf atm-encapsulation {
                  type enumeration {
                    enum "plcp" {
                      value 0;
                      description
                        "PLCP encapsulation";
                    }
                    enum "direct" {
                      value 1;
                      description
                        "ATM direct mapping";
                    }
                  }
                  description
                    "DS-3 interface encapsulation";
                }
              }  // container t3-options
    
              container e3-options {
                junos:must "((!("interfaces ${interface} container-options") || ("interfaces ${interface} container-options container-type" || "interfaces ${interface} container-options allow-configuration-override")))";
                junos:must-message "t1-options cannot be configured without allow-configuration-override";
                description
                  "E3 interface-specific options";
                uses apply-advanced;
    
                leaf loopback {
                  type enumeration {
                    enum "local" {
                      value 0;
                      description
                        "Local loopback";
                    }
                    enum "remote" {
                      value 1;
                      description
                        "Remote loopback";
                    }
                  }
                  description "Loopback mode";
                }
    
                choice unframed-choice {
                  leaf unframed {
                    type empty;
                    description
                      "Enable unframed mode";
                  }
                  leaf no-unframed {
                    type empty;
                    description
                      "Don't enable unframed mode";
                  }
                }  // choice unframed-choice
    
                container compatibility-mode {
                  description
                    "Set CSU compatibility mode";
                  choice vendor {
                    leaf larscom {
                      type empty;
                      description
                        "Compatible with Larscom CSU (only non IQ E3 interfaces)";
                    }
                    container digital-link {
                      presence
                        "enable digital-link";
                      description
                        "Compatible with Digital Link CSU";
                      leaf subrate {
                        type enumeration {
                          enum "358Kb" {
                            value 0;
                            description
                              "358 Kbps";
                          }
                          enum "716Kb" {
                            value 1;
                            description
                              "716 Kbps";
                          }
                          enum "1.1Mb" {
                            value 2;
                            description
                              "1.1 Mbps";
                          }
                          enum "1.4Mb" {
                            value 3;
                            description
                              "1.4 Mbps";
                          }
                          enum "1.8Mb" {
                            value 4;
                            description
                              "1.8 Mbps";
                          }
                          enum "2.1Mb" {
                            value 5;
                            description
                              "2.1 Mbps";
                          }
                          enum "2.5Mb" {
                            value 6;
                            description
                              "2.5 Mbps";
                          }
                          enum "2.9Mb" {
                            value 7;
                            description
                              "2.9 Mbps";
                          }
                          enum "3.2Mb" {
                            value 8;
                            description
                              "3.2 Mbps";
                          }
                          enum "3.6Mb" {
                            value 9;
                            description
                              "3.6 Mbps";
                          }
                          enum "3.9Mb" {
                            value 10;
                            description
                              "3.9 Mbps";
                          }
                          enum "4.3Mb" {
                            value 11;
                            description
                              "4.3 Mbps";
                          }
                          enum "4.7Mb" {
                            value 12;
                            description
                              "4.7 Mbps";
                          }
                          enum "5.0Mb" {
                            value 13;
                            description
                              "5.0 Mbps";
                          }
                          enum "5.4Mb" {
                            value 14;
                            description
                              "5.4 Mbps";
                          }
                          enum "5.7Mb" {
                            value 15;
                            description
                              "5.7 Mbps";
                          }
                          enum "6.1Mb" {
                            value 16;
                            description
                              "6.1 Mbps";
                          }
                          enum "6.4Mb" {
                            value 17;
                            description
                              "6.4 Mbps";
                          }
                          enum "6.8Mb" {
                            value 18;
                            description
                              "6.8 Mbps";
                          }
                          enum "7.2Mb" {
                            value 19;
                            description
                              "7.2 Mbps";
                          }
                          enum "7.5Mb" {
                            value 20;
                            description
                              "7.5 Mbps";
                          }
                          enum "7.9Mb" {
                            value 21;
                            description
                              "7.9 Mbps";
                          }
                          enum "8.2Mb" {
                            value 22;
                            description
                              "8.2 Mbps";
                          }
                          enum "8.6Mb" {
                            value 23;
                            description
                              "8.6 Mbps";
                          }
                          enum "9.0Mb" {
                            value 24;
                            description
                              "9.0 Mbps";
                          }
                          enum "9.3Mb" {
                            value 25;
                            description
                              "9.3 Mbps";
                          }
                          enum "9.7Mb" {
                            value 26;
                            description
                              "9.7 Mbps";
                          }
                          enum "10.0Mb" {
                            value 27;
                            description
                              "10.0 Mbps";
                          }
                          enum "10.4Mb" {
                            value 28;
                            description
                              "10.4 Mbps";
                          }
                          enum "10.7Mb" {
                            value 29;
                            description
                              "10.7 Mbps";
                          }
                          enum "11.1Mb" {
                            value 30;
                            description
                              "11.1 Mbps";
                          }
                          enum "11.5Mb" {
                            value 31;
                            description
                              "11.5 Mbps";
                          }
                          enum "11.8Mb" {
                            value 32;
                            description
                              "11.8 Mbps";
                          }
                          enum "12.2Mb" {
                            value 33;
                            description
                              "12.2 Mbps";
                          }
                          enum "12.5Mb" {
                            value 34;
                            description
                              "12.5 Mbps";
                          }
                          enum "12.9Mb" {
                            value 35;
                            description
                              "12.9 Mbps";
                          }
                          enum "13.2Mb" {
                            value 36;
                            description
                              "13.2 Mbps";
                          }
                          enum "13.6Mb" {
                            value 37;
                            description
                              "13.6 Mbps";
                          }
                          enum "14.0Mb" {
                            value 38;
                            description
                              "14.0 Mbps";
                          }
                          enum "14.3Mb" {
                            value 39;
                            description
                              "14.3 Mbps";
                          }
                          enum "14.7Mb" {
                            value 40;
                            description
                              "14.7 Mbps";
                          }
                          enum "15.0Mb" {
                            value 41;
                            description
                              "15.0 Mbps";
                          }
                          enum "15.4Mb" {
                            value 42;
                            description
                              "15.4 Mbps";
                          }
                          enum "15.8Mb" {
                            value 43;
                            description
                              "15.8 Mbps";
                          }
                          enum "16.1Mb" {
                            value 44;
                            description
                              "16.1 Mbps";
                          }
                          enum "16.5Mb" {
                            value 45;
                            description
                              "16.5 Mbps";
                          }
                          enum "16.8Mb" {
                            value 46;
                            description
                              "16.8 Mbps";
                          }
                          enum "17.2Mb" {
                            value 47;
                            description
                              "17.2 Mbps";
                          }
                          enum "17.5Mb" {
                            value 48;
                            description
                              "17.5 Mbps";
                          }
                          enum "17.9Mb" {
                            value 49;
                            description
                              "17.9 Mbps";
                          }
                          enum "18.3Mb" {
                            value 50;
                            description
                              "18.3 Mbps";
                          }
                          enum "18.6Mb" {
                            value 51;
                            description
                              "18.6 Mbps";
                          }
                          enum "19.0Mb" {
                            value 52;
                            description
                              "19.0 Mbps";
                          }
                          enum "19.3Mb" {
                            value 53;
                            description
                              "19.3 Mbps";
                          }
                          enum "19.7Mb" {
                            value 54;
                            description
                              "19.7 Mbps";
                          }
                          enum "20.0Mb" {
                            value 55;
                            description
                              "20.0 Mbps";
                          }
                          enum "20.4Mb" {
                            value 56;
                            description
                              "20.4 Mbps";
                          }
                          enum "20.8Mb" {
                            value 57;
                            description
                              "20.8 Mbps";
                          }
                          enum "21.1Mb" {
                            value 58;
                            description
                              "21.1 Mbps";
                          }
                          enum "21.5Mb" {
                            value 59;
                            description
                              "21.5 Mbps";
                          }
                          enum "21.8Mb" {
                            value 60;
                            description
                              "21.8 Mbps";
                          }
                          enum "22.2Mb" {
                            value 61;
                            description
                              "22.2 Mbps";
                          }
                          enum "22.6Mb" {
                            value 62;
                            description
                              "22.6 Mbps";
                          }
                          enum "22.9Mb" {
                            value 63;
                            description
                              "22.9 Mbps";
                          }
                          enum "23.3Mb" {
                            value 64;
                            description
                              "23.3 Mbps";
                          }
                          enum "23.6Mb" {
                            value 65;
                            description
                              "23.6 Mbps";
                          }
                          enum "24.0Mb" {
                            value 66;
                            description
                              "24.0 Mbps";
                          }
                          enum "24.3Mb" {
                            value 67;
                            description
                              "24.3 Mbps";
                          }
                          enum "24.7Mb" {
                            value 68;
                            description
                              "24.7 Mbps";
                          }
                          enum "25.1Mb" {
                            value 69;
                            description
                              "25.1 Mbps";
                          }
                          enum "25.4Mb" {
                            value 70;
                            description
                              "25.4 Mbps";
                          }
                          enum "25.8Mb" {
                            value 71;
                            description
                              "25.8 Mbps";
                          }
                          enum "26.1Mb" {
                            value 72;
                            description
                              "26.1 Mbps";
                          }
                          enum "26.5Mb" {
                            value 73;
                            description
                              "26.5 Mbps";
                          }
                          enum "26.9Mb" {
                            value 74;
                            description
                              "26.9 Mbps";
                          }
                          enum "27.2Mb" {
                            value 75;
                            description
                              "27.2 Mbps";
                          }
                          enum "27.6Mb" {
                            value 76;
                            description
                              "27.6 Mbps";
                          }
                          enum "27.9Mb" {
                            value 77;
                            description
                              "27.9 Mbps";
                          }
                          enum "28.3Mb" {
                            value 78;
                            description
                              "28.3 Mbps";
                          }
                          enum "28.6Mb" {
                            value 79;
                            description
                              "28.6 Mbps";
                          }
                          enum "29.0Mb" {
                            value 80;
                            description
                              "29.0 Mbps";
                          }
                          enum "29.4Mb" {
                            value 81;
                            description
                              "29.4 Mbps";
                          }
                          enum "29.7Mb" {
                            value 82;
                            description
                              "29.7 Mbps";
                          }
                          enum "30.1Mb" {
                            value 83;
                            description
                              "30.1 Mbps";
                          }
                          enum "30.4Mb" {
                            value 84;
                            description
                              "30.4 Mbps";
                          }
                          enum "30.8Mb" {
                            value 85;
                            description
                              "30.8 Mbps";
                          }
                          enum "31.1Mb" {
                            value 86;
                            description
                              "31.1 Mbps";
                          }
                          enum "31.5Mb" {
                            value 87;
                            description
                              "31.5 Mbps";
                          }
                          enum "31.9Mb" {
                            value 88;
                            description
                              "31.9 Mbps";
                          }
                          enum "32.2Mb" {
                            value 89;
                            description
                              "32.2 Mbps";
                          }
                          enum "32.6Mb" {
                            value 90;
                            description
                              "32.6 Mbps";
                          }
                          enum "32.9Mb" {
                            value 91;
                            description
                              "32.9 Mbps";
                          }
                          enum "33.3Mb" {
                            value 92;
                            description
                              "33.3 Mbps";
                          }
                          enum "33.7Mb" {
                            value 93;
                            description
                              "33.7 Mbps";
                          }
                          enum "34.0Mb" {
                            value 94;
                            description
                              "34.0 Mbps";
                          }
                        }
                        description
                          "Set subrate value";
                      }
                    }  // container digital-link
                    container kentrox {
                      presence "enable kentrox";
                      description
                        "Compatible with Kentrox CSU";
                      leaf subrate {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 48";
                          }
                        }
                        description
                          "Set subrate value (only for E3 IQ interfaces)";
                      }
                    }  // container kentrox
                  }  // choice vendor
                }  // container compatibility-mode
    
                choice payload-scrambler-choice {
                  leaf payload-scrambler {
                    type empty;
                    description
                      "Enable payload scrambling";
                  }
                  leaf no-payload-scrambler {
                    type empty;
                    description
                      "Don't enable payload scrambling";
                  }
                }  // choice payload-scrambler-choice
    
                leaf fcs {
                  type enumeration {
                    enum "32" {
                      value 0;
                      description "32-bit mode";
                    }
                    enum "16" {
                      value 1;
                      description "16-bit mode";
                    }
                  }
                  description "Frame checksum";
                }
    
                leaf idle-cycle-flag {
                  type enumeration {
                    enum "flags" {
                      value 0;
                      description
                        "Transmit 0x7E in idle cycles";
                    }
                    enum "ones" {
                      value 1;
                      description
                        "Transmit 0xFF (all ones) in idle cycles";
                    }
                  }
                  description
                    "Value to transmit in idle cycles";
                }
    
                leaf invert-data {
                  type empty;
                  description "Invert data";
                }
    
                leaf start-end-flag {
                  type enumeration {
                    enum "shared" {
                      value 0;
                      description
                        "Share start/end flags on transmit";
                    }
                    enum "filler" {
                      value 1;
                      description
                        "Send two idle cycles between start/end flags";
                    }
                  }
                  description
                    "Set start/end flags on transmission";
                }
    
                leaf bert-algorithm {
                  type enumeration {
                    enum "pseudo-2e3" {
                      value 0;
                      description
                        "Pattern is 2^3 - 1";
                    }
                    enum "pseudo-2e4" {
                      value 1;
                      description
                        "Pattern is 2^4 - 1";
                    }
                    enum "pseudo-2e5" {
                      value 2;
                      description
                        "Pattern is 2^5 - 1";
                    }
                    enum "pseudo-2e6" {
                      value 3;
                      description
                        "Pattern is 2^6 - 1";
                    }
                    enum "pseudo-2e7" {
                      value 4;
                      description
                        "Pattern is 2^7 - 1";
                    }
                    enum "pseudo-2e9-o153" {
                      value 5;
                      description
                        "Pattern is 2^9 - 1 (per O.153 standard)";
                    }
                    enum "pseudo-2e10" {
                      value 6;
                      description
                        "Pattern is 2^10 - 1";
                    }
                    enum "pseudo-2e11-o152" {
                      value 7;
                      description
                        "Pattern is 2^11 -1 (per O.152 standard)";
                    }
                    enum "pseudo-2e15-o151" {
                      value 8;
                      description
                        "Pattern is 2^15 - 1 (per O.151 standard)";
                    }
                    enum "pseudo-2e17" {
                      value 9;
                      description
                        "Pattern is 2^17 - 1";
                    }
                    enum "pseudo-2e18" {
                      value 10;
                      description
                        "Pattern is 2^18 - 1";
                    }
                    enum "pseudo-2e20-o153" {
                      value 11;
                      description
                        "Pattern is 2^20 - 1 (per O.153 standard)";
                    }
                    enum "pseudo-2e20-o151" {
                      value 12;
                      description
                        "Pattern is 2^20 - 1 (per O.151 standard)";
                    }
                    enum "pseudo-2e21" {
                      value 13;
                      description
                        "Pattern is 2^21 - 1";
                    }
                    enum "pseudo-2e22" {
                      value 14;
                      description
                        "Pattern is 2^22 - 1";
                    }
                    enum "pseudo-2e23-o151" {
                      value 15;
                      description
                        "Pattern is 2^23 (per O.151 standard)";
                    }
                    enum "pseudo-2e25" {
                      value 16;
                      description
                        "Pattern is 2^25 - 1";
                    }
                    enum "pseudo-2e28" {
                      value 17;
                      description
                        "Pattern is 2^28 - 1";
                    }
                    enum "pseudo-2e29" {
                      value 18;
                      description
                        "Pattern is 2^29 - 1";
                    }
                    enum "pseudo-2e31" {
                      value 19;
                      description
                        "Pattern is 2^31 - 1";
                    }
                    enum "pseudo-2e32" {
                      value 20;
                      description
                        "Pattern is 2^32 - 1";
                    }
                    enum "all-ones-repeating" {
                      value 21;
                      description
                        "Repeating one bits";
                    }
                    enum "all-zeros-repeating" {
                      value 22;
                      description
                        "Repeating zero bits";
                    }
                    enum
                      "alternating-ones-zeros" {
                      value 23;
                      description
                        "Alternating ones and zeros";
                    }
                    enum
                      "alternating-double-ones-zeros" {
                      value 24;
                      description
                        "Alternating pairs of ones and zeros";
                    }
                    enum "repeating-3-in-24" {
                      value 25;
                      description
                        "3 bits in 24 are set";
                    }
                    enum "repeating-1-in-8" {
                      value 26;
                      description
                        "1 bit in 8 is set";
                    }
                    enum "repeating-1-in-4" {
                      value 27;
                      description
                        "1 bit in 4 is set";
                    }
                  }
                  description
                    "Set BERT algorithm";
                }
    
                leaf bert-error-rate {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 7";
                    }
                  }
                  description
                    "Bit error rate (10^-n for n > 0, and zero for n = 0)";
                }
    
                leaf bert-period {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 240";
                    }
                  }
                  units "seconds";
                  description
                    "Length of BERT test";
                }
    
                leaf buildout {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 450";
                    }
                  }
                  units "feet";
                  description "Line buildout";
                }
    
                leaf atm-encapsulation {
                  type enumeration {
                    enum "plcp" {
                      value 0;
                      description
                        "PLCP encapsulation";
                    }
                    enum "direct" {
                      value 1;
                      description
                        "ATM direct mapping";
                    }
                  }
                  description
                    "E3 interface encapsulation";
                }
    
                leaf framing {
                  type enumeration {
                    enum "g.751" {
                      value 0;
                      description "G.751 format";
                    }
                    enum "g.832" {
                      value 1;
                      description "G.832 format";
                    }
                  }
                  description "E3 line format";
                }
              }  // container e3-options
    
              container e1-options {
                junos:must "((!("interfaces ${interface} container-options") || ("interfaces ${interface} container-options container-type" || "interfaces ${interface} container-options allow-configuration-override")))";
                junos:must-message "e1-options cannot be configured without allow-configuration-override";
                description
                  "E1 interface-specific options";
                uses apply-advanced;
    
                leaf timeslots {
                  type string;
                  description
                    "Timeslots (1..32); for example, 1-4,6,9-11,32 (no space)";
                }
    
                leaf loopback {
                  type enumeration {
                    enum "local" {
                      value 0;
                      description
                        "Local loopback";
                    }
                    enum "remote" {
                      value 1;
                      description
                        "Remote loopback";
                    }
                  }
                  description "Loopback mode";
                }
    
                leaf framing {
                  type enumeration {
                    enum "g704" {
                      value 0;
                      description
                        "G704 mode with CRC4";
                    }
                    enum "unframed" {
                      value 1;
                      description
                        "Unframed mode";
                    }
                    enum "g704-no-crc4" {
                      value 2;
                      description
                        "G704 mode without CRC4";
                    }
                  }
                  description "Framing mode";
                }
    
                leaf fcs {
                  type enumeration {
                    enum "32" {
                      value 0;
                      description "32-bit mode";
                    }
                    enum "16" {
                      value 1;
                      description "16-bit mode";
                    }
                  }
                  description "Frame checksum";
                }
    
                leaf invert-data {
                  type empty;
                  description "Invert data";
                }
    
                leaf idle-cycle-flag {
                  type enumeration {
                    enum "flags" {
                      value 0;
                      description
                        "Transmit 0x7E in idle cycles";
                    }
                    enum "ones" {
                      value 1;
                      description
                        "Transmit 0xFF (all ones) in idle cycles";
                    }
                  }
                  description
                    "Value to transmit in idle cycles";
                }
    
                leaf start-end-flag {
                  type enumeration {
                    enum "shared" {
                      value 0;
                      description
                        "Share start/end flags on transmit";
                    }
                    enum "filler" {
                      value 1;
                      description
                        "Send two idle cycles between start/end flags";
                    }
                  }
                  description
                    "Set start/end flags on transmission";
                }
    
                leaf bert-algorithm {
                  type enumeration {
                    enum "pseudo-2e3" {
                      value 0;
                      description
                        "Pattern is 2^3 - 1";
                    }
                    enum "pseudo-2e4" {
                      value 1;
                      description
                        "Pattern is 2^4 - 1";
                    }
                    enum "pseudo-2e5" {
                      value 2;
                      description
                        "Pattern is 2^5 - 1";
                    }
                    enum "pseudo-2e6" {
                      value 3;
                      description
                        "Pattern is 2^6 - 1";
                    }
                    enum "pseudo-2e7" {
                      value 4;
                      description
                        "Pattern is 2^7 - 1";
                    }
                    enum "pseudo-2e9-o153" {
                      value 5;
                      description
                        "Pattern is 2^9 - 1 (per O.153 standard)";
                    }
                    enum "pseudo-2e10" {
                      value 6;
                      description
                        "Pattern is 2^10 - 1";
                    }
                    enum "pseudo-2e11-o152" {
                      value 7;
                      description
                        "Pattern is 2^11 -1 (per O.152 standard)";
                    }
                    enum "pseudo-2e15-o151" {
                      value 8;
                      description
                        "Pattern is 2^15 - 1 (per O.151 standard)";
                    }
                    enum "pseudo-2e17" {
                      value 9;
                      description
                        "Pattern is 2^17 - 1";
                    }
                    enum "pseudo-2e18" {
                      value 10;
                      description
                        "Pattern is 2^18 - 1";
                    }
                    enum "pseudo-2e20-o153" {
                      value 11;
                      description
                        "Pattern is 2^20 - 1 (per O.153 standard)";
                    }
                    enum "pseudo-2e20-o151" {
                      value 12;
                      description
                        "Pattern is 2^20 - 1 (per O.151 standard)";
                    }
                    enum "pseudo-2e21" {
                      value 13;
                      description
                        "Pattern is 2^21 - 1";
                    }
                    enum "pseudo-2e22" {
                      value 14;
                      description
                        "Pattern is 2^22 - 1";
                    }
                    enum "pseudo-2e23-o151" {
                      value 15;
                      description
                        "Pattern is 2^23 (per O.151 standard)";
                    }
                    enum "pseudo-2e25" {
                      value 16;
                      description
                        "Pattern is 2^25 - 1";
                    }
                    enum "pseudo-2e28" {
                      value 17;
                      description
                        "Pattern is 2^28 - 1";
                    }
                    enum "pseudo-2e29" {
                      value 18;
                      description
                        "Pattern is 2^29 - 1";
                    }
                    enum "pseudo-2e31" {
                      value 19;
                      description
                        "Pattern is 2^31 - 1";
                    }
                    enum "pseudo-2e32" {
                      value 20;
                      description
                        "Pattern is 2^32 - 1";
                    }
                    enum "all-ones-repeating" {
                      value 21;
                      description
                        "Repeating one bits";
                    }
                    enum "all-zeros-repeating" {
                      value 22;
                      description
                        "Repeating zero bits";
                    }
                    enum
                      "alternating-ones-zeros" {
                      value 23;
                      description
                        "Alternating ones and zeros";
                    }
                    enum
                      "alternating-double-ones-zeros" {
                      value 24;
                      description
                        "Alternating pairs of ones and zeros";
                    }
                    enum "repeating-3-in-24" {
                      value 25;
                      description
                        "3 bits in 24 are set";
                    }
                    enum "repeating-1-in-8" {
                      value 26;
                      description
                        "1 bit in 8 is set";
                    }
                    enum "repeating-1-in-4" {
                      value 27;
                      description
                        "1 bit in 4 is set";
                    }
                  }
                  description
                    "Set BERT algorithm";
                }
    
                leaf bert-error-rate {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 7";
                    }
                  }
                  description
                    "Bit error rate (10^-n for n > 0, and zero for n = 0)";
                }
    
                leaf bert-period {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 86400";
                    }
                  }
                  units "seconds";
                  description
                    "Length of BERT test";
                }
              }  // container e1-options
    
              container t1-options {
                junos:must "((!("interfaces ${interface} container-options") || ("interfaces ${interface} container-options container-type" || "interfaces ${interface} container-options allow-configuration-override")))";
                junos:must-message "t1-options cannot be configured without allow-configuration-override";
                description
                  "T1 interface-specific options";
                uses apply-advanced;
    
                leaf timeslots {
                  type string;
                  description
                    "Timeslots (1..24; for example, 1-3,4,9,22-24 (no space)";
                }
    
                leaf loopback {
                  type enumeration {
                    enum "local" {
                      value 0;
                      description
                        "Local loopback";
                    }
                    enum "remote" {
                      value 1;
                      description
                        "Remote loopback";
                    }
                    enum "payload" {
                      value 2;
                      description
                        "Payload loopback";
                    }
                  }
                  description "Loopback mode";
                }
    
                leaf buildout {
                  type enumeration {
                    enum "0-132" {
                      value 0;
                      description
                        "Line buildout is between 0-132 feet";
                    }
                    enum "133-265" {
                      value 1;
                      description
                        "Line buildout is between 133-265 feet";
                    }
                    enum "266-398" {
                      value 2;
                      description
                        "Line buildout is between 266-398 feet";
                    }
                    enum "399-531" {
                      value 3;
                      description
                        "Line buildout is between 399-531 feet";
                    }
                    enum "532-655" {
                      value 4;
                      description
                        "Line buildout is between 532-655 feet";
                    }
                    enum "long-0db" {
                      value 5;
                      description
                        "Long buildout with 0 dB transmit attenuation";
                    }
                    enum "long-7.5db" {
                      value 6;
                      description
                        "Long buildout with 7.5 dB transmit attenuation";
                    }
                    enum "long-15db" {
                      value 7;
                      description
                        "Long buildout with 15 dB transmit attenuation";
                    }
                    enum "long-22.5db" {
                      value 8;
                      description
                        "Long buildout with 22.5 dB transmit attenuation";
                    }
                  }
                  description "Line buildout";
                }
    
                leaf byte-encoding {
                  type enumeration {
                    enum "nx64" {
                      value 0;
                      description
                        "8 bits per byte";
                    }
                    enum "nx56" {
                      value 1;
                      description
                        "7 bits per byte";
                    }
                  }
                  description "Byte encoding";
                }
    
                leaf line-encoding {
                  type enumeration {
                    enum "ami" {
                      value 0;
                      description
                        "Automatic mark inversion";
                    }
                    enum "b8zs" {
                      value 1;
                      description
                        "8-bit zero suppression";
                    }
                  }
                  description "Line encoding";
                }
    
                leaf invert-data {
                  type empty;
                  description "Invert data";
                }
    
                leaf framing {
                  type enumeration {
                    enum "sf" {
                      value 0;
                      description "Super frame";
                    }
                    enum "esf" {
                      value 1;
                      description
                        "Extended super frame";
                    }
                  }
                  description "Framing mode";
                }
    
                leaf fcs {
                  type enumeration {
                    enum "32" {
                      value 0;
                      description "32-bit mode";
                    }
                    enum "16" {
                      value 1;
                      description "16-bit mode";
                    }
                  }
                  description "Frame checksum";
                }
    
                leaf idle-cycle-flag {
                  type enumeration {
                    enum "flags" {
                      value 0;
                      description
                        "Transmit 0x7E in idle cycles";
                    }
                    enum "ones" {
                      value 1;
                      description
                        "Transmit 0xFF (all ones) in idle cycles";
                    }
                  }
                  description
                    "Value to transmit in idle cycles";
                }
    
                leaf start-end-flag {
                  type enumeration {
                    enum "shared" {
                      value 0;
                      description
                        "Share start/end flags on transmit";
                    }
                    enum "filler" {
                      value 1;
                      description
                        "Send two idle cycles between start/end flags";
                    }
                  }
                  description
                    "Set start/end flags on transmission";
                }
    
                leaf bert-algorithm {
                  type enumeration {
                    enum "pseudo-2e3" {
                      value 0;
                      description
                        "Pattern is 2^3 - 1";
                    }
                    enum "pseudo-2e4" {
                      value 1;
                      description
                        "Pattern is 2^4 - 1";
                    }
                    enum "pseudo-2e5" {
                      value 2;
                      description
                        "Pattern is 2^5 - 1";
                    }
                    enum "pseudo-2e6" {
                      value 3;
                      description
                        "Pattern is 2^6 - 1";
                    }
                    enum "pseudo-2e7" {
                      value 4;
                      description
                        "Pattern is 2^7 - 1";
                    }
                    enum "pseudo-2e9-o153" {
                      value 5;
                      description
                        "Pattern is 2^9 - 1 (per O.153 standard)";
                    }
                    enum "pseudo-2e10" {
                      value 6;
                      description
                        "Pattern is 2^10 - 1";
                    }
                    enum "pseudo-2e11-o152" {
                      value 7;
                      description
                        "Pattern is 2^11 -1 (per O.152 standard)";
                    }
                    enum "pseudo-2e15-o151" {
                      value 8;
                      description
                        "Pattern is 2^15 - 1 (per O.151 standard)";
                    }
                    enum "pseudo-2e17" {
                      value 9;
                      description
                        "Pattern is 2^17 - 1";
                    }
                    enum "pseudo-2e18" {
                      value 10;
                      description
                        "Pattern is 2^18 - 1";
                    }
                    enum "pseudo-2e20-o153" {
                      value 11;
                      description
                        "Pattern is 2^20 - 1 (per O.153 standard)";
                    }
                    enum "pseudo-2e20-o151" {
                      value 12;
                      description
                        "Pattern is 2^20 - 1 (per O.151 standard)";
                    }
                    enum "pseudo-2e21" {
                      value 13;
                      description
                        "Pattern is 2^21 - 1";
                    }
                    enum "pseudo-2e22" {
                      value 14;
                      description
                        "Pattern is 2^22 - 1";
                    }
                    enum "pseudo-2e23-o151" {
                      value 15;
                      description
                        "Pattern is 2^23 (per O.151 standard)";
                    }
                    enum "pseudo-2e25" {
                      value 16;
                      description
                        "Pattern is 2^25 - 1";
                    }
                    enum "pseudo-2e28" {
                      value 17;
                      description
                        "Pattern is 2^28 - 1";
                    }
                    enum "pseudo-2e29" {
                      value 18;
                      description
                        "Pattern is 2^29 - 1";
                    }
                    enum "pseudo-2e31" {
                      value 19;
                      description
                        "Pattern is 2^31 - 1";
                    }
                    enum "pseudo-2e32" {
                      value 20;
                      description
                        "Pattern is 2^32 - 1";
                    }
                    enum "all-ones-repeating" {
                      value 21;
                      description
                        "Repeating one bits";
                    }
                    enum "all-zeros-repeating" {
                      value 22;
                      description
                        "Repeating zero bits";
                    }
                    enum
                      "alternating-ones-zeros" {
                      value 23;
                      description
                        "Alternating ones and zeros";
                    }
                    enum
                      "alternating-double-ones-zeros" {
                      value 24;
                      description
                        "Alternating pairs of ones and zeros";
                    }
                    enum "repeating-3-in-24" {
                      value 25;
                      description
                        "3 bits in 24 are set";
                    }
                    enum "repeating-1-in-8" {
                      value 26;
                      description
                        "1 bit in 8 is set";
                    }
                    enum "repeating-1-in-4" {
                      value 27;
                      description
                        "1 bit in 4 is set";
                    }
                  }
                  description
                    "Set BERT algorithm";
                }
    
                leaf bert-error-rate {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 7";
                    }
                  }
                  description
                    "Bit error rate (10^-n for n > 0, and zero for n = 0)";
                }
    
                leaf bert-period {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 86400";
                    }
                  }
                  units "seconds";
                  description
                    "Length of BERT test";
                }
    
                leaf remote-loopback-respond {
                  type empty;
                  description
                    "Respond to loop requests from remote end";
                }
    
                leaf crc-major-alarm-threshold {
                  type enumeration {
                    enum "1e-3" {
                      value 0;
                      description
                        "1 crc error in 10^3 bits";
                    }
                    enum "5e-4" {
                      value 1;
                      description
                        "5 crc errors in 10^4 bits";
                    }
                    enum "1e-4" {
                      value 2;
                      description
                        "1 crc error in 10^4 bits";
                    }
                    enum "5e-5" {
                      value 3;
                      description
                        "5 crc errors in 10^5 bits";
                    }
                    enum "1e-5" {
                      value 4;
                      description
                        "1 crc error in 10^5 bits";
                    }
                  }
                  default "5e-5";
                  description
                    "CRC Major alarm threshold value";
                }
    
                leaf crc-minor-alarm-threshold {
                  type enumeration {
                    enum "1e-3" {
                      value 0;
                      description
                        "1 crc error in 10^3 bits";
                    }
                    enum "5e-4" {
                      value 1;
                      description
                        "5 crc errors in 10^4 bits";
                    }
                    enum "1e-4" {
                      value 2;
                      description
                        "1 crc error in 10^4 bits";
                    }
                    enum "5e-5" {
                      value 3;
                      description
                        "5 crc errors in 10^5 bits";
                    }
                    enum "1e-5" {
                      value 4;
                      description
                        "1 crc error in 10^5 bits";
                    }
                    enum "5e-6" {
                      value 5;
                      description
                        "5 crc errors in 10^6 bits";
                    }
                    enum "1e-6" {
                      value 6;
                      description
                        "1 crc error in 10^6 bits";
                    }
                  }
                  default "5e-6";
                  description
                    "CRC Minor alarm threshold value";
                }
              }  // container t1-options
    
              container ds0-options {
                junos:must "((!("interfaces ${interface} container-options") || ("interfaces ${interface} container-options container-type" || "interfaces ${interface} container-options allow-configuration-override")))";
                junos:must-message "ds0-options cannot be configured without allow-configuration-override";
                description
                  "DS-0 interface-specific options";
                uses apply-advanced;
    
                leaf loopback {
                  type enumeration {
                    enum "payload" {
                      value 0;
                      description
                        "Payload loopback";
                    }
                  }
                  description "Loopback mode";
                }
    
                leaf byte-encoding {
                  type enumeration {
                    enum "nx64" {
                      value 0;
                      description
                        "8 bits per byte";
                    }
                    enum "nx56" {
                      value 1;
                      description
                        "7 bits per byte";
                    }
                  }
                  description "Byte encoding";
                }
    
                leaf invert-data {
                  type empty;
                  description "Invert data";
                }
    
                leaf fcs {
                  type enumeration {
                    enum "32" {
                      value 0;
                      description "32-bit mode";
                    }
                    enum "16" {
                      value 1;
                      description "16-bit mode";
                    }
                  }
                  description "Frame checksum";
                }
    
                leaf idle-cycle-flag {
                  type enumeration {
                    enum "flags" {
                      value 0;
                      description
                        "Transmit 0x7E in idle cycles";
                    }
                    enum "ones" {
                      value 1;
                      description
                        "Transmit 0xFF (all ones) in idle cycles";
                    }
                  }
                  description
                    "Value to transmit in idle cycles";
                }
    
                leaf start-end-flag {
                  type enumeration {
                    enum "shared" {
                      value 0;
                      description
                        "Share start/end flags on transmit";
                    }
                    enum "filler" {
                      value 1;
                      description
                        "Send two idle cycles between start/end flags";
                    }
                  }
                  description
                    "Set start/end flags on transmission";
                }
    
                leaf bert-algorithm {
                  type enumeration {
                    enum "pseudo-2e11-o152" {
                      value 0;
                      description
                        "Pattern is 2^11 -1 (per O.152 standard)";
                    }
                    enum "pseudo-2e15-o151" {
                      value 1;
                      description
                        "Pattern is 2^15 - 1 (per O.151 standard)";
                    }
                    enum "pseudo-2e20-o153" {
                      value 2;
                      description
                        "Pattern is 2^20 - 1 (per O.153 standard)";
                    }
                    enum "pseudo-2e20-o151" {
                      value 3;
                      description
                        "Pattern is 2^20 - 1 (per O.151 standard)";
                    }
                    enum "all-ones-repeating" {
                      value 4;
                      description
                        "Repeating one bits";
                    }
                    enum "all-zeros-repeating" {
                      value 5;
                      description
                        "Repeating zero bits";
                    }
                    enum
                      "alternating-ones-zeros" {
                      value 6;
                      description
                        "Alternating ones and zeros";
                    }
                    enum
                      "alternating-double-ones-zeros" {
                      value 7;
                      description
                        "Alternating pairs of ones and zeros";
                    }
                    enum "repeating-3-in-24" {
                      value 8;
                      description
                        "3 bits in 24 are set";
                    }
                    enum "repeating-1-in-8" {
                      value 9;
                      description
                        "1 bit in 8 is set";
                    }
                    enum "repeating-1-in-4" {
                      value 10;
                      description
                        "1 bit in 4 is set";
                    }
                    enum "repeating-1-in-16" {
                      value 11;
                      description
                        "1 bit in 16 is set";
                    }
                  }
                  description
                    "Set BERT algorithm";
                }
    
                leaf bert-error-rate {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 7";
                    }
                  }
                  description
                    "Bit error rate (10^-n for n > 0, and zero for n = 0)";
                }
    
                leaf bert-period {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 240";
                    }
                  }
                  units "seconds";
                  description
                    "Length of BERT test";
                }
              }  // container ds0-options
    
              container serial-options {
                description
                  "Serial interface-specific options";
                uses apply-advanced;
    
                leaf line-protocol {
                  type enumeration {
                    enum "eia530" {
                      value 0;
                      description
                        "Line protocol EIA530";
                    }
                    enum "v.35" {
                      value 1;
                      description
                        "Line protocol V.35";
                    }
                    enum "x.21" {
                      value 2;
                      description
                        "Line protocol X.21";
                    }
                  }
                  default "eia530";
                  description
                    "Line protocol to be used";
                }
    
                choice control_leads_choice {
                  container dte-options {
                    description
                      "DTE options/control leads";
                    uses apply-advanced;
    
                    leaf ignore-all {
                      junos:must "(!(".. indication"))";
                      junos:must-message "SERIAL: ignore-all configured when indication explicitly configured";
                      junos:must "(!(".. cts"))";
                      junos:must-message "SERIAL: ignore-all configured when cts explicitly configured";
                      junos:must "(!(".. dsr"))";
                      junos:must-message "SERIAL: ignore-all configured when dsr explicitly configured";
                      junos:must "(!(".. tm"))";
                      junos:must-message "SERIAL: ignore-all configured when tm explicitly configured";
                      junos:must "(!(".. dcd"))";
                      junos:must-message "SERIAL: ignore-all configured when dcd explicitly configured";
                      type empty;
                      description
                        "Ignore all control leads";
                    }
    
                    container dtr {
                      description
                        "Data Transmit Ready signal handling";
                      choice dtr_choices {
                        leaf assert {
                          type empty;
                          description
                            "Assert DTR signal";
                        }
                        leaf de-assert {
                          type empty;
                          description
                            "Deassert DTR signal";
                        }
                        leaf normal {
                          type empty;
                          description
                            "Normal DTR signal";
                        }
                        container auto-synchronize {
                          presence
                            "enable auto-synchronize";
                          description
                            "Normal DTR signal, with autoresynchronization";
                          uses apply-advanced;
    
                          leaf duration {
                            type union {
                              type string {
                                pattern
                                  "<.*>|$.*";
                              }
                              type uint16 {
                                range
                                  "1 .. 1000";
                              }
                            }
                            units "milliseconds";
                            description
                              "Duration of autoresynchronization";
                          }
    
                          leaf interval {
                            type union {
                              type string {
                                pattern
                                  "<.*>|$.*";
                              }
                              type uint16 {
                                range "1 .. 31";
                              }
                            }
                            units "seconds";
                            description
                              "Interval for autoresynchronization";
                          }
                        }  // container auto-synchronize
                      }  // choice dtr_choices
                    }  // container dtr
    
                    leaf control-signal {
                      junos:must "(!(".. .. line-protocol eia530"))";
                      junos:must-message "Control signal  invalid on line-protocol eia530";
                      junos:must "(!(".. .. line-protocol v.35"))";
                      junos:must-message "Control signal invalid on line-protocol v.35";
                      type enumeration {
                        enum "assert" {
                          value 0;
                          description
                            "Assert control signal";
                        }
                        enum "de-assert" {
                          value 1;
                          description
                            "Deassert control signal";
                        }
                        enum "normal" {
                          value 2;
                          description
                            "Normal control signal";
                        }
                      }
                      description
                        "X.21 control signal handling";
                    }
    
                    leaf rts {
                      junos:must "(!(".. .. line-protocol x.21"))";
                      junos:must-message "rts invalid on line-protocol x.21";
                      type enumeration {
                        enum "assert" {
                          value 0;
                          description
                            "Assert RTS signal";
                        }
                        enum "de-assert" {
                          value 1;
                          description
                            "Deassert RTS signal";
                        }
                        enum "normal" {
                          value 2;
                          description
                            "Normal RTS signal";
                        }
                      }
                      description
                        "Request To Send signal handling";
                    }
    
                    leaf dcd {
                      type enumeration {
                        enum "require" {
                          value 0;
                          description
                            "Require DCD signal";
                        }
                        enum "ignore" {
                          value 1;
                          description
                            "Ignore DCD signal";
                        }
                        enum "normal" {
                          value 2;
                          description
                            "Normal DCD signal";
                        }
                      }
                      description
                        "Data Carrier Detect signal handling";
                    }
    
                    leaf dsr {
                      type enumeration {
                        enum "require" {
                          value 0;
                          description
                            "Require DSR signal";
                        }
                        enum "ignore" {
                          value 1;
                          description
                            "Ignore DSR signal";
                        }
                        enum "normal" {
                          value 2;
                          description
                            "Normal DSR signal";
                        }
                      }
                      description
                        "Data Set Ready signal handling";
                    }
    
                    leaf cts {
                      junos:must "(!(".. .. line-protocol x.21"))";
                      junos:must-message "cts invalid on line-protocol x.21";
                      type enumeration {
                        enum "require" {
                          value 0;
                          description
                            "Require CTS signal";
                        }
                        enum "ignore" {
                          value 1;
                          description
                            "Ignore CTS signal";
                        }
                        enum "normal" {
                          value 2;
                          description
                            "Normal CTS signal";
                        }
                      }
                      description
                        "Clear To Send signal handling";
                    }
    
                    leaf indication {
                      junos:must "(!(".. .. line-protocol eia530"))";
                      junos:must-message "Indication   invalid on line-protocol eia530";
                      junos:must "(!(".. .. line-protocol v.35"))";
                      junos:must-message "Indication invalid on line-protocol v.35";
                      type enumeration {
                        enum "require" {
                          value 0;
                          description
                            "Require Indication signal";
                        }
                        enum "ignore" {
                          value 1;
                          description
                            "Ignore Indication signal";
                        }
                        enum "normal" {
                          value 2;
                          description
                            "Normal Indication signal";
                        }
                      }
                      description
                        "X.21 Indication signal handling";
                    }
    
                    leaf tm {
                      type enumeration {
                        enum "require" {
                          value 0;
                          description
                            "Require TM signal";
                        }
                        enum "ignore" {
                          value 1;
                          description
                            "Ignore TM signal";
                        }
                        enum "normal" {
                          value 2;
                          description
                            "Normal TM signal";
                        }
                      }
                      description
                        "Test Mode signal handling";
                    }
                  }  // container dte-options
    
                  case case_2 {
                  }  // case case_2
                }  // choice control_leads_choice
    
                leaf dtr-circuit {
                  junos:must "(!(".. line-protocol x.21"))";
                  junos:must-message "dtr-circuit invalid with line protocol x.21";
                  type enumeration {
                    enum "balanced" {
                      value 0;
                      description
                        "Balanced signal";
                    }
                    enum "unbalanced" {
                      value 1;
                      description
                        "Unbalanced signal";
                    }
                  }
                  description
                    "Data Transmit Ready circuit mode";
                }
    
                leaf dtr-polarity {
                  junos:must "(!(".. line-protocol x.21"))";
                  junos:must-message "dtr-polarity invalid with line protocol x.21";
                  type enumeration {
                    enum "positive" {
                      value 0;
                      description
                        "Positive polarity";
                    }
                    enum "negative" {
                      value 1;
                      description
                        "Negative polarity";
                    }
                  }
                  description
                    "Data Transmit Ready signal polarity";
                }
    
                leaf rts-polarity {
                  junos:must "(!(".. line-protocol x.21"))";
                  junos:must-message "rts invalid on line-protocol x.21";
                  type enumeration {
                    enum "positive" {
                      value 0;
                      description
                        "Positive polarity";
                    }
                    enum "negative" {
                      value 1;
                      description
                        "Negative polarity";
                    }
                  }
                  description
                    "Request To Send signal polarity";
                }
    
                leaf control-polarity {
                  junos:must "(!(".. line-protocol eia530"))";
                  junos:must-message "Control signal  invalid on line-protocol eia530";
                  junos:must "(!(".. line-protocol v.35"))";
                  junos:must-message "Control signal invalid on line-protocol v.35";
                  type enumeration {
                    enum "positive" {
                      value 0;
                      description
                        "Positive polarity";
                    }
                    enum "negative" {
                      value 1;
                      description
                        "Negative polarity";
                    }
                  }
                  description
                    "X.21 Control signal polarity";
                }
    
                leaf dcd-polarity {
                  junos:must "(!(".. line-protocol x.21"))";
                  junos:must-message "dcd-polarity invalid with line protocol x.21";
                  type enumeration {
                    enum "positive" {
                      value 0;
                      description
                        "Positive polarity";
                    }
                    enum "negative" {
                      value 1;
                      description
                        "Negative polarity";
                    }
                  }
                  description
                    "Data Carrier Detect signal polarity";
                }
    
                leaf dsr-polarity {
                  junos:must "(!(".. line-protocol x.21"))";
                  junos:must-message "dsr-polarity invalid with line protocol x.21";
                  type enumeration {
                    enum "positive" {
                      value 0;
                      description
                        "Positive polarity";
                    }
                    enum "negative" {
                      value 1;
                      description
                        "Negative polarity";
                    }
                  }
                  description
                    "Data Set Ready signal polarity";
                }
    
                leaf cts-polarity {
                  junos:must "(!(".. line-protocol x.21"))";
                  junos:must-message "cts invalid on line-protocol x.21";
                  type enumeration {
                    enum "positive" {
                      value 0;
                      description
                        "Positive polarity";
                    }
                    enum "negative" {
                      value 1;
                      description
                        "Negative polarity";
                    }
                  }
                  description
                    "Clear To Send signal polarity";
                }
    
                leaf indication-polarity {
                  junos:must "(!(".. line-protocol eia530"))";
                  junos:must-message "Indication  invalid on line-protocol eia530";
                  junos:must "(!(".. line-protocol v.35"))";
                  junos:must-message "Indication invalid on line-protocol v.35";
                  type enumeration {
                    enum "positive" {
                      value 0;
                      description
                        "Positive polarity";
                    }
                    enum "negative" {
                      value 1;
                      description
                        "Negative polarity";
                    }
                  }
                  description
                    "X.21 Indication signal polarity";
                }
    
                leaf tm-polarity {
                  junos:must "(!(".. line-protocol x.21"))";
                  junos:must-message "tm-polarity invalid for line protocol x.21";
                  junos:must "(!(".. line-protocol v.35"))";
                  junos:must-message "tm-polarity invalid for line protocol v.35";
                  type enumeration {
                    enum "positive" {
                      value 0;
                      description
                        "Positive polarity";
                    }
                    enum "negative" {
                      value 1;
                      description
                        "Negative polarity";
                    }
                  }
                  description
                    "Test Mode signal polarity";
                }
    
                leaf clocking-mode {
                  type enumeration {
                    enum "dce" {
                      value 0;
                      description
                        "DCE timing (DTE mode only, not valid for X.21)";
                    }
                    enum "internal" {
                      value 1;
                      description
                        "Internal baud timing";
                    }
                    enum "loop" {
                      value 2;
                      description "Loop timing";
                    }
                  }
                  description "Clock mode";
                }
    
                leaf transmit-clock {
                  type enumeration {
                    enum "invert" {
                      value 0;
                      description
                        "Shift clock phase 180 degrees";
                    }
                  }
                  description
                    "Transmit clock phase";
                }
    
                leaf clock-rate {
                  type enumeration {
                    enum "2.048mhz" {
                      value 0;
                      description "2.048 MHz";
                    }
                    enum "2.341mhz" {
                      value 1;
                      description "2.341 MHz";
                    }
                    enum "2.731mhz" {
                      value 2;
                      description "2.731 MHz";
                    }
                    enum "3.277mhz" {
                      value 3;
                      description "3.277 MHz";
                    }
                    enum "4.096mhz" {
                      value 4;
                      description "4.096 MHz";
                    }
                    enum "5.461mhz" {
                      value 5;
                      description "5.461 MHz";
                    }
                    enum "8.192mhz" {
                      value 6;
                      description "8.192 MHz";
                    }
                    enum "16.384mhz" {
                      value 7;
                      description "16.384 MHz";
                    }
                    enum "1.2khz" {
                      value 8;
                      description "1.2 KHz";
                    }
                    enum "2.4khz" {
                      value 9;
                      description "2.4 KHz";
                    }
                    enum "9.6khz" {
                      value 10;
                      description "9.6 KHz";
                    }
                    enum "19.2khz" {
                      value 11;
                      description "19.2 KHz";
                    }
                    enum "38.4khz" {
                      value 12;
                      description "38.4 KHz";
                    }
                    enum "56.0khz" {
                      value 13;
                      description "56.0 KHz";
                    }
                    enum "64.0khz" {
                      value 14;
                      description "64.0 KHz";
                    }
                    enum "72.0khz" {
                      value 15;
                      description "72.0 KHz";
                    }
                    enum "125.0khz" {
                      value 16;
                      description "125.0 KHz";
                    }
                    enum "148.0khz" {
                      value 17;
                      description "148.0 KHz";
                    }
                    enum "250.0khz" {
                      value 18;
                      description "250.0 KHz";
                    }
                    enum "500.0khz" {
                      value 19;
                      description "500.0 KHz";
                    }
                    enum "800.0khz" {
                      value 20;
                      description "800.0 KHz";
                    }
                    enum "1.0mhz" {
                      value 21;
                      description "1.0 MHz";
                    }
                    enum "1.3mhz" {
                      value 22;
                      description "1.3 MHz";
                    }
                    enum "2.0mhz" {
                      value 23;
                      description "2.0 MHz";
                    }
                    enum "4.0mhz" {
                      value 24;
                      description "4.0 MHz";
                    }
                    enum "8.0mhz" {
                      value 25;
                      description "8.0 MHz";
                    }
                  }
                  description
                    "Interface clock rate";
                }
    
                leaf loopback {
                  type enumeration {
                    enum "local" {
                      value 0;
                      description
                        "Local loopback";
                    }
                    enum "remote" {
                      value 1;
                      description
                        "Remote/LIU loopback";
                    }
                    enum "dce-local" {
                      value 2;
                      description
                        "DCE local loopback (DTE mode only)";
                    }
                    enum "dce-remote" {
                      value 3;
                      description
                        "DCE remote loopback";
                    }
                  }
                  description "Loopback mode";
                }
    
                leaf encoding {
                  type enumeration {
                    enum "nrz" {
                      value 0;
                      description
                        "Non-Return-To-Zero";
                    }
                    enum "nrzi" {
                      value 1;
                      description
                        "Non-Return-To-Zero-Invertible";
                    }
                  }
                  description "Line encoding";
                }
              }  // container serial-options
    
              choice gratuitous-arp-reply-choice {
                leaf gratuitous-arp-reply {
                  type empty;
                  description
                    "Enable gratuitous ARP reply";
                }
                leaf no-gratuitous-arp-reply {
                  type empty;
                  description
                    "Don't enable gratuitous ARP reply";
                }
              }  // choice gratuitous-arp-reply-choice
    
              choice no-gratuitous-arp-request-choice {
                leaf no-gratuitous-arp-request {
                  type empty;
                  description
                    "Ignore gratuitous ARP request";
                }
                leaf no-no-gratuitous-arp-request {
                  type empty;
                  description
                    "Don't ignore gratuitous ARP request";
                }
              }  // choice no-gratuitous-arp-request-choice
    
              container ether-options {
                description
                  "Ethernet interface-specific options";
                uses apply-advanced;
    
                choice loopback-choice {
                  leaf loopback {
                    type empty;
                    description
                      "Enable loopback";
                  }
                  leaf no-loopback {
                    type empty;
                    description
                      "Don't enable loopback";
                  }
                }  // choice loopback-choice
    
                leaf loopback-remote {
                  junos:must "(!(".. .. optics-options loopback"))";
                  junos:must-message "'optics-options loopback' and loopback-remote are mutually exclusive";
                  junos:must "(!(".. loopback"))";
                  junos:must-message "loopback and loopback-remote are mutually exclusive";
                  type empty;
                  description
                    "Enable remote loopback";
                }
    
                choice source-filtering-choice {
                  leaf source-filtering {
                    type empty;
                    description
                      "Enable source address filtering";
                  }
                  leaf no-source-filtering {
                    type empty;
                    description
                      "Don't enable source address filtering";
                  }
                }  // choice source-filtering-choice
    
                container ethernet-switch-profile {
                  description
                    "Ethernet virtual LAN/media access control-level options";
                  uses apply-advanced;
    
                  leaf-list tag-protocol-id {
                    type string;
                    ordered-by user;
                    description
                      "IEEE 802.1q Tag Protocol Identifier values for VLAN-tagged frames";
                  }
    
                  container ethernet-policer-profile {
                    description
                      "Ethernet level CoS-based policer configuration";
                    uses apply-advanced;
    
                    container input-priority-map {
                      description
                        "Input policer priority map";
                      uses cos_policer_input_priority_map;
                    }  // container input-priority-map
    
                    container output-priority-map {
                      description
                        "Output policer priority map";
                      uses cos_policer_output_priority_map;
                    }  // container output-priority-map
    
                    list policer {
                      key "name";
                      ordered-by user;
                      description
                        "Policer template definition";
                      uses cos_policer;
                    }  // list policer
                  }  // container ethernet-policer-profile
    
                  container storm-control {
                    junos:must "(!(any "interfaces ${interface} unit <*> family ethernet-switching storm-control <*>"))";
                    junos:must-message "An interface cannot have storm control on both family ethernet-switching and ethernet switch profile";
                    description
                      "Storm control profile name to bind";
                    uses apply-advanced;
    
                    leaf profile-name {
                      junos:must "("forwarding-options storm-control-profiles $$")";
                      junos:must-message "Storm profile name must be defined in the [edit forwarding-options storm-control-profiles] hierarchy";
                      type string;
                      description "Profile name";
                    }
                  }  // container storm-control
    
                  container recovery-timeout {
                    junos:must "(!(any "interfaces ${interface} unit <*> family ethernet-switching recovery-timeout <*>"))";
                    junos:must-message "Recovery-timeout can't be configured at IFL level and famlily level simultaneously";
                    description
                      "Recovery timeout for this interface";
                    leaf time-in-seconds {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "10 .. 3600";
                        }
                      }
                      units "seconds";
                    }
                  }  // container recovery-timeout
    
                  choice mac-learn-enable-choice {
                    leaf mac-learn-enable {
                      type empty;
                      description
                        "Learn MAC addresses dynamically";
                    }
                    leaf no-mac-learn-enable {
                      type empty;
                      description
                        "Don't learn MAC addresses dynamically";
                    }
                  }  // choice mac-learn-enable-choice
                }  // container ethernet-switch-profile
    
                leaf asynchronous-notification {
                  type empty;
                  description
                    "Enable sending asynchronous notification to peer on CCC-down";
                }
    
                list source-address-filter {
                  key "name";
                  description
                    "Source address filters";
                  leaf name {
                    type jt:mac-addr;
                    description
                      "Remote MAC address";
                  }
                }  // list source-address-filter
    
                choice auto-negotiation-choice {
                  leaf auto-negotiation {
                    type empty;
                    description
                      "Enable auto-negotiation";
                  }
                  leaf no-auto-negotiation {
                    type empty;
                    description
                      "Don't enable auto-negotiation";
                  }
                }  // choice auto-negotiation-choice
    
                choice flow-control-choice {
                  leaf flow-control {
                    type empty;
                    description
                      "Enable flow control";
                  }
                  leaf no-flow-control {
                    type empty;
                    description
                      "Don't enable flow control";
                  }
                }  // choice flow-control-choice
    
                leaf link-mode {
                  type enumeration {
                    enum "automatic" {
                      value 0;
                      description
                        "Automatic negotiate duplex ";
                    }
                    enum "half-duplex" {
                      value 1;
                      description
                        "Half-duplex operation";
                    }
                    enum "full-duplex" {
                      value 2;
                      description
                        "Full-duplex operation";
                    }
                  }
                  description "Link duplex";
                }
    
                container mpls {
                  description "MPLS options";
                  uses mpls_ifd_options;
                }  // container mpls
    
                leaf ignore-l3-incompletes {
                  type empty;
                  description
                    "Ignore L3 incomplete errors";
                }
    
                leaf no-auto-mdix {
                  type empty;
                  description
                    "Disable auto MDI/MDIX";
                }
    
                leaf fec {
                  type enumeration {
                    enum "none" {
                      value 0;
                      description "FEC disabled";
                    }
                    enum "fec91" {
                      value 1;
                      description
                        "IEEE 802.3bj Clause 91, Reed-Solomon FEC (RS-FEC)";
                    }
                    enum "fec74" {
                      value 2;
                      description
                        "FEC74 enabled";
                    }
                    enum "fec108" {
                      value 3;
                      description
                        "IEEE 802.3by Clause 108, Reed-Solomon FEC (RS-FEC) on 25g links";
                    }
                  }
                  description
                    "Forward Error Correction mode";
                }
    
                container speed {
                  description "Specify speed";
                  choice automatic {
                    container auto-negotiation {
                      presence
                        "enable auto-negotiation";
                      description
                        "Enable auto-negotiation";
                      leaf auto-negotiate-10-100 {
                        type empty;
                        description
                          "Limits the auto-negotiation to 10m/100m only";
                      }
                    }  // container auto-negotiation
                    leaf ethernet-10m {
                      type empty;
                      description "10Mbps";
                    }
                    leaf ethernet-100m {
                      type empty;
                      description "100Mbps";
                    }
                    leaf ethernet-1g {
                      type empty;
                      description "1Gbps";
                    }
                    leaf ethernet-10g {
                      type empty;
                      description "10Gbps";
                    }
                  }  // choice automatic
                }  // container speed
    
                container ieee-802.3ad {
                  junos:must "(!("system autoinstallation"))";
                  junos:must-message "incompatible with 'system autoinstallation'";
                  description "IEEE 802.3ad";
                  uses apply-advanced;
    
                  container lacp {
                    description
                      "Link Aggregation Control Protocol configuration";
                    uses apply-advanced;
    
                    leaf force-up {
                      type empty;
                      description
                        "Keep the port up in absence of received LACPDU";
                    }
    
                    leaf port-priority {
                      type union {
                        type uint16;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Priority of the port (0 ... 65535)";
                    }
                  }  // container lacp
    
                  leaf bundle {
                    junos:must "(!(".. .. .. gigether-options 802.3ad"))";
                    junos:must-message "Member link cannot be a part of multiple aggregation group";
                    junos:must "(!(".. .. .. vlan-offload"))";
                    junos:must-message "ae child device vlan-offload is not allowed";
                    junos:must "(!(".. .. .. flow-control"))";
                    junos:must-message "Setting flow-control on ae child device is not allowed";
                    junos:must "(!(".. .. .. mtu"))";
                    junos:must-message "Setting mtu on ae child device is not allowed";
                    junos:must "(!(".. .. .. vlan-vci-tagging"))";
                    junos:must-message "ae child device vlan-vci-tagging is not allowed";
                    junos:must "(!(".. .. .. stacked-vlan-tagging"))";
                    junos:must-message "ae child device stacked-vlan-tagging is not allowed";
                    junos:must "(!(".. .. .. flexible-vlan-tagging"))";
                    junos:must-message "ae child device flexible-vlan-tagging is not allowed";
                    junos:must "(!(".. .. .. vlan-tagging"))";
                    junos:must-message "ae child device vlan-tagging is not allowed";
                    junos:must "(!(".. .. .. passive-monitor-mode"))";
                    junos:must-message "802.3ad not valid for passive-monitor-mode";
                    type union {
                      type jt:interface-device;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description
                      "Join an aggregated Ethernet interface";
                  }
    
                  choice type {
                    leaf primary {
                      type empty;
                      description
                        "Primary interface for link-protection mode";
                    }
                    leaf backup {
                      type empty;
                      description
                        "Backup interface for link-protection mode";
                    }
                  }  // choice type
    
                  container link-protection-sub-group {
                    description
                      "Link Protection subgroup configuration";
                    uses apply-advanced;
    
                    leaf subgroup-name {
                      type string {
                        length "2 .. 64";
                      }
                      description
                        "Name of the subgroup";
                    }
                  }  // container link-protection-sub-group
    
                  leaf port-priority {
                    type union {
                      type uint16;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description
                      "Link protection Priority of the port (0 ... 65535)";
                  }
                }  // container ieee-802.3ad
    
                leaf ieee-802-3az-eee {
                  type empty;
                  description
                    "IEEE 802.3az Energy Efficient Ethernet(EEE)";
                }
    
                leaf mdi-mode {
                  type enumeration {
                    enum "auto" {
                      value 0;
                      description
                        "Automatic mdi/mdi-x mode";
                    }
                    enum "force" {
                      value 1;
                      description
                        "Enable auto-MDIX always";
                    }
                    enum "mdi" {
                      value 2;
                      description
                        "MDI(straight through) mode";
                    }
                    enum "mdix" {
                      value 3;
                      description
                        "MDI Cross-over mode";
                    }
                  }
                  description
                    "Cable cross-over mode";
                }
    
                leaf autostate-exclude {
                  type empty;
                  description
                    "Interface will not contribute to IRB state";
                }
              }  // container ether-options
    
              container fibrechannel-options {
                description
                  "Fibre Channel interface-specific options";
                uses apply-advanced;
    
                choice loopback-choice {
                  leaf loopback {
                    type empty;
                    description
                      "Enable loopback";
                  }
                  leaf no-loopback {
                    type empty;
                    description
                      "Don't enable loopback";
                  }
                }  // choice loopback-choice
    
                leaf bb-sc-n {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "0 .. 15";
                    }
                  }
                  description
                    "B2B state change number";
                }
    
                leaf speed {
                  type enumeration {
                    enum "auto-negotiation" {
                      value 0;
                      description
                        "Enable auto-negotiation";
                    }
                    enum "1g" {
                      value 1;
                      description "1Gbps";
                    }
                    enum "2g" {
                      value 2;
                      description "2Gbps";
                    }
                    enum "4g" {
                      value 3;
                      description "4Gbps";
                    }
                    enum "8g" {
                      value 4;
                      description "8Gbps";
                    }
                  }
                  description "Specify speed";
                }
              }  // container fibrechannel-options
    
              container gigether-options {
                description
                  "Gigabit Ethernet interface-specific options";
                uses apply-advanced;
    
                choice loopback-choice {
                  leaf loopback {
                    type empty;
                    description
                      "Enable loopback";
                  }
                  leaf no-loopback {
                    type empty;
                    description
                      "Don't enable loopback";
                  }
                }  // choice loopback-choice
    
                leaf loopback-remote {
                  junos:must "(!(".. .. optics-options loopback"))";
                  junos:must-message "'optics-options loopback' and loopback-remote are mutually exclusive";
                  junos:must "(!(".. loopback"))";
                  junos:must-message "loopback and loopback-remote are mutually exclusive";
                  type empty;
                  description
                    "Enable remote loopback";
                }
    
                choice flow-control-choice {
                  leaf flow-control {
                    type empty;
                    description
                      "Enable flow control";
                  }
                  leaf no-flow-control {
                    type empty;
                    description
                      "Don't enable flow control";
                  }
                }  // choice flow-control-choice
    
                choice source-filtering-choice {
                  leaf source-filtering {
                    type empty;
                    description
                      "Enable source address filtering";
                  }
                  leaf no-source-filtering {
                    type empty;
                    description
                      "Don't enable source address filtering";
                  }
                }  // choice source-filtering-choice
    
                choice auto_negotiation_option {
                  leaf no-auto-negotiation {
                    type empty;
                    description
                      "Disable auto-negotiation";
                  }
                  container auto-negotiation {
                    presence
                      "enable auto-negotiation";
                    description
                      "Enable auto-negotiation";
                    leaf remote-fault {
                      type enumeration {
                        enum
                          "local-interface-offline" {
                          value 0;
                          description
                            "Disable local interface";
                        }
                        enum
                          "local-interface-online" {
                          value 1;
                          description
                            "Enable local interface";
                        }
                      }
                    }
                  }  // container auto-negotiation
                }  // choice auto_negotiation_option
    
                leaf asynchronous-notification {
                  type empty;
                  description
                    "Enable sending asynchronous notification to peer on CCC-down";
                }
    
                list source-address-filter {
                  key "name";
                  description
                    "Source address filters";
                  leaf name {
                    type jt:mac-addr;
                    description
                      "Remote MAC address";
                  }
                }  // list source-address-filter
    
                container ieee-802.3ad {
                  junos:must "(!("system autoinstallation"))";
                  junos:must-message "incompatible with 'system autoinstallation'";
                  description "IEEE 802.3ad";
                  uses apply-advanced;
    
                  container lacp {
                    description
                      "Link Aggregation Control Protocol configuration";
                    uses apply-advanced;
    
                    leaf port-priority {
                      type union {
                        type uint16;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Priority of the port (0 ... 65535)";
                    }
                  }  // container lacp
    
                  leaf bundle {
                    junos:must "(!(".. .. .. ether-options 802.3ad"))";
                    junos:must-message "Member link cannot be a part of multiple aggregation group";
                    junos:must "(!(".. .. .. vlan-offload"))";
                    junos:must-message "ae child device vlan-offload is not allowed";
                    junos:must "(!(".. .. .. flow-control"))";
                    junos:must-message "Setting flow-control on ae child device is not allowed";
                    junos:must "(!(".. .. .. mtu"))";
                    junos:must-message "Setting mtu on ae child device is not allowed";
                    junos:must "(!(".. .. .. vlan-vci-tagging"))";
                    junos:must-message "ae child device vlan-vci-tagging is not allowed";
                    junos:must "(!(".. .. .. stacked-vlan-tagging"))";
                    junos:must-message "ae child device stacked-vlan-tagging is not allowed";
                    junos:must "(!(".. .. .. flexible-vlan-tagging"))";
                    junos:must-message "ae child device flexible-vlan-tagging is not allowed";
                    junos:must "(!(".. .. .. vlan-tagging"))";
                    junos:must-message "ae child device vlan-tagging is not allowed";
                    junos:must "(!(".. .. .. passive-monitor-mode"))";
                    junos:must-message "802.3ad not valid for passive-monitor-mode";
                    type union {
                      type jt:interface-device;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description
                      "Join an aggregated Ethernet interface";
                  }
    
                  choice type {
                    leaf primary {
                      type empty;
                      description
                        "Primary interface for link-protection mode";
                    }
                    leaf backup {
                      type empty;
                      description
                        "Backup interface for link-protection mode";
                    }
                  }  // choice type
                }  // container ieee-802.3ad
    
                container ethernet-switch-profile {
                  description
                    "Ethernet virtual LAN/media access control-level options";
                  uses apply-advanced;
    
                  leaf-list tag-protocol-id {
                    type string;
                    ordered-by user;
                    description
                      "IEEE 802.1q Tag Protocol Identifier values for VLAN-tagged frames";
                  }
    
                  container ethernet-policer-profile {
                    description
                      "Ethernet level CoS-based policer configuration";
                    uses apply-advanced;
    
                    container ieee802.1-priority-map {
                      presence
                        "enable ieee802.1-priority-map";
                      status deprecated;
                      description
                        "Premium priority values for IEEE 802.1p bits";
                      uses apply-advanced;
    
                      leaf-list premium {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "0 .. 7";
                          }
                        }
                        ordered-by user;
                        description
                          "Premium policer priority map";
                      }
                    }  // container ieee802.1-priority-map
    
                    container input-priority-map {
                      description
                        "Input policer priority map";
                      uses cos_policer_input_priority_map;
                    }  // container input-priority-map
    
                    container output-priority-map {
                      description
                        "Output policer priority map";
                      uses cos_policer_output_priority_map;
                    }  // container output-priority-map
    
                    list policer {
                      key "name";
                      ordered-by user;
                      description
                        "Policer template definition";
                      uses cos_policer;
                    }  // list policer
                  }  // container ethernet-policer-profile
    
                  container accept-from {
                    status deprecated;
                    description
                      "Accept traffic from or to specified remote MAC";
                    uses apply-advanced;
    
                    list mac-address {
                      key "name";
                      description "Remote MAC";
                      uses mac_list;
                    }  // list mac-address
                  }  // container accept-from
    
                  choice reject-the-rest-choice {
                    leaf reject-the-rest {
                      type empty;
                      status deprecated;
                      description
                        "Accept traffic from only the specified MAC addresses";
                    }
                    leaf no-reject-the-rest {
                      type empty;
                      status deprecated;
                      description
                        "Don't accept traffic from only the specified MAC addresses";
                    }
                  }  // choice reject-the-rest-choice
    
                  leaf mac-learn-enable {
                    type empty;
                    description
                      "Learn MAC addresses dynamically";
                  }
                }  // container ethernet-switch-profile
    
                container mpls {
                  description "MPLS options";
                  uses mpls_ifd_options;
                }  // container mpls
    
                leaf ignore-l3-incompletes {
                  type empty;
                  description
                    "Ignore L3 incomplete errors";
                }
    
                leaf ieee-802-3az-eee {
                  type empty;
                  description
                    "IEEE 802.3az Energy Efficient Ethernet(EEE)";
                }
    
                leaf fec {
                  type enumeration {
                    enum "none" {
                      value 0;
                      description "FEC disabled";
                    }
                    enum "fec91" {
                      value 1;
                      description
                        "IEEE 802.3bj Clause 91, Reed-Solomon FEC (RS-FEC)";
                    }
                    enum "fec74" {
                      value 2;
                      description
                        "FEC74 enabled";
                    }
                    enum "fec108" {
                      value 3;
                      description
                        "IEEE 802.3by Clause 108, Reed-Solomon FEC (RS-FEC) on 25g links";
                    }
                  }
                  description
                    "Forward Error Correction mode";
                }
              }  // container gigether-options
    
              container optics-options {
                description "Optics options";
                uses apply-advanced;
    
                leaf wavelength {
                  type enumeration {
                    enum "1568.77" {
                      value 0;
                      description
                        "1568.77 nm/191.1003 THz 50/100Ghz spacing";
                    }
                    enum "1568.36" {
                      value 1;
                      description
                        "1568.36 nm/191.15000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1568.31" {
                      value 2;
                      description
                        "1568.31 nm/191.15625 THz 6.25GHz spacing";
                    }
                    enum "1568.26" {
                      value 3;
                      description
                        "1568.26 nm/191.16250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1568.21" {
                      value 4;
                      description
                        "1568.21 nm/191.16875 THz 6.25GHz spacing";
                    }
                    enum "1568.16" {
                      value 5;
                      description
                        "1568.16 nm/191.17500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1568.11" {
                      value 6;
                      description
                        "1568.11 nm/191.18125 THz 6.25GHz spacing";
                    }
                    enum "1568.05" {
                      value 7;
                      description
                        "1568.05 nm/191.18750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1568.00" {
                      value 8;
                      description
                        "1568.00 nm/191.19375 THz 6.25GHz spacing";
                    }
                    enum "1567.95" {
                      value 9;
                      description
                        "1567.95 nm/191.20000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1567.90" {
                      value 10;
                      description
                        "1567.90 nm/191.20625 THz 6.25GHz spacing";
                    }
                    enum "1567.85" {
                      value 11;
                      description
                        "1567.85 nm/191.21250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1567.80" {
                      value 12;
                      description
                        "1567.80 nm/191.21875 THz 6.25GHz spacing";
                    }
                    enum "1567.75" {
                      value 13;
                      description
                        "1567.75 nm/191.22500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1567.70" {
                      value 14;
                      description
                        "1567.70 nm/191.23125 THz 6.25GHz spacing";
                    }
                    enum "1567.64" {
                      value 15;
                      description
                        "1567.64 nm/191.23750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1567.59" {
                      value 16;
                      description
                        "1567.59 nm/191.24375 THz 6.25GHz spacing";
                    }
                    enum "1567.54" {
                      value 17;
                      description
                        "1567.54 nm/191.25000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1567.49" {
                      value 18;
                      description
                        "1567.49 nm/191.25625 THz 6.25GHz spacing";
                    }
                    enum "1567.44" {
                      value 19;
                      description
                        "1567.44 nm/191.26250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1567.39" {
                      value 20;
                      description
                        "1567.39 nm/191.26875 THz 6.25GHz spacing";
                    }
                    enum "1567.34" {
                      value 21;
                      description
                        "1567.34 nm/191.27500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1567.29" {
                      value 22;
                      description
                        "1567.29 nm/191.28125 THz 6.25GHz spacing";
                    }
                    enum "1567.23" {
                      value 23;
                      description
                        "1567.23 nm/191.28750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1567.18" {
                      value 24;
                      description
                        "1567.18 nm/191.29375 THz 6.25GHz spacing";
                    }
                    enum "1567.13" {
                      value 25;
                      description
                        "1567.13 nm/191.30000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1567.08" {
                      value 26;
                      description
                        "1567.08 nm/191.30625 THz 6.25GHz spacing";
                    }
                    enum "1567.03" {
                      value 27;
                      description
                        "1567.03 nm/191.31250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1566.98" {
                      value 28;
                      description
                        "1566.98 nm/191.31875 THz 6.25GHz spacing";
                    }
                    enum "1566.93" {
                      value 29;
                      description
                        "1566.93 nm/191.32500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1566.88" {
                      value 30;
                      description
                        "1566.88 nm/191.33125 THz 6.25GHz spacing";
                    }
                    enum "1566.83" {
                      value 31;
                      description
                        "1566.83 nm/191.33750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1566.77" {
                      value 32;
                      description
                        "1566.77 nm/191.34375 THz 6.25GHz spacing";
                    }
                    enum "1566.72" {
                      value 33;
                      description
                        "1566.72 nm/191.35000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1566.67" {
                      value 34;
                      description
                        "1566.67 nm/191.35625 THz 6.25GHz spacing";
                    }
                    enum "1566.62" {
                      value 35;
                      description
                        "1566.62 nm/191.36250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1566.57" {
                      value 36;
                      description
                        "1566.57 nm/191.36875 THz 6.25GHz spacing";
                    }
                    enum "1566.52" {
                      value 37;
                      description
                        "1566.52 nm/191.37500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1566.47" {
                      value 38;
                      description
                        "1566.47 nm/191.38125 THz 6.25GHz spacing";
                    }
                    enum "1566.42" {
                      value 39;
                      description
                        "1566.42 nm/191.38750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1566.36" {
                      value 40;
                      description
                        "1566.36 nm/191.39375 THz 6.25GHz spacing";
                    }
                    enum "1566.31" {
                      value 41;
                      description
                        "1566.31 nm/191.40000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1566.26" {
                      value 42;
                      description
                        "1566.26 nm/191.40625 THz 6.25GHz spacing";
                    }
                    enum "1566.21" {
                      value 43;
                      description
                        "1566.21 nm/191.41250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1566.16" {
                      value 44;
                      description
                        "1566.16 nm/191.41875 THz 6.25GHz spacing";
                    }
                    enum "1566.11" {
                      value 45;
                      description
                        "1566.11 nm/191.42500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1566.06" {
                      value 46;
                      description
                        "1566.06 nm/191.43125 THz 6.25GHz spacing";
                    }
                    enum "1566.01" {
                      value 47;
                      description
                        "1566.01 nm/191.43750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1565.96" {
                      value 48;
                      description
                        "1565.96 nm/191.44375 THz 6.25GHz spacing";
                    }
                    enum "1565.90" {
                      value 49;
                      description
                        "1565.90 nm/191.45000 THz 6.25/12.5/50/75GHz spacing";
                    }
                    enum "1565.85" {
                      value 50;
                      description
                        "1565.85 nm/191.45625 THz 6.25GHz spacing";
                    }
                    enum "1565.80" {
                      value 51;
                      description
                        "1565.80 nm/191.46250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1565.75" {
                      value 52;
                      description
                        "1565.75 nm/191.46875 THz 6.25GHz spacing";
                    }
                    enum "1565.70" {
                      value 53;
                      description
                        "1565.70 nm/191.47500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1565.65" {
                      value 54;
                      description
                        "1565.65 nm/191.48125 THz 6.25GHz spacing";
                    }
                    enum "1565.60" {
                      value 55;
                      description
                        "1565.60 nm/191.48750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1565.55" {
                      value 56;
                      description
                        "1565.55 nm/191.49375 THz 6.25GHz spacing";
                    }
                    enum "1565.50" {
                      value 57;
                      description
                        "1565.50 nm/191.50000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1565.44" {
                      value 58;
                      description
                        "1565.44 nm/191.50625 THz 6.25GHz spacing";
                    }
                    enum "1565.39" {
                      value 59;
                      description
                        "1565.39 nm/191.51250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1565.34" {
                      value 60;
                      description
                        "1565.34 nm/191.51875 THz 6.25GHz spacing";
                    }
                    enum "1565.29" {
                      value 61;
                      description
                        "1565.29 nm/191.52500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1565.24" {
                      value 62;
                      description
                        "1565.24 nm/191.53125 THz 6.25GHz spacing";
                    }
                    enum "1565.19" {
                      value 63;
                      description
                        "1565.19 nm/191.53750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1565.14" {
                      value 64;
                      description
                        "1565.14 nm/191.54375 THz 6.25GHz spacing";
                    }
                    enum "1565.09" {
                      value 65;
                      description
                        "1565.09 nm/191.55000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1565.04" {
                      value 66;
                      description
                        "1565.04 nm/191.55625 THz 6.25GHz spacing";
                    }
                    enum "1564.99" {
                      value 67;
                      description
                        "1564.99 nm/191.56250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1564.93" {
                      value 68;
                      description
                        "1564.93 nm/191.56875 THz 6.25GHz spacing";
                    }
                    enum "1564.88" {
                      value 69;
                      description
                        "1564.88 nm/191.57500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1564.83" {
                      value 70;
                      description
                        "1564.83 nm/191.58125 THz 6.25GHz spacing";
                    }
                    enum "1564.78" {
                      value 71;
                      description
                        "1564.78 nm/191.58750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1564.73" {
                      value 72;
                      description
                        "1564.73 nm/191.59375 THz 6.25GHz spacing";
                    }
                    enum "1564.68" {
                      value 73;
                      description
                        "1564.68 nm/191.60000 THz 6.25/12.5/50/75/100GHz spacing";
                    }
                    enum "1564.63" {
                      value 74;
                      description
                        "1564.63 nm/191.60625 THz 6.25GHz spacing";
                    }
                    enum "1564.58" {
                      value 75;
                      description
                        "1564.58 nm/191.61250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1564.53" {
                      value 76;
                      description
                        "1564.53 nm/191.61875 THz 6.25GHz spacing";
                    }
                    enum "1564.47" {
                      value 77;
                      description
                        "1564.47 nm/191.62500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1564.42" {
                      value 78;
                      description
                        "1564.42 nm/191.63125 THz 6.25GHz spacing";
                    }
                    enum "1564.37" {
                      value 79;
                      description
                        "1564.37 nm/191.63750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1564.32" {
                      value 80;
                      description
                        "1564.32 nm/191.64375 THz 6.25GHz spacing";
                    }
                    enum "1564.27" {
                      value 81;
                      description
                        "1564.27 nm/191.65000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1564.22" {
                      value 82;
                      description
                        "1564.22 nm/191.65625 THz 6.25GHz spacing";
                    }
                    enum "1564.17" {
                      value 83;
                      description
                        "1564.17 nm/191.66250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1564.12" {
                      value 84;
                      description
                        "1564.12 nm/191.66875 THz 6.25GHz spacing";
                    }
                    enum "1564.07" {
                      value 85;
                      description
                        "1564.07 nm/191.67500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1564.02" {
                      value 86;
                      description
                        "1564.02 nm/191.68125 THz 6.25GHz spacing";
                    }
                    enum "1563.96" {
                      value 87;
                      description
                        "1563.96 nm/191.68750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1563.91" {
                      value 88;
                      description
                        "1563.91 nm/191.69375 THz 6.25GHz spacing";
                    }
                    enum "1563.86" {
                      value 89;
                      description
                        "1563.86 nm/191.70000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1563.81" {
                      value 90;
                      description
                        "1563.81 nm/191.70625 THz 6.25GHz spacing";
                    }
                    enum "1563.76" {
                      value 91;
                      description
                        "1563.76 nm/191.71250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1563.71" {
                      value 92;
                      description
                        "1563.71 nm/191.71875 THz 6.25GHz spacing";
                    }
                    enum "1563.66" {
                      value 93;
                      description
                        "1563.66 nm/191.72500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1563.61" {
                      value 94;
                      description
                        "1563.61 nm/191.73125 THz 6.25GHz spacing";
                    }
                    enum "1563.56" {
                      value 95;
                      description
                        "1563.56 nm/191.73750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1563.51" {
                      value 96;
                      description
                        "1563.51 nm/191.74375 THz 6.25GHz spacing";
                    }
                    enum "1563.45" {
                      value 97;
                      description
                        "1563.45 nm/191.75000 THz 6.25/12.5/50/75GHz spacing";
                    }
                    enum "1563.40" {
                      value 98;
                      description
                        "1563.40 nm/191.75625 THz 6.25GHz spacing";
                    }
                    enum "1563.35" {
                      value 99;
                      description
                        "1563.35 nm/191.76250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1563.30" {
                      value 100;
                      description
                        "1563.30 nm/191.76875 THz 6.25GHz spacing";
                    }
                    enum "1563.25" {
                      value 101;
                      description
                        "1563.25 nm/191.77500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1563.20" {
                      value 102;
                      description
                        "1563.20 nm/191.78125 THz 6.25GHz spacing";
                    }
                    enum "1563.15" {
                      value 103;
                      description
                        "1563.15 nm/191.78750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1563.10" {
                      value 104;
                      description
                        "1563.10 nm/191.79375 THz 6.25GHz spacing";
                    }
                    enum "1563.05" {
                      value 105;
                      description
                        "1563.05 nm/191.80000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1563.00" {
                      value 106;
                      description
                        "1563.00 nm/191.80625 THz 6.25GHz spacing";
                    }
                    enum "1562.95" {
                      value 107;
                      description
                        "1562.95 nm/191.81250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1562.89" {
                      value 108;
                      description
                        "1562.89 nm/191.81875 THz 6.25GHz spacing";
                    }
                    enum "1562.84" {
                      value 109;
                      description
                        "1562.84 nm/191.82500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1562.79" {
                      value 110;
                      description
                        "1562.79 nm/191.83125 THz 6.25GHz spacing";
                    }
                    enum "1562.74" {
                      value 111;
                      description
                        "1562.74 nm/191.83750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1562.69" {
                      value 112;
                      description
                        "1562.69 nm/191.84375 THz 6.25GHz spacing";
                    }
                    enum "1562.64" {
                      value 113;
                      description
                        "1562.64 nm/191.85000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1562.59" {
                      value 114;
                      description
                        "1562.59 nm/191.85625 THz 6.25GHz spacing";
                    }
                    enum "1562.54" {
                      value 115;
                      description
                        "1562.54 nm/191.86250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1562.49" {
                      value 116;
                      description
                        "1562.49 nm/191.86875 THz 6.25GHz spacing";
                    }
                    enum "1562.44" {
                      value 117;
                      description
                        "1562.44 nm/191.87500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1562.39" {
                      value 118;
                      description
                        "1562.39 nm/191.88125 THz 6.25GHz spacing";
                    }
                    enum "1562.33" {
                      value 119;
                      description
                        "1562.33 nm/191.88750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1562.28" {
                      value 120;
                      description
                        "1562.28 nm/191.89375 THz 6.25GHz spacing";
                    }
                    enum "1562.23" {
                      value 121;
                      description
                        "1562.23 nm/191.90000 THz 6.25/12.5/50/75/100GHz spacing";
                    }
                    enum "1562.18" {
                      value 122;
                      description
                        "1562.18 nm/191.90625 THz 6.25GHz spacing";
                    }
                    enum "1562.13" {
                      value 123;
                      description
                        "1562.13 nm/191.91250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1562.08" {
                      value 124;
                      description
                        "1562.08 nm/191.91875 THz 6.25GHz spacing";
                    }
                    enum "1562.03" {
                      value 125;
                      description
                        "1562.03 nm/191.92500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1561.98" {
                      value 126;
                      description
                        "1561.98 nm/191.93125 THz 6.25GHz spacing";
                    }
                    enum "1561.93" {
                      value 127;
                      description
                        "1561.93 nm/191.93750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1561.88" {
                      value 128;
                      description
                        "1561.88 nm/191.94375 THz 6.25GHz spacing";
                    }
                    enum "1561.83" {
                      value 129;
                      description
                        "1561.83 nm/191.95000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1561.77" {
                      value 130;
                      description
                        "1561.77 nm/191.95625 THz 6.25GHz spacing";
                    }
                    enum "1561.72" {
                      value 131;
                      description
                        "1561.72 nm/191.96250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1561.67" {
                      value 132;
                      description
                        "1561.67 nm/191.96875 THz 6.25GHz spacing";
                    }
                    enum "1561.62" {
                      value 133;
                      description
                        "1561.62 nm/191.97500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1561.57" {
                      value 134;
                      description
                        "1561.57 nm/191.98125 THz 6.25GHz spacing";
                    }
                    enum "1561.52" {
                      value 135;
                      description
                        "1561.52 nm/191.98750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1561.47" {
                      value 136;
                      description
                        "1561.47 nm/191.99375 THz 6.25GHz spacing";
                    }
                    enum "1561.42" {
                      value 137;
                      description
                        "1561.42 nm/192.00000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1561.37" {
                      value 138;
                      description
                        "1561.37 nm/192.00625 THz 6.25GHz spacing";
                    }
                    enum "1561.32" {
                      value 139;
                      description
                        "1561.32 nm/192.01250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1561.27" {
                      value 140;
                      description
                        "1561.27 nm/192.01875 THz 6.25GHz spacing";
                    }
                    enum "1561.22" {
                      value 141;
                      description
                        "1561.22 nm/192.02500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1561.16" {
                      value 142;
                      description
                        "1561.16 nm/192.03125 THz 6.25GHz spacing";
                    }
                    enum "1561.11" {
                      value 143;
                      description
                        "1561.11 nm/192.03750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1561.06" {
                      value 144;
                      description
                        "1561.06 nm/192.04375 THz 6.25GHz spacing";
                    }
                    enum "1561.01" {
                      value 145;
                      description
                        "1561.01 nm/192.05000 THz 6.25/12.5/50G/75Hz spacing";
                    }
                    enum "1560.96" {
                      value 146;
                      description
                        "1560.96 nm/192.05625 THz 6.25GHz spacing";
                    }
                    enum "1560.91" {
                      value 147;
                      description
                        "1560.91 nm/192.06250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1560.86" {
                      value 148;
                      description
                        "1560.86 nm/192.06875 THz 6.25GHz spacing";
                    }
                    enum "1560.81" {
                      value 149;
                      description
                        "1560.81 nm/192.07500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1560.76" {
                      value 150;
                      description
                        "1560.76 nm/192.08125 THz 6.25GHz spacing";
                    }
                    enum "1560.71" {
                      value 151;
                      description
                        "1560.71 nm/192.08750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1560.66" {
                      value 152;
                      description
                        "1560.66 nm/192.09375 THz 6.25GHz spacing";
                    }
                    enum "1560.61" {
                      value 153;
                      description
                        "1560.61 nm/192.10000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1560.56" {
                      value 154;
                      description
                        "1560.56 nm/192.10625 THz 6.25GHz spacing";
                    }
                    enum "1560.50" {
                      value 155;
                      description
                        "1560.50 nm/192.11250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1560.45" {
                      value 156;
                      description
                        "1560.45 nm/192.11875 THz 6.25GHz spacing";
                    }
                    enum "1560.40" {
                      value 157;
                      description
                        "1560.40 nm/192.12500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1560.35" {
                      value 158;
                      description
                        "1560.35 nm/192.13125 THz 6.25GHz spacing";
                    }
                    enum "1560.30" {
                      value 159;
                      description
                        "1560.30 nm/192.13750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1560.25" {
                      value 160;
                      description
                        "1560.25 nm/192.14375 THz 6.25GHz spacing";
                    }
                    enum "1560.20" {
                      value 161;
                      description
                        "1560.20 nm/192.15000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1560.15" {
                      value 162;
                      description
                        "1560.15 nm/192.15625 THz 6.25GHz spacing";
                    }
                    enum "1560.10" {
                      value 163;
                      description
                        "1560.10 nm/192.16250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1560.05" {
                      value 164;
                      description
                        "1560.05 nm/192.16875 THz 6.25GHz spacing";
                    }
                    enum "1560.00" {
                      value 165;
                      description
                        "1560.00 nm/192.17500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1559.95" {
                      value 166;
                      description
                        "1559.95 nm/192.18125 THz 6.25GHz spacing";
                    }
                    enum "1559.90" {
                      value 167;
                      description
                        "1559.90 nm/192.18750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1559.84" {
                      value 168;
                      description
                        "1559.84 nm/192.19375 THz 6.25GHz spacing";
                    }
                    enum "1559.79" {
                      value 169;
                      description
                        "1559.79 nm/192.20000 THz 6.25/12.5/50/75/100GHz spacing";
                    }
                    enum "1559.74" {
                      value 170;
                      description
                        "1559.74 nm/192.20625 THz 6.25GHz spacing";
                    }
                    enum "1559.69" {
                      value 171;
                      description
                        "1559.69 nm/192.21250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1559.64" {
                      value 172;
                      description
                        "1559.64 nm/192.21875 THz 6.25GHz spacing";
                    }
                    enum "1559.59" {
                      value 173;
                      description
                        "1559.59 nm/192.22500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1559.54" {
                      value 174;
                      description
                        "1559.54 nm/192.23125 THz 6.25GHz spacing";
                    }
                    enum "1559.49" {
                      value 175;
                      description
                        "1559.49 nm/192.23750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1559.44" {
                      value 176;
                      description
                        "1559.44 nm/192.24375 THz 6.25GHz spacing";
                    }
                    enum "1559.39" {
                      value 177;
                      description
                        "1559.39 nm/192.25000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1559.34" {
                      value 178;
                      description
                        "1559.34 nm/192.25625 THz 6.25GHz spacing";
                    }
                    enum "1559.29" {
                      value 179;
                      description
                        "1559.29 nm/192.26250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1559.24" {
                      value 180;
                      description
                        "1559.24 nm/192.26875 THz 6.25GHz spacing";
                    }
                    enum "1559.19" {
                      value 181;
                      description
                        "1559.19 nm/192.27500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1559.14" {
                      value 182;
                      description
                        "1559.14 nm/192.28125 THz 6.25GHz spacing";
                    }
                    enum "1559.08" {
                      value 183;
                      description
                        "1559.08 nm/192.28750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1559.03" {
                      value 184;
                      description
                        "1559.03 nm/192.29375 THz 6.25GHz spacing";
                    }
                    enum "1558.98" {
                      value 185;
                      description
                        "1558.98 nm/192.30000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1558.93" {
                      value 186;
                      description
                        "1558.93 nm/192.30625 THz 6.25GHz spacing";
                    }
                    enum "1558.88" {
                      value 187;
                      description
                        "1558.88 nm/192.31250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1558.83" {
                      value 188;
                      description
                        "1558.83 nm/192.31875 THz 6.25GHz spacing";
                    }
                    enum "1558.78" {
                      value 189;
                      description
                        "1558.78 nm/192.32500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1558.73" {
                      value 190;
                      description
                        "1558.73 nm/192.33125 THz 6.25GHz spacing";
                    }
                    enum "1558.68" {
                      value 191;
                      description
                        "1558.68 nm/192.33750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1558.63" {
                      value 192;
                      description
                        "1558.63 nm/192.34375 THz 6.25GHz spacing";
                    }
                    enum "1558.58" {
                      value 193;
                      description
                        "1558.58 nm/192.35000 THz 6.25/12.5/50/75GHz spacing";
                    }
                    enum "1558.53" {
                      value 194;
                      description
                        "1558.53 nm/192.35625 THz 6.25GHz spacing";
                    }
                    enum "1558.48" {
                      value 195;
                      description
                        "1558.48 nm/192.36250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1558.43" {
                      value 196;
                      description
                        "1558.43 nm/192.36875 THz 6.25GHz spacing";
                    }
                    enum "1558.38" {
                      value 197;
                      description
                        "1558.38 nm/192.37500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1558.32" {
                      value 198;
                      description
                        "1558.32 nm/192.38125 THz 6.25GHz spacing";
                    }
                    enum "1558.27" {
                      value 199;
                      description
                        "1558.27 nm/192.38750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1558.22" {
                      value 200;
                      description
                        "1558.22 nm/192.39375 THz 6.25GHz spacing";
                    }
                    enum "1558.17" {
                      value 201;
                      description
                        "1558.17 nm/192.40000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1558.12" {
                      value 202;
                      description
                        "1558.12 nm/192.40625 THz 6.25GHz spacing";
                    }
                    enum "1558.07" {
                      value 203;
                      description
                        "1558.07 nm/192.41250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1558.02" {
                      value 204;
                      description
                        "1558.02 nm/192.41875 THz 6.25GHz spacing";
                    }
                    enum "1557.97" {
                      value 205;
                      description
                        "1557.97 nm/192.42500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1557.92" {
                      value 206;
                      description
                        "1557.92 nm/192.43125 THz 6.25GHz spacing";
                    }
                    enum "1557.87" {
                      value 207;
                      description
                        "1557.87 nm/192.43750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1557.82" {
                      value 208;
                      description
                        "1557.82 nm/192.44375 THz 6.25GHz spacing";
                    }
                    enum "1557.77" {
                      value 209;
                      description
                        "1557.77 nm/192.45000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1557.72" {
                      value 210;
                      description
                        "1557.72 nm/192.45625 THz 6.25GHz spacing";
                    }
                    enum "1557.67" {
                      value 211;
                      description
                        "1557.67 nm/192.46250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1557.62" {
                      value 212;
                      description
                        "1557.62 nm/192.46875 THz 6.25GHz spacing";
                    }
                    enum "1557.57" {
                      value 213;
                      description
                        "1557.57 nm/192.47500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1557.52" {
                      value 214;
                      description
                        "1557.52 nm/192.48125 THz 6.25GHz spacing";
                    }
                    enum "1557.46" {
                      value 215;
                      description
                        "1557.46 nm/192.48750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1557.41" {
                      value 216;
                      description
                        "1557.41 nm/192.49375 THz 6.25GHz spacing";
                    }
                    enum "1557.36" {
                      value 217;
                      description
                        "1557.36 nm/192.50000 THz 6.25/12.5/50/75/100GHz spacing";
                    }
                    enum "1557.31" {
                      value 218;
                      description
                        "1557.31 nm/192.50625 THz 6.25GHz spacing";
                    }
                    enum "1557.26" {
                      value 219;
                      description
                        "1557.26 nm/192.51250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1557.21" {
                      value 220;
                      description
                        "1557.21 nm/192.51875 THz 6.25GHz spacing";
                    }
                    enum "1557.16" {
                      value 221;
                      description
                        "1557.16 nm/192.52500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1557.11" {
                      value 222;
                      description
                        "1557.11 nm/192.53125 THz 6.25GHz spacing";
                    }
                    enum "1557.06" {
                      value 223;
                      description
                        "1557.06 nm/192.53750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1557.01" {
                      value 224;
                      description
                        "1557.01 nm/192.54375 THz 6.25GHz spacing";
                    }
                    enum "1556.96" {
                      value 225;
                      description
                        "1556.96 nm/192.55000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1556.91" {
                      value 226;
                      description
                        "1556.91 nm/192.55625 THz 6.25GHz spacing";
                    }
                    enum "1556.86" {
                      value 227;
                      description
                        "1556.86 nm/192.56250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1556.81" {
                      value 228;
                      description
                        "1556.81 nm/192.56875 THz 6.25GHz spacing";
                    }
                    enum "1556.76" {
                      value 229;
                      description
                        "1556.76 nm/192.57500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1556.71" {
                      value 230;
                      description
                        "1556.71 nm/192.58125 THz 6.25GHz spacing";
                    }
                    enum "1556.66" {
                      value 231;
                      description
                        "1556.66 nm/192.58750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1556.61" {
                      value 232;
                      description
                        "1556.61 nm/192.59375 THz 6.25GHz spacing";
                    }
                    enum "1556.55" {
                      value 233;
                      description
                        "1556.55 nm/192.60000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1556.50" {
                      value 234;
                      description
                        "1556.50 nm/192.60625 THz 6.25GHz spacing";
                    }
                    enum "1556.45" {
                      value 235;
                      description
                        "1556.45 nm/192.61250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1556.40" {
                      value 236;
                      description
                        "1556.40 nm/192.61875 THz 6.25GHz spacing";
                    }
                    enum "1556.35" {
                      value 237;
                      description
                        "1556.35 nm/192.62500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1556.30" {
                      value 238;
                      description
                        "1556.30 nm/192.63125 THz 6.25GHz spacing";
                    }
                    enum "1556.25" {
                      value 239;
                      description
                        "1556.25 nm/192.63750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1556.20" {
                      value 240;
                      description
                        "1556.20 nm/192.64375 THz 6.25GHz spacing";
                    }
                    enum "1556.15" {
                      value 241;
                      description
                        "1556.15 nm/192.65000 THz 6.25/12.5/50/75GHz spacing";
                    }
                    enum "1556.10" {
                      value 242;
                      description
                        "1556.10 nm/192.65625 THz 6.25GHz spacing";
                    }
                    enum "1556.05" {
                      value 243;
                      description
                        "1556.05 nm/192.66250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1556.00" {
                      value 244;
                      description
                        "1556.00 nm/192.66875 THz 6.25GHz spacing";
                    }
                    enum "1555.95" {
                      value 245;
                      description
                        "1555.95 nm/192.67500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1555.90" {
                      value 246;
                      description
                        "1555.90 nm/192.68125 THz 6.25GHz spacing";
                    }
                    enum "1555.85" {
                      value 247;
                      description
                        "1555.85 nm/192.68750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1555.80" {
                      value 248;
                      description
                        "1555.80 nm/192.69375 THz 6.25GHz spacing";
                    }
                    enum "1555.75" {
                      value 249;
                      description
                        "1555.75 nm/192.70000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1555.70" {
                      value 250;
                      description
                        "1555.70 nm/192.70625 THz 6.25GHz spacing";
                    }
                    enum "1555.65" {
                      value 251;
                      description
                        "1555.65 nm/192.71250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1555.60" {
                      value 252;
                      description
                        "1555.60 nm/192.71875 THz 6.25GHz spacing";
                    }
                    enum "1555.55" {
                      value 253;
                      description
                        "1555.55 nm/192.72500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1555.49" {
                      value 254;
                      description
                        "1555.49 nm/192.73125 THz 6.25GHz spacing";
                    }
                    enum "1555.44" {
                      value 255;
                      description
                        "1555.44 nm/192.73750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1555.39" {
                      value 256;
                      description
                        "1555.39 nm/192.74375 THz 6.25GHz spacing";
                    }
                    enum "1555.34" {
                      value 257;
                      description
                        "1555.34 nm/192.75000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1555.29" {
                      value 258;
                      description
                        "1555.29 nm/192.75625 THz 6.25GHz spacing";
                    }
                    enum "1555.24" {
                      value 259;
                      description
                        "1555.24 nm/192.76250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1555.19" {
                      value 260;
                      description
                        "1555.19 nm/192.76875 THz 6.25GHz spacing";
                    }
                    enum "1555.14" {
                      value 261;
                      description
                        "1555.14 nm/192.77500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1555.09" {
                      value 262;
                      description
                        "1555.09 nm/192.78125 THz 6.25GHz spacing";
                    }
                    enum "1555.04" {
                      value 263;
                      description
                        "1555.04 nm/192.78750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1554.99" {
                      value 264;
                      description
                        "1554.99 nm/192.79375 THz 6.25GHz spacing";
                    }
                    enum "1554.94" {
                      value 265;
                      description
                        "1554.94 nm/192.80000 THz 6.25/12.5/50/75/100GHz spacing";
                    }
                    enum "1554.89" {
                      value 266;
                      description
                        "1554.89 nm/192.80625 THz 6.25GHz spacing";
                    }
                    enum "1554.84" {
                      value 267;
                      description
                        "1554.84 nm/192.81250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1554.79" {
                      value 268;
                      description
                        "1554.79 nm/192.81875 THz 6.25GHz spacing";
                    }
                    enum "1554.74" {
                      value 269;
                      description
                        "1554.74 nm/192.82500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1554.69" {
                      value 270;
                      description
                        "1554.69 nm/192.83125 THz 6.25GHz spacing";
                    }
                    enum "1554.64" {
                      value 271;
                      description
                        "1554.64 nm/192.83750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1554.59" {
                      value 272;
                      description
                        "1554.59 nm/192.84375 THz 6.25GHz spacing";
                    }
                    enum "1554.54" {
                      value 273;
                      description
                        "1554.54 nm/192.85000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1554.49" {
                      value 274;
                      description
                        "1554.49 nm/192.85625 THz 6.25GHz spacing";
                    }
                    enum "1554.44" {
                      value 275;
                      description
                        "1554.44 nm/192.86250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1554.39" {
                      value 276;
                      description
                        "1554.39 nm/192.86875 THz 6.25GHz spacing";
                    }
                    enum "1554.34" {
                      value 277;
                      description
                        "1554.34 nm/192.87500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1554.29" {
                      value 278;
                      description
                        "1554.29 nm/192.88125 THz 6.25GHz spacing";
                    }
                    enum "1554.23" {
                      value 279;
                      description
                        "1554.23 nm/192.88750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1554.18" {
                      value 280;
                      description
                        "1554.18 nm/192.89375 THz 6.25GHz spacing";
                    }
                    enum "1554.13" {
                      value 281;
                      description
                        "1554.13 nm/192.90000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1554.08" {
                      value 282;
                      description
                        "1554.08 nm/192.90625 THz 6.25GHz spacing";
                    }
                    enum "1554.03" {
                      value 283;
                      description
                        "1554.03 nm/192.91250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1553.98" {
                      value 284;
                      description
                        "1553.98 nm/192.91875 THz 6.25GHz spacing";
                    }
                    enum "1553.93" {
                      value 285;
                      description
                        "1553.93 nm/192.92500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1553.88" {
                      value 286;
                      description
                        "1553.88 nm/192.93125 THz 6.25GHz spacing";
                    }
                    enum "1553.83" {
                      value 287;
                      description
                        "1553.83 nm/192.93750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1553.78" {
                      value 288;
                      description
                        "1553.78 nm/192.94375 THz 6.25GHz spacing";
                    }
                    enum "1553.73" {
                      value 289;
                      description
                        "1553.73 nm/192.95000 THz 6.25/12.5/50/75GHz spacing";
                    }
                    enum "1553.68" {
                      value 290;
                      description
                        "1553.68 nm/192.95625 THz 6.25GHz spacing";
                    }
                    enum "1553.63" {
                      value 291;
                      description
                        "1553.63 nm/192.96250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1553.58" {
                      value 292;
                      description
                        "1553.58 nm/192.96875 THz 6.25GHz spacing";
                    }
                    enum "1553.53" {
                      value 293;
                      description
                        "1553.53 nm/192.97500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1553.48" {
                      value 294;
                      description
                        "1553.48 nm/192.98125 THz 6.25GHz spacing";
                    }
                    enum "1553.43" {
                      value 295;
                      description
                        "1553.43 nm/192.98750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1553.38" {
                      value 296;
                      description
                        "1553.38 nm/192.99375 THz 6.25GHz spacing";
                    }
                    enum "1553.33" {
                      value 297;
                      description
                        "1553.33 nm/193.00000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1553.28" {
                      value 298;
                      description
                        "1553.28 nm/193.00625 THz 6.25GHz spacing";
                    }
                    enum "1553.23" {
                      value 299;
                      description
                        "1553.23 nm/193.01250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1553.18" {
                      value 300;
                      description
                        "1553.18 nm/193.01875 THz 6.25GHz spacing";
                    }
                    enum "1553.13" {
                      value 301;
                      description
                        "1553.13 nm/193.02500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1553.08" {
                      value 302;
                      description
                        "1553.08 nm/193.03125 THz 6.25GHz spacing";
                    }
                    enum "1553.03" {
                      value 303;
                      description
                        "1553.03 nm/193.03750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1552.98" {
                      value 304;
                      description
                        "1552.98 nm/193.04375 THz 6.25GHz spacing";
                    }
                    enum "1552.93" {
                      value 305;
                      description
                        "1552.93 nm/193.05000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1552.88" {
                      value 306;
                      description
                        "1552.88 nm/193.05625 THz 6.25GHz spacing";
                    }
                    enum "1552.83" {
                      value 307;
                      description
                        "1552.83 nm/193.06250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1552.78" {
                      value 308;
                      description
                        "1552.78 nm/193.06875 THz 6.25GHz spacing";
                    }
                    enum "1552.73" {
                      value 309;
                      description
                        "1552.73 nm/193.07500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1552.68" {
                      value 310;
                      description
                        "1552.68 nm/193.08125 THz 6.25GHz spacing";
                    }
                    enum "1552.62" {
                      value 311;
                      description
                        "1552.62 nm/193.08750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1552.57" {
                      value 312;
                      description
                        "1552.57 nm/193.09375 THz 6.25GHz spacing";
                    }
                    enum "1552.52" {
                      value 313;
                      description
                        "1552.52 nm/193.10000 THz 6.25/12.5/50/75/100GHz spacing";
                    }
                    enum "1552.47" {
                      value 314;
                      description
                        "1552.47 nm/193.10625 THz 6.25GHz spacing";
                    }
                    enum "1552.42" {
                      value 315;
                      description
                        "1552.42 nm/193.11250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1552.37" {
                      value 316;
                      description
                        "1552.37 nm/193.11875 THz 6.25GHz spacing";
                    }
                    enum "1552.32" {
                      value 317;
                      description
                        "1552.32 nm/193.12500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1552.27" {
                      value 318;
                      description
                        "1552.27 nm/193.13125 THz 6.25GHz spacing";
                    }
                    enum "1552.22" {
                      value 319;
                      description
                        "1552.22 nm/193.13750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1552.17" {
                      value 320;
                      description
                        "1552.17 nm/193.14375 THz 6.25GHz spacing";
                    }
                    enum "1552.12" {
                      value 321;
                      description
                        "1552.12 nm/193.15000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1552.07" {
                      value 322;
                      description
                        "1552.07 nm/193.15625 THz 6.25GHz spacing";
                    }
                    enum "1552.02" {
                      value 323;
                      description
                        "1552.02 nm/193.16250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1551.97" {
                      value 324;
                      description
                        "1551.97 nm/193.16875 THz 6.25GHz spacing";
                    }
                    enum "1551.92" {
                      value 325;
                      description
                        "1551.92 nm/193.17500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1551.87" {
                      value 326;
                      description
                        "1551.87 nm/193.18125 THz 6.25GHz spacing";
                    }
                    enum "1551.82" {
                      value 327;
                      description
                        "1551.82 nm/193.18750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1551.77" {
                      value 328;
                      description
                        "1551.77 nm/193.19375 THz 6.25GHz spacing";
                    }
                    enum "1551.72" {
                      value 329;
                      description
                        "1551.72 nm/193.20000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1551.67" {
                      value 330;
                      description
                        "1551.67 nm/193.20625 THz 6.25GHz spacing";
                    }
                    enum "1551.62" {
                      value 331;
                      description
                        "1551.62 nm/193.21250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1551.57" {
                      value 332;
                      description
                        "1551.57 nm/193.21875 THz 6.25GHz spacing";
                    }
                    enum "1551.52" {
                      value 333;
                      description
                        "1551.52 nm/193.22500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1551.47" {
                      value 334;
                      description
                        "1551.47 nm/193.23125 THz 6.25GHz spacing";
                    }
                    enum "1551.42" {
                      value 335;
                      description
                        "1551.42 nm/193.23750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1551.37" {
                      value 336;
                      description
                        "1551.37 nm/193.24375 THz 6.25GHz spacing";
                    }
                    enum "1551.32" {
                      value 337;
                      description
                        "1551.32 nm/193.25000 THz 6.25/12.5/50/75GHz spacing";
                    }
                    enum "1551.27" {
                      value 338;
                      description
                        "1551.27 nm/193.25625 THz 6.25GHz spacing";
                    }
                    enum "1551.22" {
                      value 339;
                      description
                        "1551.22 nm/193.26250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1551.17" {
                      value 340;
                      description
                        "1551.17 nm/193.26875 THz 6.25GHz spacing";
                    }
                    enum "1551.12" {
                      value 341;
                      description
                        "1551.12 nm/193.27500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1551.07" {
                      value 342;
                      description
                        "1551.07 nm/193.28125 THz 6.25GHz spacing";
                    }
                    enum "1551.02" {
                      value 343;
                      description
                        "1551.02 nm/193.28750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1550.97" {
                      value 344;
                      description
                        "1550.97 nm/193.29375 THz 6.25GHz spacing";
                    }
                    enum "1550.92" {
                      value 345;
                      description
                        "1550.92 nm/193.30000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1550.87" {
                      value 346;
                      description
                        "1550.87 nm/193.30625 THz 6.25GHz spacing";
                    }
                    enum "1550.82" {
                      value 347;
                      description
                        "1550.82 nm/193.31250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1550.77" {
                      value 348;
                      description
                        "1550.77 nm/193.31875 THz 6.25GHz spacing";
                    }
                    enum "1550.72" {
                      value 349;
                      description
                        "1550.72 nm/193.32500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1550.67" {
                      value 350;
                      description
                        "1550.67 nm/193.33125 THz 6.25GHz spacing";
                    }
                    enum "1550.62" {
                      value 351;
                      description
                        "1550.62 nm/193.33750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1550.57" {
                      value 352;
                      description
                        "1550.57 nm/193.34375 THz 6.25GHz spacing";
                    }
                    enum "1550.52" {
                      value 353;
                      description
                        "1550.52 nm/193.35000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1550.47" {
                      value 354;
                      description
                        "1550.47 nm/193.35625 THz 6.25GHz spacing";
                    }
                    enum "1550.42" {
                      value 355;
                      description
                        "1550.42 nm/193.36250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1550.37" {
                      value 356;
                      description
                        "1550.37 nm/193.36875 THz 6.25GHz spacing";
                    }
                    enum "1550.32" {
                      value 357;
                      description
                        "1550.32 nm/193.37500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1550.27" {
                      value 358;
                      description
                        "1550.27 nm/193.38125 THz 6.25GHz spacing";
                    }
                    enum "1550.22" {
                      value 359;
                      description
                        "1550.22 nm/193.38750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1550.17" {
                      value 360;
                      description
                        "1550.17 nm/193.39375 THz 6.25GHz spacing";
                    }
                    enum "1550.12" {
                      value 361;
                      description
                        "1550.12 nm/193.40000 THz 6.25/12.5/50/75/100GHz spacing";
                    }
                    enum "1550.07" {
                      value 362;
                      description
                        "1550.07 nm/193.40625 THz 6.25GHz spacing";
                    }
                    enum "1550.02" {
                      value 363;
                      description
                        "1550.02 nm/193.41250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1549.97" {
                      value 364;
                      description
                        "1549.97 nm/193.41875 THz 6.25GHz spacing";
                    }
                    enum "1549.92" {
                      value 365;
                      description
                        "1549.92 nm/193.42500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1549.87" {
                      value 366;
                      description
                        "1549.87 nm/193.43125 THz 6.25GHz spacing";
                    }
                    enum "1549.82" {
                      value 367;
                      description
                        "1549.82 nm/193.43750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1549.77" {
                      value 368;
                      description
                        "1549.77 nm/193.44375 THz 6.25GHz spacing";
                    }
                    enum "1549.72" {
                      value 369;
                      description
                        "1549.72 nm/193.45000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1549.67" {
                      value 370;
                      description
                        "1549.67 nm/193.45625 THz 6.25GHz spacing";
                    }
                    enum "1549.62" {
                      value 371;
                      description
                        "1549.62 nm/193.46250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1549.57" {
                      value 372;
                      description
                        "1549.57 nm/193.46875 THz 6.25GHz spacing";
                    }
                    enum "1549.52" {
                      value 373;
                      description
                        "1549.52 nm/193.47500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1549.47" {
                      value 374;
                      description
                        "1549.47 nm/193.48125 THz 6.25GHz spacing";
                    }
                    enum "1549.42" {
                      value 375;
                      description
                        "1549.42 nm/193.48750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1549.37" {
                      value 376;
                      description
                        "1549.37 nm/193.49375 THz 6.25GHz spacing";
                    }
                    enum "1549.32" {
                      value 377;
                      description
                        "1549.32 nm/193.50000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1549.26" {
                      value 378;
                      description
                        "1549.26 nm/193.50625 THz 6.25GHz spacing";
                    }
                    enum "1549.21" {
                      value 379;
                      description
                        "1549.21 nm/193.51250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1549.16" {
                      value 380;
                      description
                        "1549.16 nm/193.51875 THz 6.25GHz spacing";
                    }
                    enum "1549.11" {
                      value 381;
                      description
                        "1549.11 nm/193.52500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1549.06" {
                      value 382;
                      description
                        "1549.06 nm/193.53125 THz 6.25GHz spacing";
                    }
                    enum "1549.01" {
                      value 383;
                      description
                        "1549.01 nm/193.53750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1548.96" {
                      value 384;
                      description
                        "1548.96 nm/193.54375 THz 6.25GHz spacing";
                    }
                    enum "1548.91" {
                      value 385;
                      description
                        "1548.91 nm/193.55000 THz 6.25/12.5/50G/75Hz spacing";
                    }
                    enum "1548.86" {
                      value 386;
                      description
                        "1548.86 nm/193.55625 THz 6.25GHz spacing";
                    }
                    enum "1548.81" {
                      value 387;
                      description
                        "1548.81 nm/193.56250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1548.76" {
                      value 388;
                      description
                        "1548.76 nm/193.56875 THz 6.25GHz spacing";
                    }
                    enum "1548.71" {
                      value 389;
                      description
                        "1548.71 nm/193.57500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1548.66" {
                      value 390;
                      description
                        "1548.66 nm/193.58125 THz 6.25GHz spacing";
                    }
                    enum "1548.61" {
                      value 391;
                      description
                        "1548.61 nm/193.58750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1548.56" {
                      value 392;
                      description
                        "1548.56 nm/193.59375 THz 6.25GHz spacing";
                    }
                    enum "1548.51" {
                      value 393;
                      description
                        "1548.51 nm/193.60000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1548.46" {
                      value 394;
                      description
                        "1548.46 nm/193.60625 THz 6.25GHz spacing";
                    }
                    enum "1548.41" {
                      value 395;
                      description
                        "1548.41 nm/193.61250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1548.36" {
                      value 396;
                      description
                        "1548.36 nm/193.61875 THz 6.25GHz spacing";
                    }
                    enum "1548.31" {
                      value 397;
                      description
                        "1548.31 nm/193.62500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1548.26" {
                      value 398;
                      description
                        "1548.26 nm/193.63125 THz 6.25GHz spacing";
                    }
                    enum "1548.21" {
                      value 399;
                      description
                        "1548.21 nm/193.63750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1548.16" {
                      value 400;
                      description
                        "1548.16 nm/193.64375 THz 6.25GHz spacing";
                    }
                    enum "1548.11" {
                      value 401;
                      description
                        "1548.11 nm/193.65000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1548.06" {
                      value 402;
                      description
                        "1548.06 nm/193.65625 THz 6.25GHz spacing";
                    }
                    enum "1548.02" {
                      value 403;
                      description
                        "1548.02 nm/193.66250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1547.97" {
                      value 404;
                      description
                        "1547.97 nm/193.66875 THz 6.25GHz spacing";
                    }
                    enum "1547.92" {
                      value 405;
                      description
                        "1547.92 nm/193.67500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1547.87" {
                      value 406;
                      description
                        "1547.87 nm/193.68125 THz 6.25GHz spacing";
                    }
                    enum "1547.82" {
                      value 407;
                      description
                        "1547.82 nm/193.68750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1547.77" {
                      value 408;
                      description
                        "1547.77 nm/193.69375 THz 6.25GHz spacing";
                    }
                    enum "1547.72" {
                      value 409;
                      description
                        "1547.72 nm/193.70000 THz 6.25/12.5/50/75/100GHz spacing";
                    }
                    enum "1547.67" {
                      value 410;
                      description
                        "1547.67 nm/193.70625 THz 6.25GHz spacing";
                    }
                    enum "1547.62" {
                      value 411;
                      description
                        "1547.62 nm/193.71250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1547.57" {
                      value 412;
                      description
                        "1547.57 nm/193.71875 THz 6.25GHz spacing";
                    }
                    enum "1547.52" {
                      value 413;
                      description
                        "1547.52 nm/193.72500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1547.47" {
                      value 414;
                      description
                        "1547.47 nm/193.73125 THz 6.25GHz spacing";
                    }
                    enum "1547.42" {
                      value 415;
                      description
                        "1547.42 nm/193.73750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1547.37" {
                      value 416;
                      description
                        "1547.37 nm/193.74375 THz 6.25GHz spacing";
                    }
                    enum "1547.32" {
                      value 417;
                      description
                        "1547.32 nm/193.75000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1547.27" {
                      value 418;
                      description
                        "1547.27 nm/193.75625 THz 6.25GHz spacing";
                    }
                    enum "1547.22" {
                      value 419;
                      description
                        "1547.22 nm/193.76250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1547.17" {
                      value 420;
                      description
                        "1547.17 nm/193.76875 THz 6.25GHz spacing";
                    }
                    enum "1547.12" {
                      value 421;
                      description
                        "1547.12 nm/193.77500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1547.07" {
                      value 422;
                      description
                        "1547.07 nm/193.78125 THz 6.25GHz spacing";
                    }
                    enum "1547.02" {
                      value 423;
                      description
                        "1547.02 nm/193.78750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1546.97" {
                      value 424;
                      description
                        "1546.97 nm/193.79375 THz 6.25GHz spacing";
                    }
                    enum "1546.92" {
                      value 425;
                      description
                        "1546.92 nm/193.80000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1546.87" {
                      value 426;
                      description
                        "1546.87 nm/193.80625 THz 6.25GHz spacing";
                    }
                    enum "1546.82" {
                      value 427;
                      description
                        "1546.82 nm/193.81250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1546.77" {
                      value 428;
                      description
                        "1546.77 nm/193.81875 THz 6.25GHz spacing";
                    }
                    enum "1546.72" {
                      value 429;
                      description
                        "1546.72 nm/193.82500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1546.67" {
                      value 430;
                      description
                        "1546.67 nm/193.83125 THz 6.25GHz spacing";
                    }
                    enum "1546.62" {
                      value 431;
                      description
                        "1546.62 nm/193.83750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1546.57" {
                      value 432;
                      description
                        "1546.57 nm/193.84375 THz 6.25GHz spacing";
                    }
                    enum "1546.52" {
                      value 433;
                      description
                        "1546.52 nm/193.85000 THz 6.25/12.5/50/75GHz spacing";
                    }
                    enum "1546.47" {
                      value 434;
                      description
                        "1546.47 nm/193.85625 THz 6.25GHz spacing";
                    }
                    enum "1546.42" {
                      value 435;
                      description
                        "1546.42 nm/193.86250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1546.37" {
                      value 436;
                      description
                        "1546.37 nm/193.86875 THz 6.25GHz spacing";
                    }
                    enum "1546.32" {
                      value 437;
                      description
                        "1546.32 nm/193.87500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1546.27" {
                      value 438;
                      description
                        "1546.27 nm/193.88125 THz 6.25GHz spacing";
                    }
                    enum "1546.22" {
                      value 439;
                      description
                        "1546.22 nm/193.88750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1546.17" {
                      value 440;
                      description
                        "1546.17 nm/193.89375 THz 6.25GHz spacing";
                    }
                    enum "1546.12" {
                      value 441;
                      description
                        "1546.12 nm/193.90000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1546.07" {
                      value 442;
                      description
                        "1546.07 nm/193.90625 THz 6.25GHz spacing";
                    }
                    enum "1546.02" {
                      value 443;
                      description
                        "1546.02 nm/193.91250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1545.97" {
                      value 444;
                      description
                        "1545.97 nm/193.91875 THz 6.25GHz spacing";
                    }
                    enum "1545.92" {
                      value 445;
                      description
                        "1545.92 nm/193.92500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1545.87" {
                      value 446;
                      description
                        "1545.87 nm/193.93125 THz 6.25GHz spacing";
                    }
                    enum "1545.82" {
                      value 447;
                      description
                        "1545.82 nm/193.93750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1545.77" {
                      value 448;
                      description
                        "1545.77 nm/193.94375 THz 6.25GHz spacing";
                    }
                    enum "1545.72" {
                      value 449;
                      description
                        "1545.72 nm/193.95000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1545.67" {
                      value 450;
                      description
                        "1545.67 nm/193.95625 THz 6.25GHz spacing";
                    }
                    enum "1545.62" {
                      value 451;
                      description
                        "1545.62 nm/193.96250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1545.57" {
                      value 452;
                      description
                        "1545.57 nm/193.96875 THz 6.25GHz spacing";
                    }
                    enum "1545.52" {
                      value 453;
                      description
                        "1545.52 nm/193.97500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1545.47" {
                      value 454;
                      description
                        "1545.47 nm/193.98125 THz 6.25GHz spacing";
                    }
                    enum "1545.42" {
                      value 455;
                      description
                        "1545.42 nm/193.98750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1545.37" {
                      value 456;
                      description
                        "1545.37 nm/193.99375 THz 6.25GHz spacing";
                    }
                    enum "1545.32" {
                      value 457;
                      description
                        "1545.32 nm/194.00000 THz 6.25/12.5/50/75/100GHz spacing";
                    }
                    enum "1545.27" {
                      value 458;
                      description
                        "1545.27 nm/194.00625 THz 6.25GHz spacing";
                    }
                    enum "1545.22" {
                      value 459;
                      description
                        "1545.22 nm/194.01250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1545.17" {
                      value 460;
                      description
                        "1545.17 nm/194.01875 THz 6.25GHz spacing";
                    }
                    enum "1545.12" {
                      value 461;
                      description
                        "1545.12 nm/194.02500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1545.07" {
                      value 462;
                      description
                        "1545.07 nm/194.03125 THz 6.25GHz spacing";
                    }
                    enum "1545.02" {
                      value 463;
                      description
                        "1545.02 nm/194.03750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1544.97" {
                      value 464;
                      description
                        "1544.97 nm/194.04375 THz 6.25GHz spacing";
                    }
                    enum "1544.92" {
                      value 465;
                      description
                        "1544.92 nm/194.05000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1544.87" {
                      value 466;
                      description
                        "1544.87 nm/194.05625 THz 6.25GHz spacing";
                    }
                    enum "1544.82" {
                      value 467;
                      description
                        "1544.82 nm/194.06250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1544.77" {
                      value 468;
                      description
                        "1544.77 nm/194.06875 THz 6.25GHz spacing";
                    }
                    enum "1544.72" {
                      value 469;
                      description
                        "1544.72 nm/194.07500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1544.68" {
                      value 470;
                      description
                        "1544.68 nm/194.08125 THz 6.25GHz spacing";
                    }
                    enum "1544.63" {
                      value 471;
                      description
                        "1544.63 nm/194.08750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1544.58" {
                      value 472;
                      description
                        "1544.58 nm/194.09375 THz 6.25GHz spacing";
                    }
                    enum "1544.53" {
                      value 473;
                      description
                        "1544.53 nm/194.10000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1544.48" {
                      value 474;
                      description
                        "1544.48 nm/194.10625 THz 6.25GHz spacing";
                    }
                    enum "1544.43" {
                      value 475;
                      description
                        "1544.43 nm/194.11250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1544.38" {
                      value 476;
                      description
                        "1544.38 nm/194.11875 THz 6.25GHz spacing";
                    }
                    enum "1544.33" {
                      value 477;
                      description
                        "1544.33 nm/194.12500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1544.28" {
                      value 478;
                      description
                        "1544.28 nm/194.13125 THz 6.25GHz spacing";
                    }
                    enum "1544.23" {
                      value 479;
                      description
                        "1544.23 nm/194.13750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1544.18" {
                      value 480;
                      description
                        "1544.18 nm/194.14375 THz 6.25GHz spacing";
                    }
                    enum "1544.13" {
                      value 481;
                      description
                        "1544.13 nm/194.15000 THz 6.25/12.5/50/75GHz spacing";
                    }
                    enum "1544.08" {
                      value 482;
                      description
                        "1544.08 nm/194.15625 THz 6.25GHz spacing";
                    }
                    enum "1544.03" {
                      value 483;
                      description
                        "1544.03 nm/194.16250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1543.98" {
                      value 484;
                      description
                        "1543.98 nm/194.16875 THz 6.25GHz spacing";
                    }
                    enum "1543.93" {
                      value 485;
                      description
                        "1543.93 nm/194.17500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1543.88" {
                      value 486;
                      description
                        "1543.88 nm/194.18125 THz 6.25GHz spacing";
                    }
                    enum "1543.83" {
                      value 487;
                      description
                        "1543.83 nm/194.18750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1543.78" {
                      value 488;
                      description
                        "1543.78 nm/194.19375 THz 6.25GHz spacing";
                    }
                    enum "1543.73" {
                      value 489;
                      description
                        "1543.73 nm/194.20000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1543.68" {
                      value 490;
                      description
                        "1543.68 nm/194.20625 THz 6.25GHz spacing";
                    }
                    enum "1543.63" {
                      value 491;
                      description
                        "1543.63 nm/194.21250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1543.58" {
                      value 492;
                      description
                        "1543.58 nm/194.21875 THz 6.25GHz spacing";
                    }
                    enum "1543.53" {
                      value 493;
                      description
                        "1543.53 nm/194.22500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1543.48" {
                      value 494;
                      description
                        "1543.48 nm/194.23125 THz 6.25GHz spacing";
                    }
                    enum "1543.43" {
                      value 495;
                      description
                        "1543.43 nm/194.23750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1543.38" {
                      value 496;
                      description
                        "1543.38 nm/194.24375 THz 6.25GHz spacing";
                    }
                    enum "1543.33" {
                      value 497;
                      description
                        "1543.33 nm/194.25000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1543.28" {
                      value 498;
                      description
                        "1543.28 nm/194.25625 THz 6.25GHz spacing";
                    }
                    enum "1543.23" {
                      value 499;
                      description
                        "1543.23 nm/194.26250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1543.18" {
                      value 500;
                      description
                        "1543.18 nm/194.26875 THz 6.25GHz spacing";
                    }
                    enum "1543.13" {
                      value 501;
                      description
                        "1543.13 nm/194.27500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1543.08" {
                      value 502;
                      description
                        "1543.08 nm/194.28125 THz 6.25GHz spacing";
                    }
                    enum "1543.04" {
                      value 503;
                      description
                        "1543.04 nm/194.28750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1542.99" {
                      value 504;
                      description
                        "1542.99 nm/194.29375 THz 6.25GHz spacing";
                    }
                    enum "1542.94" {
                      value 505;
                      description
                        "1542.94 nm/194.30000 THz 6.25/12.5/50/75/100GHz spacing";
                    }
                    enum "1542.89" {
                      value 506;
                      description
                        "1542.89 nm/194.30625 THz 6.25GHz spacing";
                    }
                    enum "1542.84" {
                      value 507;
                      description
                        "1542.84 nm/194.31250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1542.79" {
                      value 508;
                      description
                        "1542.79 nm/194.31875 THz 6.25GHz spacing";
                    }
                    enum "1542.74" {
                      value 509;
                      description
                        "1542.74 nm/194.32500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1542.69" {
                      value 510;
                      description
                        "1542.69 nm/194.33125 THz 6.25GHz spacing";
                    }
                    enum "1542.64" {
                      value 511;
                      description
                        "1542.64 nm/194.33750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1542.59" {
                      value 512;
                      description
                        "1542.59 nm/194.34375 THz 6.25GHz spacing";
                    }
                    enum "1542.54" {
                      value 513;
                      description
                        "1542.54 nm/194.35000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1542.49" {
                      value 514;
                      description
                        "1542.49 nm/194.35625 THz 6.25GHz spacing";
                    }
                    enum "1542.44" {
                      value 515;
                      description
                        "1542.44 nm/194.36250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1542.39" {
                      value 516;
                      description
                        "1542.39 nm/194.36875 THz 6.25GHz spacing";
                    }
                    enum "1542.34" {
                      value 517;
                      description
                        "1542.34 nm/194.37500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1542.29" {
                      value 518;
                      description
                        "1542.29 nm/194.38125 THz 6.25GHz spacing";
                    }
                    enum "1542.24" {
                      value 519;
                      description
                        "1542.24 nm/194.38750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1542.19" {
                      value 520;
                      description
                        "1542.19 nm/194.39375 THz 6.25GHz spacing";
                    }
                    enum "1542.14" {
                      value 521;
                      description
                        "1542.14 nm/194.40000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1542.09" {
                      value 522;
                      description
                        "1542.09 nm/194.40625 THz 6.25GHz spacing";
                    }
                    enum "1542.04" {
                      value 523;
                      description
                        "1542.04 nm/194.41250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1541.99" {
                      value 524;
                      description
                        "1541.99 nm/194.41875 THz 6.25GHz spacing";
                    }
                    enum "1541.94" {
                      value 525;
                      description
                        "1541.94 nm/194.42500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1541.89" {
                      value 526;
                      description
                        "1541.89 nm/194.43125 THz 6.25GHz spacing";
                    }
                    enum "1541.84" {
                      value 527;
                      description
                        "1541.84 nm/194.43750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1541.80" {
                      value 528;
                      description
                        "1541.80 nm/194.44375 THz 6.25GHz spacing";
                    }
                    enum "1541.75" {
                      value 529;
                      description
                        "1541.75 nm/194.45000 THz 6.25/12.5/50/75GHz spacing";
                    }
                    enum "1541.70" {
                      value 530;
                      description
                        "1541.70 nm/194.45625 THz 6.25GHz spacing";
                    }
                    enum "1541.65" {
                      value 531;
                      description
                        "1541.65 nm/194.46250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1541.60" {
                      value 532;
                      description
                        "1541.60 nm/194.46875 THz 6.25GHz spacing";
                    }
                    enum "1541.55" {
                      value 533;
                      description
                        "1541.55 nm/194.47500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1541.50" {
                      value 534;
                      description
                        "1541.50 nm/194.48125 THz 6.25GHz spacing";
                    }
                    enum "1541.45" {
                      value 535;
                      description
                        "1541.45 nm/194.48750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1541.40" {
                      value 536;
                      description
                        "1541.40 nm/194.49375 THz 6.25GHz spacing";
                    }
                    enum "1541.35" {
                      value 537;
                      description
                        "1541.35 nm/194.50000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1541.30" {
                      value 538;
                      description
                        "1541.30 nm/194.50625 THz 6.25GHz spacing";
                    }
                    enum "1541.25" {
                      value 539;
                      description
                        "1541.25 nm/194.51250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1541.20" {
                      value 540;
                      description
                        "1541.20 nm/194.51875 THz 6.25GHz spacing";
                    }
                    enum "1541.15" {
                      value 541;
                      description
                        "1541.15 nm/194.52500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1541.10" {
                      value 542;
                      description
                        "1541.10 nm/194.53125 THz 6.25GHz spacing";
                    }
                    enum "1541.05" {
                      value 543;
                      description
                        "1541.05 nm/194.53750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1541.00" {
                      value 544;
                      description
                        "1541.00 nm/194.54375 THz 6.25GHz spacing";
                    }
                    enum "1540.95" {
                      value 545;
                      description
                        "1540.95 nm/194.55000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1540.90" {
                      value 546;
                      description
                        "1540.90 nm/194.55625 THz 6.25GHz spacing";
                    }
                    enum "1540.85" {
                      value 547;
                      description
                        "1540.85 nm/194.56250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1540.80" {
                      value 548;
                      description
                        "1540.80 nm/194.56875 THz 6.25GHz spacing";
                    }
                    enum "1540.76" {
                      value 549;
                      description
                        "1540.76 nm/194.57500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1540.71" {
                      value 550;
                      description
                        "1540.71 nm/194.58125 THz 6.25GHz spacing";
                    }
                    enum "1540.66" {
                      value 551;
                      description
                        "1540.66 nm/194.58750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1540.61" {
                      value 552;
                      description
                        "1540.61 nm/194.59375 THz 6.25GHz spacing";
                    }
                    enum "1540.56" {
                      value 553;
                      description
                        "1540.56 nm/194.60000 THz 6.25/12.5/50/75/100GHz spacing";
                    }
                    enum "1540.51" {
                      value 554;
                      description
                        "1540.51 nm/194.60625 THz 6.25GHz spacing";
                    }
                    enum "1540.46" {
                      value 555;
                      description
                        "1540.46 nm/194.61250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1540.41" {
                      value 556;
                      description
                        "1540.41 nm/194.61875 THz 6.25GHz spacing";
                    }
                    enum "1540.36" {
                      value 557;
                      description
                        "1540.36 nm/194.62500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1540.31" {
                      value 558;
                      description
                        "1540.31 nm/194.63125 THz 6.25GHz spacing";
                    }
                    enum "1540.26" {
                      value 559;
                      description
                        "1540.26 nm/194.63750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1540.21" {
                      value 560;
                      description
                        "1540.21 nm/194.64375 THz 6.25GHz spacing";
                    }
                    enum "1540.16" {
                      value 561;
                      description
                        "1540.16 nm/194.65000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1540.11" {
                      value 562;
                      description
                        "1540.11 nm/194.65625 THz 6.25GHz spacing";
                    }
                    enum "1540.06" {
                      value 563;
                      description
                        "1540.06 nm/194.66250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1540.01" {
                      value 564;
                      description
                        "1540.01 nm/194.66875 THz 6.25GHz spacing";
                    }
                    enum "1539.96" {
                      value 565;
                      description
                        "1539.96 nm/194.67500 THz 6.25/12.5/50/75GHz spacing";
                    }
                    enum "1539.91" {
                      value 566;
                      description
                        "1539.91 nm/194.68125 THz 6.25GHz spacing";
                    }
                    enum "1539.86" {
                      value 567;
                      description
                        "1539.86 nm/194.68750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1539.82" {
                      value 568;
                      description
                        "1539.82 nm/194.69375 THz 6.25GHz spacing";
                    }
                    enum "1539.77" {
                      value 569;
                      description
                        "1539.77 nm/194.70000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1539.72" {
                      value 570;
                      description
                        "1539.72 nm/194.70625 THz 6.25GHz spacing";
                    }
                    enum "1539.67" {
                      value 571;
                      description
                        "1539.67 nm/194.71250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1539.62" {
                      value 572;
                      description
                        "1539.62 nm/194.71875 THz 6.25GHz spacing";
                    }
                    enum "1539.57" {
                      value 573;
                      description
                        "1539.57 nm/194.72500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1539.52" {
                      value 574;
                      description
                        "1539.52 nm/194.73125 THz 6.25GHz spacing";
                    }
                    enum "1539.47" {
                      value 575;
                      description
                        "1539.47 nm/194.73750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1539.42" {
                      value 576;
                      description
                        "1539.42 nm/194.74375 THz 6.25GHz spacing";
                    }
                    enum "1539.37" {
                      value 577;
                      description
                        "1539.37 nm/194.75000 THz 6.25/12.5/50/75GHz spacing";
                    }
                    enum "1539.32" {
                      value 578;
                      description
                        "1539.32 nm/194.75625 THz 6.25GHz spacing";
                    }
                    enum "1539.27" {
                      value 579;
                      description
                        "1539.27 nm/194.76250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1539.22" {
                      value 580;
                      description
                        "1539.22 nm/194.76875 THz 6.25GHz spacing";
                    }
                    enum "1539.17" {
                      value 581;
                      description
                        "1539.17 nm/194.77500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1539.12" {
                      value 582;
                      description
                        "1539.12 nm/194.78125 THz 6.25GHz spacing";
                    }
                    enum "1539.07" {
                      value 583;
                      description
                        "1539.07 nm/194.78750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1539.03" {
                      value 584;
                      description
                        "1539.03 nm/194.79375 THz 6.25GHz spacing";
                    }
                    enum "1538.98" {
                      value 585;
                      description
                        "1538.98 nm/194.80000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1538.93" {
                      value 586;
                      description
                        "1538.93 nm/194.80625 THz 6.25GHz spacing";
                    }
                    enum "1538.88" {
                      value 587;
                      description
                        "1538.88 nm/194.81250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1538.83" {
                      value 588;
                      description
                        "1538.83 nm/194.81875 THz 6.25GHz spacing";
                    }
                    enum "1538.78" {
                      value 589;
                      description
                        "1538.78 nm/194.82500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1538.73" {
                      value 590;
                      description
                        "1538.73 nm/194.83125 THz 6.25GHz spacing";
                    }
                    enum "1538.68" {
                      value 591;
                      description
                        "1538.68 nm/194.83750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1538.63" {
                      value 592;
                      description
                        "1538.63 nm/194.84375 THz 6.25GHz spacing";
                    }
                    enum "1538.58" {
                      value 593;
                      description
                        "1538.58 nm/194.85000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1538.53" {
                      value 594;
                      description
                        "1538.53 nm/194.85625 THz 6.25GHz spacing";
                    }
                    enum "1538.48" {
                      value 595;
                      description
                        "1538.48 nm/194.86250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1538.43" {
                      value 596;
                      description
                        "1538.43 nm/194.86875 THz 6.25GHz spacing";
                    }
                    enum "1538.38" {
                      value 597;
                      description
                        "1538.38 nm/194.87500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1538.33" {
                      value 598;
                      description
                        "1538.33 nm/194.88125 THz 6.25GHz spacing";
                    }
                    enum "1538.28" {
                      value 599;
                      description
                        "1538.28 nm/194.88750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1538.24" {
                      value 600;
                      description
                        "1538.24 nm/194.89375 THz 6.25GHz spacing";
                    }
                    enum "1538.19" {
                      value 601;
                      description
                        "1538.19 nm/194.90000 THz 6.25/12.5/50/75/100GHz spacing";
                    }
                    enum "1538.14" {
                      value 602;
                      description
                        "1538.14 nm/194.90625 THz 6.25GHz spacing";
                    }
                    enum "1538.09" {
                      value 603;
                      description
                        "1538.09 nm/194.91250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1538.04" {
                      value 604;
                      description
                        "1538.04 nm/194.91875 THz 6.25GHz spacing";
                    }
                    enum "1537.99" {
                      value 605;
                      description
                        "1537.99 nm/194.92500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1537.94" {
                      value 606;
                      description
                        "1537.94 nm/194.93125 THz 6.25GHz spacing";
                    }
                    enum "1537.89" {
                      value 607;
                      description
                        "1537.89 nm/194.93750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1537.84" {
                      value 608;
                      description
                        "1537.84 nm/194.94375 THz 6.25GHz spacing";
                    }
                    enum "1537.79" {
                      value 609;
                      description
                        "1537.79 nm/194.95000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1537.74" {
                      value 610;
                      description
                        "1537.74 nm/194.95625 THz 6.25GHz spacing";
                    }
                    enum "1537.69" {
                      value 611;
                      description
                        "1537.69 nm/194.96250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1537.64" {
                      value 612;
                      description
                        "1537.64 nm/194.96875 THz 6.25GHz spacing";
                    }
                    enum "1537.59" {
                      value 613;
                      description
                        "1537.59 nm/194.97500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1537.55" {
                      value 614;
                      description
                        "1537.55 nm/194.98125 THz 6.25GHz spacing";
                    }
                    enum "1537.50" {
                      value 615;
                      description
                        "1537.50 nm/194.98750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1537.45" {
                      value 616;
                      description
                        "1537.45 nm/194.99375 THz 6.25GHz spacing";
                    }
                    enum "1537.40" {
                      value 617;
                      description
                        "1537.40 nm/195.00000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1537.35" {
                      value 618;
                      description
                        "1537.35 nm/195.00625 THz 6.25GHz spacing";
                    }
                    enum "1537.30" {
                      value 619;
                      description
                        "1537.30 nm/195.01250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1537.25" {
                      value 620;
                      description
                        "1537.25 nm/195.01875 THz 6.25GHz spacing";
                    }
                    enum "1537.20" {
                      value 621;
                      description
                        "1537.20 nm/195.02500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1537.15" {
                      value 622;
                      description
                        "1537.15 nm/195.03125 THz 6.25GHz spacing";
                    }
                    enum "1537.10" {
                      value 623;
                      description
                        "1537.10 nm/195.03750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1537.05" {
                      value 624;
                      description
                        "1537.05 nm/195.04375 THz 6.25GHz spacing";
                    }
                    enum "1537.00" {
                      value 625;
                      description
                        "1537.00 nm/195.05000 THz 6.25/12.5/50/75GHz spacing";
                    }
                    enum "1536.95" {
                      value 626;
                      description
                        "1536.95 nm/195.05625 THz 6.25GHz spacing";
                    }
                    enum "1536.90" {
                      value 627;
                      description
                        "1536.90 nm/195.06250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1536.86" {
                      value 628;
                      description
                        "1536.86 nm/195.06875 THz 6.25GHz spacing";
                    }
                    enum "1536.81" {
                      value 629;
                      description
                        "1536.81 nm/195.07500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1536.76" {
                      value 630;
                      description
                        "1536.76 nm/195.08125 THz 6.25GHz spacing";
                    }
                    enum "1536.71" {
                      value 631;
                      description
                        "1536.71 nm/195.08750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1536.66" {
                      value 632;
                      description
                        "1536.66 nm/195.09375 THz 6.25GHz spacing";
                    }
                    enum "1536.61" {
                      value 633;
                      description
                        "1536.61 nm/195.10000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1536.56" {
                      value 634;
                      description
                        "1536.56 nm/195.10625 THz 6.25GHz spacing";
                    }
                    enum "1536.51" {
                      value 635;
                      description
                        "1536.51 nm/195.11250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1536.46" {
                      value 636;
                      description
                        "1536.46 nm/195.11875 THz 6.25GHz spacing";
                    }
                    enum "1536.41" {
                      value 637;
                      description
                        "1536.41 nm/195.12500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1536.36" {
                      value 638;
                      description
                        "1536.36 nm/195.13125 THz 6.25GHz spacing";
                    }
                    enum "1536.31" {
                      value 639;
                      description
                        "1536.31 nm/195.13750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1536.26" {
                      value 640;
                      description
                        "1536.26 nm/195.14375 THz 6.25GHz spacing";
                    }
                    enum "1536.22" {
                      value 641;
                      description
                        "1536.22 nm/195.15000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1536.17" {
                      value 642;
                      description
                        "1536.17 nm/195.15625 THz 6.25GHz spacing";
                    }
                    enum "1536.12" {
                      value 643;
                      description
                        "1536.12 nm/195.16250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1536.07" {
                      value 644;
                      description
                        "1536.07 nm/195.16875 THz 6.25GHz spacing";
                    }
                    enum "1536.02" {
                      value 645;
                      description
                        "1536.02 nm/195.17500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1535.97" {
                      value 646;
                      description
                        "1535.97 nm/195.18125 THz 6.25GHz spacing";
                    }
                    enum "1535.92" {
                      value 647;
                      description
                        "1535.92 nm/195.18750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1535.87" {
                      value 648;
                      description
                        "1535.87 nm/195.19375 THz 6.25GHz spacing";
                    }
                    enum "1535.82" {
                      value 649;
                      description
                        "1535.82 nm/195.20000 THz 6.25/12.5/50/75/100GHz spacing";
                    }
                    enum "1535.77" {
                      value 650;
                      description
                        "1535.77 nm/195.20625 THz 6.25GHz spacing";
                    }
                    enum "1535.72" {
                      value 651;
                      description
                        "1535.72 nm/195.21250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1535.67" {
                      value 652;
                      description
                        "1535.67 nm/195.21875 THz 6.25GHz spacing";
                    }
                    enum "1535.63" {
                      value 653;
                      description
                        "1535.63 nm/195.22500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1535.58" {
                      value 654;
                      description
                        "1535.58 nm/195.23125 THz 6.25GHz spacing";
                    }
                    enum "1535.53" {
                      value 655;
                      description
                        "1535.53 nm/195.23750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1535.48" {
                      value 656;
                      description
                        "1535.48 nm/195.24375 THz 6.25GHz spacing";
                    }
                    enum "1535.43" {
                      value 657;
                      description
                        "1535.43 nm/195.25000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1535.38" {
                      value 658;
                      description
                        "1535.38 nm/195.25625 THz 6.25GHz spacing";
                    }
                    enum "1535.33" {
                      value 659;
                      description
                        "1535.33 nm/195.26250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1535.28" {
                      value 660;
                      description
                        "1535.28 nm/195.26875 THz 6.25GHz spacing";
                    }
                    enum "1535.23" {
                      value 661;
                      description
                        "1535.23 nm/195.27500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1535.18" {
                      value 662;
                      description
                        "1535.18 nm/195.28125 THz 6.25GHz spacing";
                    }
                    enum "1535.13" {
                      value 663;
                      description
                        "1535.13 nm/195.28750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1535.08" {
                      value 664;
                      description
                        "1535.08 nm/195.29375 THz 6.25GHz spacing";
                    }
                    enum "1535.04" {
                      value 665;
                      description
                        "1535.04 nm/195.30000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1534.99" {
                      value 666;
                      description
                        "1534.99 nm/195.30625 THz 6.25GHz spacing";
                    }
                    enum "1534.94" {
                      value 667;
                      description
                        "1534.94 nm/195.31250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1534.89" {
                      value 668;
                      description
                        "1534.89 nm/195.31875 THz 6.25GHz spacing";
                    }
                    enum "1534.84" {
                      value 669;
                      description
                        "1534.84 nm/195.32500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1534.79" {
                      value 670;
                      description
                        "1534.79 nm/195.33125 THz 6.25GHz spacing";
                    }
                    enum "1534.74" {
                      value 671;
                      description
                        "1534.74 nm/195.33750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1534.69" {
                      value 672;
                      description
                        "1534.69 nm/195.34375 THz 6.25GHz spacing";
                    }
                    enum "1534.64" {
                      value 673;
                      description
                        "1534.64 nm/195.35000 THz 6.25/12.5/50/75GHz spacing";
                    }
                    enum "1534.59" {
                      value 674;
                      description
                        "1534.59 nm/195.35625 THz 6.25GHz spacing";
                    }
                    enum "1534.54" {
                      value 675;
                      description
                        "1534.54 nm/195.36250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1534.50" {
                      value 676;
                      description
                        "1534.50 nm/195.36875 THz 6.25GHz spacing";
                    }
                    enum "1534.45" {
                      value 677;
                      description
                        "1534.45 nm/195.37500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1534.40" {
                      value 678;
                      description
                        "1534.40 nm/195.38125 THz 6.25GHz spacing";
                    }
                    enum "1534.35" {
                      value 679;
                      description
                        "1534.35 nm/195.38750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1534.30" {
                      value 680;
                      description
                        "1534.30 nm/195.39375 THz 6.25GHz spacing";
                    }
                    enum "1534.25" {
                      value 681;
                      description
                        "1534.25 nm/195.40000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1534.20" {
                      value 682;
                      description
                        "1534.20 nm/195.40625 THz 6.25GHz spacing";
                    }
                    enum "1534.15" {
                      value 683;
                      description
                        "1534.15 nm/195.41250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1534.10" {
                      value 684;
                      description
                        "1534.10 nm/195.41875 THz 6.25GHz spacing";
                    }
                    enum "1534.05" {
                      value 685;
                      description
                        "1534.05 nm/195.42500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1534.00" {
                      value 686;
                      description
                        "1534.00 nm/195.43125 THz 6.25GHz spacing";
                    }
                    enum "1533.96" {
                      value 687;
                      description
                        "1533.96 nm/195.43750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1533.91" {
                      value 688;
                      description
                        "1533.91 nm/195.44375 THz 6.25GHz spacing";
                    }
                    enum "1533.86" {
                      value 689;
                      description
                        "1533.86 nm/195.45000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1533.81" {
                      value 690;
                      description
                        "1533.81 nm/195.45625 THz 6.25GHz spacing";
                    }
                    enum "1533.76" {
                      value 691;
                      description
                        "1533.76 nm/195.46250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1533.71" {
                      value 692;
                      description
                        "1533.71 nm/195.46875 THz 6.25GHz spacing";
                    }
                    enum "1533.66" {
                      value 693;
                      description
                        "1533.66 nm/195.47500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1533.61" {
                      value 694;
                      description
                        "1533.61 nm/195.48125 THz 6.25GHz spacing";
                    }
                    enum "1533.56" {
                      value 695;
                      description
                        "1533.56 nm/195.48750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1533.51" {
                      value 696;
                      description
                        "1533.51 nm/195.49375 THz 6.25GHz spacing";
                    }
                    enum "1533.47" {
                      value 697;
                      description
                        "1533.47 nm/195.50000 THz 6.25/12.5/50/75/100GHz spacing";
                    }
                    enum "1533.42" {
                      value 698;
                      description
                        "1533.42 nm/195.50625 THz 6.25GHz spacing";
                    }
                    enum "1533.37" {
                      value 699;
                      description
                        "1533.37 nm/195.51250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1533.32" {
                      value 700;
                      description
                        "1533.32 nm/195.51875 THz 6.25GHz spacing";
                    }
                    enum "1533.27" {
                      value 701;
                      description
                        "1533.27 nm/195.52500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1533.22" {
                      value 702;
                      description
                        "1533.22 nm/195.53125 THz 6.25GHz spacing";
                    }
                    enum "1533.17" {
                      value 703;
                      description
                        "1533.17 nm/195.53750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1533.12" {
                      value 704;
                      description
                        "1533.12 nm/195.54375 THz 6.25GHz spacing";
                    }
                    enum "1533.07" {
                      value 705;
                      description
                        "1533.07 nm/195.55000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1533.02" {
                      value 706;
                      description
                        "1533.02 nm/195.55625 THz 6.25GHz spacing";
                    }
                    enum "1532.98" {
                      value 707;
                      description
                        "1532.98 nm/195.56250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1532.93" {
                      value 708;
                      description
                        "1532.93 nm/195.56875 THz 6.25GHz spacing";
                    }
                    enum "1532.88" {
                      value 709;
                      description
                        "1532.88 nm/195.57500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1532.83" {
                      value 710;
                      description
                        "1532.83 nm/195.58125 THz 6.25GHz spacing";
                    }
                    enum "1532.78" {
                      value 711;
                      description
                        "1532.78 nm/195.58750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1532.73" {
                      value 712;
                      description
                        "1532.73 nm/195.59375 THz 6.25GHz spacing";
                    }
                    enum "1532.68" {
                      value 713;
                      description
                        "1532.68 nm/195.60000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1532.63" {
                      value 714;
                      description
                        "1532.63 nm/195.60625 THz 6.25GHz spacing";
                    }
                    enum "1532.58" {
                      value 715;
                      description
                        "1532.58 nm/195.61250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1532.53" {
                      value 716;
                      description
                        "1532.53 nm/195.61875 THz 6.25GHz spacing";
                    }
                    enum "1532.49" {
                      value 717;
                      description
                        "1532.49 nm/195.62500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1532.44" {
                      value 718;
                      description
                        "1532.44 nm/195.63125 THz 6.25GHz spacing";
                    }
                    enum "1532.39" {
                      value 719;
                      description
                        "1532.39 nm/195.63750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1532.34" {
                      value 720;
                      description
                        "1532.34 nm/195.64375 THz 6.25GHz spacing";
                    }
                    enum "1532.29" {
                      value 721;
                      description
                        "1532.29 nm/195.65000 THz 6.25/12.5/50/75GHz spacing";
                    }
                    enum "1532.24" {
                      value 722;
                      description
                        "1532.24 nm/195.65625 THz 6.25GHz spacing";
                    }
                    enum "1532.19" {
                      value 723;
                      description
                        "1532.19 nm/195.66250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1532.14" {
                      value 724;
                      description
                        "1532.14 nm/195.66875 THz 6.25GHz spacing";
                    }
                    enum "1532.09" {
                      value 725;
                      description
                        "1532.09 nm/195.67500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1532.04" {
                      value 726;
                      description
                        "1532.04 nm/195.68125 THz 6.25GHz spacing";
                    }
                    enum "1532.00" {
                      value 727;
                      description
                        "1532.00 nm/195.68750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1531.95" {
                      value 728;
                      description
                        "1531.95 nm/195.69375 THz 6.25GHz spacing";
                    }
                    enum "1531.90" {
                      value 729;
                      description
                        "1531.90 nm/195.70000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1531.85" {
                      value 730;
                      description
                        "1531.85 nm/195.70625 THz 6.25GHz spacing";
                    }
                    enum "1531.80" {
                      value 731;
                      description
                        "1531.80 nm/195.71250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1531.75" {
                      value 732;
                      description
                        "1531.75 nm/195.71875 THz 6.25GHz spacing";
                    }
                    enum "1531.70" {
                      value 733;
                      description
                        "1531.70 nm/195.72500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1531.65" {
                      value 734;
                      description
                        "1531.65 nm/195.73125 THz 6.25GHz spacing";
                    }
                    enum "1531.60" {
                      value 735;
                      description
                        "1531.60 nm/195.73750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1531.56" {
                      value 736;
                      description
                        "1531.56 nm/195.74375 THz 6.25GHz spacing";
                    }
                    enum "1531.51" {
                      value 737;
                      description
                        "1531.51 nm/195.75000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1531.46" {
                      value 738;
                      description
                        "1531.46 nm/195.75625 THz 6.25GHz spacing";
                    }
                    enum "1531.41" {
                      value 739;
                      description
                        "1531.41 nm/195.76250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1531.36" {
                      value 740;
                      description
                        "1531.36 nm/195.76875 THz 6.25GHz spacing";
                    }
                    enum "1531.31" {
                      value 741;
                      description
                        "1531.31 nm/195.77500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1531.26" {
                      value 742;
                      description
                        "1531.26 nm/195.78125 THz 6.25GHz spacing";
                    }
                    enum "1531.21" {
                      value 743;
                      description
                        "1531.21 nm/195.78750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1531.16" {
                      value 744;
                      description
                        "1531.16 nm/195.79375 THz 6.25GHz spacing";
                    }
                    enum "1531.12" {
                      value 745;
                      description
                        "1531.12 nm/195.80000 THz 6.25/12.5/50/75/100GHz spacing";
                    }
                    enum "1531.07" {
                      value 746;
                      description
                        "1531.07 nm/195.80625 THz 6.25GHz spacing";
                    }
                    enum "1531.02" {
                      value 747;
                      description
                        "1531.02 nm/195.81250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1530.97" {
                      value 748;
                      description
                        "1530.97 nm/195.81875 THz 6.25GHz spacing";
                    }
                    enum "1530.92" {
                      value 749;
                      description
                        "1530.92 nm/195.82500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1530.87" {
                      value 750;
                      description
                        "1530.87 nm/195.83125 THz 6.25GHz spacing";
                    }
                    enum "1530.82" {
                      value 751;
                      description
                        "1530.82 nm/195.83750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1530.77" {
                      value 752;
                      description
                        "1530.77 nm/195.84375 THz 6.25GHz spacing";
                    }
                    enum "1530.72" {
                      value 753;
                      description
                        "1530.72 nm/195.85000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1530.68" {
                      value 754;
                      description
                        "1530.68 nm/195.85625 THz 6.25GHz spacing";
                    }
                    enum "1530.63" {
                      value 755;
                      description
                        "1530.63 nm/195.86250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1530.58" {
                      value 756;
                      description
                        "1530.58 nm/195.86875 THz 6.25GHz spacing";
                    }
                    enum "1530.53" {
                      value 757;
                      description
                        "1530.53 nm/195.87500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1530.48" {
                      value 758;
                      description
                        "1530.48 nm/195.88125 THz 6.25GHz spacing";
                    }
                    enum "1530.43" {
                      value 759;
                      description
                        "1530.43 nm/195.88750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1530.38" {
                      value 760;
                      description
                        "1530.38 nm/195.89375 THz 6.25GHz spacing";
                    }
                    enum "1530.33" {
                      value 761;
                      description
                        "1530.33 nm/195.90000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1530.29" {
                      value 762;
                      description
                        "1530.29 nm/195.90625 THz 6.25GHz spacing";
                    }
                    enum "1530.24" {
                      value 763;
                      description
                        "1530.24 nm/195.91250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1530.19" {
                      value 764;
                      description
                        "1530.19 nm/195.91875 THz 6.25GHz spacing";
                    }
                    enum "1530.14" {
                      value 765;
                      description
                        "1530.14 nm/195.92500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1530.09" {
                      value 766;
                      description
                        "1530.09 nm/195.93125 THz 6.25GHz spacing";
                    }
                    enum "1530.04" {
                      value 767;
                      description
                        "1530.04 nm/195.93750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1529.99" {
                      value 768;
                      description
                        "1529.99 nm/195.94375 THz 6.25GHz spacing";
                    }
                    enum "1529.94" {
                      value 769;
                      description
                        "1529.94 nm/195.95000 THz 6.25/12.5/50/75GHz spacing";
                    }
                    enum "1529.89" {
                      value 770;
                      description
                        "1529.89 nm/195.95625 THz 6.25GHz spacing";
                    }
                    enum "1529.85" {
                      value 771;
                      description
                        "1529.85 nm/195.96250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1529.80" {
                      value 772;
                      description
                        "1529.80 nm/195.96875 THz 6.25GHz spacing";
                    }
                    enum "1529.75" {
                      value 773;
                      description
                        "1529.75 nm/195.97500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1529.70" {
                      value 774;
                      description
                        "1529.70 nm/195.98125 THz 6.25GHz spacing";
                    }
                    enum "1529.65" {
                      value 775;
                      description
                        "1529.65 nm/195.98750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1529.60" {
                      value 776;
                      description
                        "1529.60 nm/195.99375 THz 6.25GHz spacing";
                    }
                    enum "1529.55" {
                      value 777;
                      description
                        "1529.55 nm/196.00000 THz 6.25/12.5/50/100GHz spacing";
                    }
                    enum "1529.50" {
                      value 778;
                      description
                        "1529.50 nm/196.00625 THz 6.25GHz spacing";
                    }
                    enum "1529.46" {
                      value 779;
                      description
                        "1529.46 nm/196.01250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1529.41" {
                      value 780;
                      description
                        "1529.41 nm/196.01875 THz 6.25GHz spacing";
                    }
                    enum "1529.36" {
                      value 781;
                      description
                        "1529.36 nm/196.02500 THz 6.25/12.5/75GHz spacing";
                    }
                    enum "1529.31" {
                      value 782;
                      description
                        "1529.31 nm/196.03125 THz 6.25GHz spacing";
                    }
                    enum "1529.26" {
                      value 783;
                      description
                        "1529.26 nm/196.03750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1529.21" {
                      value 784;
                      description
                        "1529.21 nm/196.04375 THz 6.25GHz spacing";
                    }
                    enum "1529.16" {
                      value 785;
                      description
                        "1529.16 nm/196.05000 THz 6.25/12.5/50GHz spacing";
                    }
                    enum "1529.11" {
                      value 786;
                      description
                        "1529.11 nm/196.05625 THz 6.25GHz spacing";
                    }
                    enum "1529.07" {
                      value 787;
                      description
                        "1529.07 nm/196.06250 THz 6.25/12.5GHz spacing";
                    }
                    enum "1529.02" {
                      value 788;
                      description
                        "1529.02 nm/196.06875 THz 6.25GHz spacing";
                    }
                    enum "1528.97" {
                      value 789;
                      description
                        "1528.97 nm/196.07500 THz 6.25/12.5GHz spacing";
                    }
                    enum "1528.92" {
                      value 790;
                      description
                        "1528.92 nm/196.08125 THz 6.25GHz spacing";
                    }
                    enum "1528.87" {
                      value 791;
                      description
                        "1528.87 nm/196.08750 THz 6.25/12.5GHz spacing";
                    }
                    enum "1528.82" {
                      value 792;
                      description
                        "1528.82 nm/196.09375 THz 6.25GHz spacing";
                    }
                    enum "1528.77" {
                      value 793;
                      description
                        "1528.77 nm/196.10000 THz 6.25/12.5/50/75/100GHz spacing";
                    }
                    enum "1528.38" {
                      value 794;
                      description
                        "1528.38 nm/196.15040 THz 50Ghz spacing";
                    }
                  }
                  description
                    "Wavelength of the optics (nanometers) for 50Ghz/100Ghz spacing";
                }
    
                leaf tx-power {
                  type string;
                  units "dBm";
                  description
                    "Transmit laser output power";
                }
    
                leaf loopback {
                  type empty;
                  description
                    "Put the optics in loopback mode";
                }
    
                leaf los-warning-threshold {
                  type string;
                  units "dBm";
                  description
                    "LOS warning threshold";
                }
    
                leaf los-alarm-threshold {
                  type string;
                  units "dBm";
                  description
                    "LOS alarm threshold";
                }
    
                leaf modulation-format {
                  type enumeration {
                    enum "16qam" {
                      value 0;
                      description
                        "16-QAM Modulation Format";
                    }
                    enum "8qam" {
                      value 1;
                      description
                        "8-QAM MOdulation Format";
                    }
                    enum "qpsk" {
                      value 2;
                      description
                        "QPSK Modulation Format";
                    }
                  }
                  description
                    "Type of Modulation Format";
                }
    
                choice laser-enable-choice {
                  leaf laser-enable {
                    type empty;
                    description "Enable Laser";
                  }
                  leaf no-laser-enable {
                    type empty;
                    description
                      "Don't enable Laser";
                  }
                }  // choice laser-enable-choice
    
                choice is-ma-choice {
                  leaf is-ma {
                    type empty;
                    description
                      "Link is enabled with alarms masked";
                  }
                  leaf no-is-ma {
                    type empty;
                    description
                      "Don't link is enabled with alarms masked";
                  }
                }  // choice is-ma-choice
    
                leaf encoding {
                  type enumeration {
                    enum "differential" {
                      value 0;
                      description
                        "Differential phase line encoding";
                    }
                    enum "non-differential" {
                      value 1;
                      description
                        "Non-differential phase line encoding";
                    }
                  }
                  description "Line encoding";
                }
    
                leaf fec {
                  type enumeration {
                    enum "sdfec" {
                      value 0;
                      description
                        "Sky-Compatible Soft Decision Forward Error Correction";
                    }
                    enum "sdfec25" {
                      value 1;
                      description
                        "Denali-Compatible Soft Decision Forward Error Correction with 25 percent overhead";
                    }
                    enum "hgfec" {
                      value 2;
                      description
                        "High Gain Forward Error Correction";
                    }
                    enum "sdfec15" {
                      value 3;
                      description
                        "Soft Decision Forward Error Correction with 15 percent overhead";
                    }
                  }
                  description
                    "Forward Error Correction mode";
                }
    
                leaf high-polarization {
                  type empty;
                  description
                    "High polarization tracking mode";
                }
    
                container signal-degrade {
                  description
                    "Signal degrade thresholds";
                  uses apply-advanced;
    
                  leaf interval {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 1000";
                      }
                    }
                    units "milliseconds";
                    default "10";
                    description "Time interval";
                  }
    
                  leaf ber-threshold-clear {
                    type string {
                      junos:posix-pattern "^[0-9]+(.[0-9]+)?e-[0-9]$";
                      junos:pattern-message "Ber threshold value in format: xe-n, x is an integer or decimal number, n = 0..9";
                    }
                    description
                      "Ber threshold for signal degrade clear (format: xe-n, example: 4.5e-3)";
                  }
    
                  leaf ber-threshold-signal-degrade {
                    type string {
                      junos:posix-pattern "^[0-9]+(.[0-9]+)?e-[0-9]$";
                      junos:pattern-message "Ber threshold value in format: xe-n, x is an integer or decimal number, n = 0..9";
                    }
                    description
                      "Ber threshold for signal-degrade (format: xe-n, example: 4.5e-3)";
                  }
    
                  leaf q-threshold-signal-degrade-clear {
                    type string;
                    units "dB";
                    description
                      "Q threshold for signal-degrade clear (e.g. 14.26)";
                  }
    
                  leaf q-threshold-signal-degrade {
                    type string;
                    units "dB";
                    description
                      "Q threshold for signal-degrade (e.g. 9.26)";
                  }
                }  // container signal-degrade
    
                list alarm {
                  key "name";
                  ordered-by user;
                  description "Set optic alarms";
                  leaf name {
                    type enumeration {
                      enum "low-light-alarm" {
                        value 0;
                        description
                          "Enable low light alarm";
                      }
                    }
                  }
    
                  uses apply-advanced;
    
                  choice actiontype {
                    leaf syslog {
                      type empty;
                    }
                    leaf link-down {
                      type empty;
                    }
                  }  // choice actiontype
                }  // list alarm
    
                container tca {
                  description
                    "Set tca for optic alarms";
                  uses apply-advanced;
    
                  container tx-power-high-tca {
                    description
                      "Tx power high TCA";
                    uses apply-advanced;
    
                    choice enable-tca-choice {
                      leaf enable-tca {
                        type empty;
                        description "Enable tca";
                      }
                      leaf no-enable-tca {
                        type empty;
                        description
                          "Don't enable tca";
                      }
                    }  // choice enable-tca-choice
    
                    leaf threshold {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 15 minute tx power high TCA in dBm";
                    }
    
                    leaf threshold-24hrs {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 24 hour tx power high TCA in dBm";
                    }
                  }  // container tx-power-high-tca
    
                  container tx-power-low-tca {
                    description
                      "Tx power low TCA";
                    uses apply-advanced;
    
                    choice enable-tca-choice {
                      leaf enable-tca {
                        type empty;
                        description "Enable tca";
                      }
                      leaf no-enable-tca {
                        type empty;
                        description
                          "Don't enable tca";
                      }
                    }  // choice enable-tca-choice
    
                    leaf threshold {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 15 minute tx power low TCA in dBm";
                    }
    
                    leaf threshold-24hrs {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 24 hour tx power low TCA in dBm";
                    }
                  }  // container tx-power-low-tca
    
                  container rx-power-high-tca {
                    description
                      "Rx power high TCA";
                    uses apply-advanced;
    
                    choice enable-tca-choice {
                      leaf enable-tca {
                        type empty;
                        description "Enable tca";
                      }
                      leaf no-enable-tca {
                        type empty;
                        description
                          "Don't enable tca";
                      }
                    }  // choice enable-tca-choice
    
                    leaf threshold {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 15 minute rx power high TCA in dBm";
                    }
    
                    leaf threshold-24hrs {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 24 hour rx power high TCA in dBm";
                    }
                  }  // container rx-power-high-tca
    
                  container rx-power-low-tca {
                    description
                      "Rx power low TCA";
                    uses apply-advanced;
    
                    choice enable-tca-choice {
                      leaf enable-tca {
                        type empty;
                        description "Enable tca";
                      }
                      leaf no-enable-tca {
                        type empty;
                        description
                          "Don't enable tca";
                      }
                    }  // choice enable-tca-choice
    
                    leaf threshold {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 15 minute rx power low TCA in dBm";
                    }
    
                    leaf threshold-24hrs {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 24 hour rx power low TCA in dBm";
                    }
                  }  // container rx-power-low-tca
    
                  container temperature-high-tca {
                    description
                      "Temperature high TCA";
                    uses apply-advanced;
    
                    choice enable-tca-choice {
                      leaf enable-tca {
                        type empty;
                        description "Enable tca";
                      }
                      leaf no-enable-tca {
                        type empty;
                        description
                          "Don't enable tca";
                      }
                    }  // choice enable-tca-choice
    
                    leaf threshold {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 15 minute high temperature TCA in celsius";
                    }
    
                    leaf threshold-24hrs {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 24 hour high temperature TCA in celsius";
                    }
                  }  // container temperature-high-tca
    
                  container temperature-low-tca {
                    description
                      "Temperature low TCA";
                    uses apply-advanced;
    
                    choice enable-tca-choice {
                      leaf enable-tca {
                        type empty;
                        description "Enable tca";
                      }
                      leaf no-enable-tca {
                        type empty;
                        description
                          "Don't enable tca";
                      }
                    }  // choice enable-tca-choice
    
                    leaf threshold {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 15 minute low temperature TCA in celsius";
                    }
    
                    leaf threshold-24hrs {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 24 hour low temperature TCA in celsius";
                    }
                  }  // container temperature-low-tca
    
                  container carrier-frequency-offset-high-tca {
                    description
                      "Carrier frequency offset high TCA";
                    uses apply-advanced;
    
                    choice enable-tca-choice {
                      leaf enable-tca {
                        type empty;
                        description "Enable tca";
                      }
                      leaf no-enable-tca {
                        type empty;
                        description
                          "Don't enable tca";
                      }
                    }  // choice enable-tca-choice
    
                    leaf threshold {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 15 minute frequency offset high TCA in MHz";
                    }
    
                    leaf threshold-24hrs {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 24 hour frequency offset high TCA in MHz";
                    }
                  }  // container carrier-frequency-offset-high-tca
    
                  container carrier-frequency-offset-low-tca {
                    description
                      "Carrier frequency offset low TCA";
                    uses apply-advanced;
    
                    choice enable-tca-choice {
                      leaf enable-tca {
                        type empty;
                        description "Enable tca";
                      }
                      leaf no-enable-tca {
                        type empty;
                        description
                          "Don't enable tca";
                      }
                    }  // choice enable-tca-choice
    
                    leaf threshold {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 15 minute frequency offset low TCA in MHz";
                    }
    
                    leaf threshold-24hrs {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 24 hour frequency offset low TCA in MHz";
                    }
                  }  // container carrier-frequency-offset-low-tca
    
                  container fec-ber {
                    description
                      "Optics Errored Seconds Threshold crossing defect trigger";
                    choice enable-tca-choice {
                      leaf enable-tca {
                        type empty;
                        description
                          "Enable the Optics errored seconds threshold crossing alert";
                      }
                      leaf no-enable-tca {
                        type empty;
                        description
                          "Don't enable the Optics errored seconds threshold crossing alert";
                      }
                    }  // choice enable-tca-choice
    
                    leaf threshold {
                      type string {
                        junos:posix-pattern "^[0-9]+(\.[0-9]+)?e-[0-9]$";
                        junos:pattern-message "FEC BER threshold value in format: xe-n, x is an integer or decimal number, n = 0..9";
                      }
                      default "10e-3";
                      description
                        "TCA threshold for BER value in format: xe-n, x is an integer or decimal number, n = 0..9";
                    }
    
                    leaf threshold-24hrs {
                      type string {
                        junos:posix-pattern "^[0-9]+(\.[0-9]+)?e-[0-9]$";
                        junos:pattern-message "FEC BER threshold value in format: xe-n, x is an integer or decimal number, n = 0..9";
                      }
                      default "10e-3";
                      description
                        "TCA threshold for BER value in format: xe-n, x is an integer or decimal number, n = 0..9";
                    }
                  }  // container fec-ber
    
                  container tec-current-high-tca {
                    description
                      "TEC Current high TCA";
                    uses apply-advanced;
    
                    choice enable-tca-choice {
                      leaf enable-tca {
                        type empty;
                        description "Enable tca";
                      }
                      leaf no-enable-tca {
                        type empty;
                        description
                          "Don't enable tca";
                      }
                    }  // choice enable-tca-choice
    
                    leaf threshold {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 15 minute TEC Current high TCA in mA";
                    }
    
                    leaf threshold-24hrs {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 24 hour TEC Current high TCA in mA";
                    }
                  }  // container tec-current-high-tca
    
                  container tec-current-low-tca {
                    description
                      "TEC Current low TCA";
                    uses apply-advanced;
    
                    choice enable-tca-choice {
                      leaf enable-tca {
                        type empty;
                        description "Enable tca";
                      }
                      leaf no-enable-tca {
                        type empty;
                        description
                          "Don't enable tca";
                      }
                    }  // choice enable-tca-choice
    
                    leaf threshold {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 15 minute TEC Current low TCA in mA";
                    }
    
                    leaf threshold-24hrs {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 24 hour TEC Current low TCA in mA";
                    }
                  }  // container tec-current-low-tca
    
                  container residual-isi-high-tca {
                    description
                      "Residual ISI high TCA";
                    uses apply-advanced;
    
                    choice enable-tca-choice {
                      leaf enable-tca {
                        type empty;
                        description "Enable tca";
                      }
                      leaf no-enable-tca {
                        type empty;
                        description
                          "Don't enable tca";
                      }
                    }  // choice enable-tca-choice
    
                    leaf threshold {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 15 minute Residual ISI high TCA in ps/nm";
                    }
    
                    leaf threshold-24hrs {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 24 hour Residual ISI high TCA in ps/nm";
                    }
                  }  // container residual-isi-high-tca
    
                  container residual-isi-low-tca {
                    description
                      "Residual ISI low TCA";
                    uses apply-advanced;
    
                    choice enable-tca-choice {
                      leaf enable-tca {
                        type empty;
                        description "Enable tca";
                      }
                      leaf no-enable-tca {
                        type empty;
                        description
                          "Don't enable tca";
                      }
                    }  // choice enable-tca-choice
    
                    leaf threshold {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 15 minute Residual ISI low TCA in ps/nm";
                    }
    
                    leaf threshold-24hrs {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 24 hour Residual ISI low TCA in ps/nm";
                    }
                  }  // container residual-isi-low-tca
    
                  container pam-histogram-high-tca {
                    description
                      "PAM Histogram high TCA";
                    uses apply-advanced;
    
                    choice enable-tca-choice {
                      leaf enable-tca {
                        type empty;
                        description "Enable tca";
                      }
                      leaf no-enable-tca {
                        type empty;
                        description
                          "Don't enable tca";
                      }
                    }  // choice enable-tca-choice
    
                    leaf threshold {
                      type string {
                        junos:posix-pattern "^[0-9]+$";
                        junos:pattern-message "must be an unsigned integer";
                      }
                      description
                        "Threshold for 15 minute PAM Histogram high TCA";
                    }
    
                    leaf threshold-24hrs {
                      type string {
                        junos:posix-pattern "^[0-9]+$";
                        junos:pattern-message "must be an unsigned integer";
                      }
                      description
                        "Threshold for 24 hour PAM Histogram high TCA";
                    }
                  }  // container pam-histogram-high-tca
    
                  container snr-low-tca {
                    description "SNR low TCA";
                    uses apply-advanced;
    
                    choice enable-tca-choice {
                      leaf enable-tca {
                        type empty;
                        description "Enable tca";
                      }
                      leaf no-enable-tca {
                        type empty;
                        description
                          "Don't enable tca";
                      }
                    }  // choice enable-tca-choice
    
                    leaf threshold {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 15 minute SNR low TCA in dBm ";
                    }
    
                    leaf threshold-24hrs {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 24 hour SNR low TCA in dBm";
                    }
                  }  // container snr-low-tca
    
                  container fec-corrected-errors-high-tca {
                    description
                      "FEC Corrected Error High Threshold crossing defect trigger";
                    uses apply-advanced;
    
                    choice enable-tca-choice {
                      leaf enable-tca {
                        type empty;
                        description
                          "Enable the FEC Corrected Errors threshold crossing alert";
                      }
                      leaf no-enable-tca {
                        type empty;
                        description
                          "Don't enable the FEC Corrected Errors threshold crossing alert";
                      }
                    }  // choice enable-tca-choice
    
                    leaf threshold {
                      type string {
                        junos:posix-pattern "^[0-9]+(\.[0-9]+)?e-[0-9]$";
                        junos:pattern-message "FEC Corrected-Errs threshold value in format: xe-n, x is an integer or decimal number, n = 0..9";
                      }
                      default "10e-3";
                      description
                        "FEC Corrected-Errs value in format: xe-n, x is an integer or decimal number, n = 0..9";
                    }
    
                    leaf threshold-24hrs {
                      type string {
                        junos:posix-pattern "^[0-9]+(\.[0-9]+)?e-[0-9]$";
                        junos:pattern-message "FEC Corrected-Errs threshold value in format: xe-n, x is an integer or decimal number, n = 0..9";
                      }
                      default "10e-3";
                      description
                        "FEC Corrected-Errs value in format: xe-n, x is an integer or decimal number, n = 0..9";
                    }
                  }  // container fec-corrected-errors-high-tca
    
                  container fec-ucorrected-words-high-tca {
                    description
                      "FEC UCorrected Words High Threshold crossing defect trigger";
                    uses apply-advanced;
    
                    choice enable-tca-choice {
                      leaf enable-tca {
                        type empty;
                        description
                          "Enable the FEC UCorrected Words threshold crossing alert";
                      }
                      leaf no-enable-tca {
                        type empty;
                        description
                          "Don't enable the FEC UCorrected Words threshold crossing alert";
                      }
                    }  // choice enable-tca-choice
    
                    leaf threshold {
                      type string {
                        junos:posix-pattern "^[0-9]+(\.[0-9]+)?e-[0-9]$";
                        junos:pattern-message "FEC UCorrected-Words threshold value in format: xe-n, x is an integer or decimal number, n = 0..9";
                      }
                      default "10e-3";
                      description
                        "FEC UCorrected-Words value in format: xe-n, x is an integer or decimal number, n = 0..9";
                    }
    
                    leaf threshold-24hrs {
                      type string {
                        junos:posix-pattern "^[0-9]+(\.[0-9]+)?e-[0-9]$";
                        junos:pattern-message "FEC UCorrected-Words threshold value in format: xe-n, x is an integer or decimal number, n = 0..9";
                      }
                      default "10e-3";
                      description
                        "FEC UCorrected-Words value in format: xe-n, x is an integer or decimal number, n = 0..9";
                    }
                  }  // container fec-ucorrected-words-high-tca
    
                  container laser-frequency-error-high-tca {
                    description
                      "Laser frequency error high TCA";
                    uses apply-advanced;
    
                    choice enable-tca-choice {
                      leaf enable-tca {
                        type empty;
                        description "Enable tca";
                      }
                      leaf no-enable-tca {
                        type empty;
                        description
                          "Don't enable tca";
                      }
                    }  // choice enable-tca-choice
    
                    leaf threshold {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 15 minute frequency error high TCA in MHz";
                    }
    
                    leaf threshold-24hrs {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 24 hour frequency error high TCA in MHz";
                    }
                  }  // container laser-frequency-error-high-tca
    
                  container laser-frequency-error-low-tca {
                    description
                      "Laser frequency error low TCA";
                    uses apply-advanced;
    
                    choice enable-tca-choice {
                      leaf enable-tca {
                        type empty;
                        description "Enable tca";
                      }
                      leaf no-enable-tca {
                        type empty;
                        description
                          "Don't enable tca";
                      }
                    }  // choice enable-tca-choice
    
                    leaf threshold {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 15 minute frequency error low TCA in MHz";
                    }
    
                    leaf threshold-24hrs {
                      type string {
                        junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                        junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                      }
                      description
                        "Threshold for 24 hour frequency error low TCA in MHz";
                    }
                  }  // container laser-frequency-error-low-tca
                }  // container tca
    
                list warning {
                  key "name";
                  ordered-by user;
                  description
                    "Set optic warnings";
                  leaf name {
                    type enumeration {
                      enum "low-light-warning" {
                        value 0;
                        description
                          "Enable low light warning";
                      }
                    }
                  }
    
                  uses apply-advanced;
    
                  choice actiontype {
                    leaf syslog {
                      type empty;
                      description
                        "Set action as syslog";
                    }
                    leaf link-down {
                      type empty;
                      description
                        "Set action as link-down";
                    }
                  }  // choice actiontype
                }  // list warning
    
                choice lane-info {
                  case case_1 {
                  }  // case case_1
    
                  case case_2 {
                  }  // case case_2
                }  // choice lane-info
              }  // container optics-options
    
              container tdm-options {
                description
                  "Time division multiplexing (TDM) interface-specific options";
                uses tdm_options_type;
              }  // container tdm-options
    
              container och-options {
                description
                  "Optical channel configuration options";
                uses och-attributes;
              }  // container och-options
    
              container otu-options {
                description
                  "Optical transmission unit configuration options";
                uses otu-attributes;
              }  // container otu-options
    
              container odu-options {
                description
                  "Optical data unit configuration options";
                uses odu-attributes;
              }  // container odu-options
    
              container ett-options {
                description
                  "Transport ethernet client configuration options";
                uses ett-attributes;
              }  // container ett-options
    
              container fastether-options {
                description
                  "Fast Ethernet interface-specific options";
                uses apply-advanced;
    
                choice loopback-choice {
                  leaf loopback {
                    type empty;
                    description
                      "Enable loopback";
                  }
                  leaf no-loopback {
                    type empty;
                    description
                      "Don't enable loopback";
                  }
                }  // choice loopback-choice
    
                choice flow-control-choice {
                  leaf flow-control {
                    type empty;
                    description
                      "Enable flow control";
                  }
                  leaf no-flow-control {
                    type empty;
                    description
                      "Don't enable flow control";
                  }
                }  // choice flow-control-choice
    
                choice source-filtering-choice {
                  leaf source-filtering {
                    type empty;
                    description
                      "Enable source address filtering";
                  }
                  leaf no-source-filtering {
                    type empty;
                    description
                      "Don't enable source address filtering";
                  }
                }  // choice source-filtering-choice
    
                leaf ingress-rate-limit {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  units "megabits per second";
                  description
                    "Ingress rate at port";
                }
    
                list source-address-filter {
                  key "name";
                  ordered-by user;
                  description
                    "Source address filters";
                  leaf name {
                    type jt:mac-addr;
                    description
                      "Remote MAC address";
                  }
                }  // list source-address-filter
    
                container ieee-802.3ad {
                  junos:must "(!("system autoinstallation"))";
                  junos:must-message "incompatible with 'system autoinstallation'";
                  description "IEEE 802.3ad";
                  uses apply-advanced;
    
                  container lacp {
                    description
                      "Link Aggregation Control Protocol configuration";
                    uses apply-advanced;
    
                    leaf port-priority {
                      type union {
                        type uint16;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Priority of the port (0 ... 65535)";
                    }
                  }  // container lacp
    
                  leaf bundle {
                    junos:must "(!(".. .. .. vlan-offload"))";
                    junos:must-message "ae child device vlan-offload is not allowed";
                    junos:must "(!(".. .. .. flow-control"))";
                    junos:must-message "Setting flow-control on ae child device is not allowed";
                    junos:must "(!(".. .. .. mtu"))";
                    junos:must-message "Setting mtu on ae child device is not allowed";
                    junos:must "(!(".. .. .. vlan-vci-tagging"))";
                    junos:must-message "ae child device vlan-vci-tagging is not allowed";
                    junos:must "(!(".. .. .. stacked-vlan-tagging"))";
                    junos:must-message "ae child device stacked-vlan-tagging is not allowed";
                    junos:must "(!(".. .. .. flexible-vlan-tagging"))";
                    junos:must-message "ae child device flexible-vlan-tagging is not allowed";
                    junos:must "(!(".. .. .. vlan-tagging"))";
                    junos:must-message "ae child device vlan-tagging is not allowed";
                    type union {
                      type jt:interface-device;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description
                      "Join an aggregated Ethernet interface";
                  }
    
                  choice type {
                    leaf primary {
                      type empty;
                      description
                        "Primary interface for link-protection mode";
                    }
                    leaf backup {
                      type empty;
                      description
                        "Backup interface for link-protection mode";
                    }
                  }  // choice type
                }  // container ieee-802.3ad
    
                container mpls {
                  description "MPLS options";
                  uses mpls_ifd_options;
                }  // container mpls
    
                leaf ignore-l3-incompletes {
                  type empty;
                  description
                    "Ignore L3 incomplete errors";
                }
              }  // container fastether-options
    
              container aggregated-ether-options {
                description
                  "Aggregated Ethernet interface-specific options";
                uses apply-advanced;
    
                choice loopback-choice {
                  leaf loopback {
                    type empty;
                    description
                      "Enable loopback";
                  }
                  leaf no-loopback {
                    type empty;
                    description
                      "Don't enable loopback";
                  }
                }  // choice loopback-choice
    
                choice flow-control-choice {
                  leaf flow-control {
                    type empty;
                    description
                      "Enable flow control";
                  }
                  leaf no-flow-control {
                    type empty;
                    description
                      "Don't enable flow control";
                  }
                }  // choice flow-control-choice
    
                choice source-filtering-choice {
                  leaf source-filtering {
                    type empty;
                    description
                      "Enable source address filtering";
                  }
                  leaf no-source-filtering {
                    type empty;
                    description
                      "Don't enable source address filtering";
                  }
                }  // choice source-filtering-choice
    
                leaf autostate-exclude {
                  type empty;
                  description
                    "Interface will not contribute to IRB state";
                }
    
                container link-protection {
                  presence
                    "enable link-protection";
                  description
                    "Enable link protection mode";
                  uses apply-advanced;
    
                  leaf revertive {
                    junos:must "(!("interfaces ${interface} aggregated-ether-options link-protection non-revertive"))";
                    junos:must-message "link-protection revertive and non-revertive are mutually exclusive";
                    junos:must "(!("chassis aggregated-devices ethernet lacp"))";
                    junos:must-message "link-protection revertive and LACP are mutually exclusive";
                    junos:must "(!("interfaces ${interface} aggregated-ether-options lacp"))";
                    junos:must-message "link-protection revertive and LACP are mutually exclusive";
                    type empty;
                    description
                      "Revert back from active backup link to primary, if primary is UP";
                  }
    
                  leaf non-revertive {
                    junos:must "(!("interfaces ${interface} aggregated-ether-options link-protection revertive"))";
                    junos:must-message "link-protection revertive and non-revertive are mutually exclusive";
                    junos:must "(!("chassis aggregated-devices ethernet lacp"))";
                    junos:must-message "link-protection revertive and LACP are mutually exclusive";
                    junos:must "(!("interfaces ${interface} aggregated-ether-options lacp"))";
                    junos:must-message "link-protection revertive and LACP are mutually exclusive";
                    type empty;
                    description
                      "Do not revert back (default mode) from active backup link to primary, if primary is UP";
                  }
    
                  leaf backup-state {
                    type enumeration {
                      enum "accept-data" {
                        value 0;
                        description
                          "Accept data on receive channel of backup link";
                      }
                      enum "discard-data" {
                        value 1;
                        description
                          "Discard data on receive channel of backup link";
                      }
                      enum "down" {
                        junos:must "(!("chassis aggregated-devices ethernet lacp"))";
                        junos:must-message "backup-state down and LACP are mutually exclusive";
                        junos:must "(!("interfaces ${interface} aggregated-ether-options lacp"))";
                        junos:must-message "backup-state down and LACP are mutually exclusive";
                        value 2;
                        description
                          "Backup link is marked down";
                      }
                    }
                    default "accept-data";
                    description
                      "Link protection backup link state";
                  }
    
                  container rtg-config {
                    presence "enable rtg-config";
                    description
                      "RTG enable on AE";
                    uses apply-advanced;
    
                    leaf preempt-cutover-timer {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "0 .. 255";
                        }
                      }
                      default "1";
                      description
                        "RTG preempt-cutover-timer in seconds";
                    }
                  }  // container rtg-config
                }  // container link-protection
    
                choice fcoe-lag-choice {
                  leaf fcoe-lag {
                    type empty;
                    description
                      "Enable FIP/FCoE LAG";
                  }
                  leaf no-fcoe-lag {
                    type empty;
                    description
                      "Don't enable FIP/FCoE LAG";
                  }
                }  // choice fcoe-lag-choice
    
                list source-address-filter {
                  key "name";
                  ordered-by user;
                  description
                    "Source address filters";
                  leaf name {
                    type jt:mac-addr;
                    description
                      "Remote MAC address";
                  }
                }  // list source-address-filter
    
                container load-balance {
                  uses aggregate-load-balance;
                }  // container load-balance
    
                container bfd-liveness-detection {
                  junos:must "(!(".. lacp fast-failover"))";
                  junos:must-message "BFD not supported with lacp with fast-failover mode";
                  junos:must "(!(".. lacp link-protection"))";
                  junos:must-message "BFD not supported with lacp link protection";
                  junos:must "(!(".. link-protection"))";
                  junos:must-message "BFD not supported with link protection";
                  description
                    "Bidirectional Forwarding Detection (BFD) options";
                  uses apply-advanced;
    
                  leaf version {
                    type enumeration {
                      enum "0" {
                        value 0;
                        description
                          "BFD version 0 (deprecated)";
                      }
                      enum "1" {
                        value 1;
                        description
                          "BFD version 1";
                      }
                      enum "automatic" {
                        value 2;
                        description
                          "Choose BFD version automatically";
                      }
                    }
                    default "automatic";
                    description
                      "BFD protocol version number";
                  }
    
                  leaf minimum-interval {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "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 authentication {
                    description
                      "Authentication options";
                    uses apply-advanced;
    
                    leaf key-chain {
                      junos:must "(".. algorithm")";
                      junos:must-message "May not be configured without algorithm";
                      junos:must "("security authentication-key-chains key-chain $$")";
                      junos:must-message "Referenced key-chain must be defined";
                      type string;
                      description
                        "Key chain name";
                    }
    
                    leaf algorithm {
                      junos:must "(".. key-chain")";
                      junos:must-message "May not be configured without key-chain";
                      type enumeration {
                        enum "simple-password" {
                          value 0;
                          description
                            "Simple password";
                        }
                        enum "keyed-md5" {
                          value 1;
                          description
                            "Keyed message Digest 5";
                        }
                        enum
                          "meticulous-keyed-md5" {
                          value 2;
                          description
                            "Meticulous keyed message Digest 5";
                        }
                        enum "keyed-sha-1" {
                          value 3;
                          description
                            "Keyed secure hash algorithm (SHA1) ";
                        }
                        enum
                          "meticulous-keyed-sha-1" {
                          value 4;
                          description
                            "Meticulous keyed secure hash algorithm (SHA1) ";
                        }
                      }
                      description
                        "Algorithm name";
                    }
    
                    leaf loose-check {
                      type empty;
                      description
                        "Verify authentication only if authentication is negotiated";
                    }
                  }  // container authentication
    
                  leaf neighbor {
                    type jt:ipaddr;
                    description
                      "BFD neighbor address";
                  }
    
                  leaf local-address {
                    type jt:ipaddr;
                    description
                      "BFD local address";
                  }
    
                  leaf holddown-interval {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 255000";
                      }
                    }
                    units "milliseconds";
                    description
                      "Time to hold the session-UP notification to the client";
                  }
                }  // container bfd-liveness-detection
    
                leaf minimum-links {
                  junos:must "(!("interfaces ${interface} aggregated-ether-options link-speed mixed"))";
                  junos:must-message "Minimum-links option is not compatible with link-speed mixed";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16;
                  }
                  description
                    "Minimum number of aggregated links";
                }
    
                container minimum-bandwidth {
                  junos:must "(!("interfaces ${interface}  aggregated-ether-options optimize-aggregate-frr"))";
                  junos:must-message "Minimum-bandwidth and optimize-aggregate-frr are mutually exclusive";
                  junos:must "(!("interfaces ${interface}  aggregated-ether-options minimum-links"))";
                  junos:must-message "Minimum-bandwidth and minimum-links are mutually exclusive";
                  presence
                    "enable minimum-bandwidth";
                  description
                    "Minimum bandwidth configured for aggregated bundle";
                  uses apply-advanced;
    
                  leaf bw-value {
                    type union {
                      type uint64;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    default "1";
                    description
                      "Bandwidth value";
                  }
    
                  leaf bw-unit {
                    type enumeration {
                      enum "bps" {
                        value 0;
                        description
                          "Links are in bits per sec";
                      }
                      enum "kbps" {
                        value 1;
                        description
                          "Links are in kilo bits per sec";
                      }
                      enum "mbps" {
                        value 2;
                        description
                          "Links are in mega bits per sec";
                      }
                      enum "gbps" {
                        value 3;
                        description
                          "Links are in giga bits per sec ";
                      }
                    }
                    description "Bandwidth unit";
                  }
                }  // container minimum-bandwidth
    
                choice redundancy_choice {
                  case case_1 {
                  }  // case case_1
    
                  case case_2 {
                  }  // case case_2
                }  // choice redundancy_choice
    
                container rebalance-periodic {
                  uses apply-advanced;
                }  // container rebalance-periodic
    
                leaf link-speed {
                  type enumeration {
                    enum "10m" {
                      value 0;
                      description
                        "Links are 10M";
                    }
                    enum "100m" {
                      value 1;
                      description
                        "Links are 100M";
                    }
                    enum "1g" {
                      value 2;
                      description "Links are 1G";
                    }
                    enum "2.5g" {
                      value 3;
                      description
                        "Links are 2.5G";
                    }
                    enum "5g" {
                      value 4;
                      description "Links are 5G";
                    }
                    enum "8g" {
                      value 5;
                      description "Links are 8G";
                    }
                    enum "10g" {
                      value 6;
                      description
                        "Links are 10G";
                    }
                    enum "25g" {
                      value 7;
                      description
                        "Links are 25G";
                    }
                    enum "40g" {
                      value 8;
                      description
                        "Links are 40G";
                    }
                    enum "50g" {
                      value 9;
                      description
                        "Links are 50G";
                    }
                    enum "80g" {
                      value 10;
                      description
                        "Links are 80G";
                    }
                    enum "100g" {
                      value 11;
                      description
                        "Links are 100G";
                    }
                    enum "400g" {
                      value 12;
                      description
                        "Links are 400G";
                    }
                    enum "oc192" {
                      value 13;
                      description
                        "Links are OC-192";
                    }
                    enum "mixed" {
                      junos:must "(!("interfaces ${interface} per-unit-scheduler"))";
                      junos:must-message "per-unit-scheduler is incompatible with link-speed mixed";
                      junos:must "(!(".. resilient-hash"))";
                      junos:must-message "Mixed-rate AE is not supported along with Resilient Hashing  mode";
                      junos:must "(!(".. load-balance adaptive"))";
                      junos:must-message "Mixed-rate AE is not supported along with Adaptive Load balance mode";
                      value 14;
                      description
                        "Links are various speeds";
                    }
                  }
                  description
                    "Link speed of individual interface that joins the AE";
                }
    
                container local-bias {
                  presence "enable local-bias";
                  description
                    "Turn on local bias functionality";
                  uses apply-advanced;
    
                  leaf disable {
                    type empty;
                    description
                      "Disable local-bias";
                  }
                }  // container local-bias
    
                container dlb {
                  junos:must "(!(".. resilient-hash"))";
                  junos:must-message "Dynamic Load Balancing AE is not supported along with resilient hash";
                  description
                    "Enable DLB on LAG";
                  uses apply-advanced;
    
                  choice mode {
                    leaf per-packet {
                      type empty;
                      description
                        "Per-packet link assignment";
                    }
                    leaf assigned-flow {
                      type empty;
                      description
                        "Fixed link assignment";
                    }
                    container flowlet {
                      presence "enable flowlet";
                      description
                        "Inactivity-based link assignment";
                      uses apply-advanced;
    
                      leaf inactivity-interval {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "16 .. 100000";
                          }
                        }
                        default "256";
                        description
                          " Minimum inactivity interval in micro-seconds for link re-assignment";
                      }
                    }  // container flowlet
                  }  // choice mode
                }  // container dlb
    
                container lacp {
                  description
                    "Link Aggregation Control Protocol configuration";
                  uses apply-advanced;
    
                  choice mode {
                    leaf active {
                      type empty;
                      description
                        "Initiate transmission of LACP packets";
                    }
                    leaf passive {
                      type empty;
                      description
                        "Respond to LACP packets";
                    }
                  }  // choice mode
    
                  leaf periodic {
                    type enumeration {
                      enum "fast" {
                        value 0;
                        description
                          "Receive packets every second";
                      }
                      enum "slow" {
                        value 1;
                        description
                          "Receive packets every 30 seconds";
                      }
                    }
                    description
                      "Timer interval for periodic transmission of LACP packets";
                  }
    
                  leaf multiplier {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "3 .. 30";
                      }
                    }
                    description
                      "LACP timeout detection multiplier";
                  }
    
                  container link-protection {
                    junos:must "(!(".. .. link-protection"))";
                    junos:must-message "LACP and non LACP based link-protection not allowed together";
                    presence
                      "enable link-protection";
                    uses apply-advanced;
    
                    leaf disable {
                      type empty;
                      description
                        "To turn off LACP link-protection";
                    }
    
                    choice mode {
                      leaf revertive {
                        type empty;
                        description
                          "Switch links when better priority link comes up";
                      }
                      leaf non-revertive {
                        type empty;
                        description
                          "Do not switch links when better priority link comes up";
                      }
                    }  // choice mode
    
                    container rtg-config {
                      presence
                        "enable rtg-config";
                      description
                        "RTG Feature enable on AE";
                      uses apply-advanced;
    
                      leaf preempt-cutover-timer {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "0 .. 255";
                          }
                        }
                        default "1";
                        description
                          "RTG preempt-cutover-timer in seconds";
                      }
                    }  // container rtg-config
                  }  // container link-protection
    
                  leaf sync-reset {
                    type enumeration {
                      enum "disable" {
                        value 0;
                        description
                          "To disable minimum-link failure handling at LACP level";
                      }
                      enum "enable" {
                        value 1;
                        description
                          "To enable minimum-link failure handling at LACP level";
                      }
                    }
                    description
                      "On minimum-link failure notify out of sync to peer";
                  }
    
                  leaf system-priority {
                    type string;
                    description
                      "Priority of the system (0 ... 65535)";
                  }
    
                  leaf system-id {
                    type jt:mac-addr;
                    description
                      "Node's System ID, encoded as a MAC address";
                  }
    
                  leaf admin-key {
                    type union {
                      type uint16;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description
                      "Node's administrative key";
                  }
                }  // container lacp
    
                list link-protection-sub-group {
                  key "name";
                  ordered-by user;
                  description
                    "Link Protection subgroup configuration";
                  leaf name {
                    type string {
                      length "2 .. 64";
                    }
                    description
                      "Name of the subgroup";
                  }
    
                  uses apply-advanced;
    
                  choice type {
                    leaf primary {
                      type empty;
                      description
                        "Primary subgroup for N:N link-protection mode";
                    }
                    leaf backup {
                      type empty;
                      description
                        "Backup subgroup for N:N link-protection mode";
                    }
                  }  // choice type
                }  // list link-protection-sub-group
    
                container ethernet-switch-profile {
                  description
                    "Ethernet virtual LAN/media access control-level options";
                  uses apply-advanced;
    
                  leaf-list tag-protocol-id {
                    type string;
                    ordered-by user;
                    description
                      "IEEE 802.1q Tag Protocol Identifier values for VLAN-tagged frames";
                  }
    
                  leaf mac-learn-enable {
                    type empty;
                    description
                      "Learn MAC addresses dynamically";
                  }
                }  // container ethernet-switch-profile
    
                container mc-ae {
                  junos:must "(!((".. link-protection" || ".. lacp link-protection")))";
                  junos:must-message "MC-AE and link-protection on AE can not co-exist";
                  junos:must "(".. lacp admin-key")";
                  junos:must-message "LACP admin-key must be configured for MC-AE";
                  junos:must "(".. lacp system-id")";
                  junos:must-message "LACP system-id must be configured for MC-AE";
                  junos:must "(!(".. .. encapsulation vlan-ccc"))";
                  junos:must-message "Encapsulation vlan-ccc is not supported with MC-AE";
                  description
                    "Multi-chassis aggregation (MC-AE) network device configuration";
                  uses apply-advanced;
    
                  leaf mc-ae-id {
                    junos:must "(unique "interfaces <*>  aggregated-ether-options mc-ae mc-ae-id $$")";
                    junos:must-message "MC-AE id alredy being used";
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint16 {
                        range "1 .. 65535";
                      }
                    }
                    description "MC-AE group id";
                  }
    
                  leaf redundancy-group {
                    junos:must "((any "protocols iccp peer <*> redundancy-group-id-list $$" || any "logical-systems <*> protocols iccp peer <*> redundancy-group-id-list $$"))";
                    junos:must-message "The redundancy group must match with one defined at <protocols iccp peer redundancy-group-id-list>";
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 4294967294";
                      }
                    }
                    description
                      "Redundancy group id";
                  }
    
                  leaf chassis-id {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint16 {
                        range "0 .. 1";
                      }
                    }
                    description
                      "Chassis id of MC-AE network device";
                  }
    
                  leaf mode {
                    type enumeration {
                      enum "active-standby" {
                        value 0;
                        description
                          "MC-AE in active-standby mode";
                      }
                      enum "active-active" {
                        junos:must "(!(any "interfaces ${interface} unit <*> family inet6"))";
                        junos:must-message "family inet6 is not supported with MC-AE active-active";
                        junos:must "(!(any "interfaces ${interface} unit <*> family inet"))";
                        junos:must-message "family inet is not supported with MC-AE active-active";
                        value 1;
                        description
                          "MC-AE in active-active mode";
                      }
                    }
                    description
                      "Mode of the MC-AE";
                  }
    
                  leaf status-control {
                    type enumeration {
                      enum "active" {
                        value 0;
                        description
                          "Chassis is Active";
                      }
                      enum "standby" {
                        value 1;
                        description
                          "Chassis is Standby";
                      }
                    }
                    description
                      "Status of the MC-AE chassis";
                  }
    
                  leaf switchover-mode {
                    type enumeration {
                      enum "revertive" {
                        junos:must "(".. .. mc-ae mode active-standby")";
                        junos:must-message "Only Supported in Active-Standby mode.";
                        junos:must "(!(".. .. mc-ae status-control standby"))";
                        junos:must-message "Supported only when status control is Active";
                        value 0;
                        description
                          "Switch mcae node when preferred link comes up";
                      }
                      enum "non-revertive" {
                        junos:must "(".. .. mc-ae mode active-standby")";
                        junos:must-message "Only Supported in Active-Standby mode.";
                        junos:must "(".. .. mc-ae status-control active")";
                        junos:must-message "Supported only when status control is Active";
                        value 1;
                        description
                          "Do not switch mcae node when preferred link comes up";
                      }
                    }
                    description
                      "Switchover mode";
                  }
    
                  leaf revert-time {
                    junos:must "(".. .. mc-ae mode active-standby")";
                    junos:must-message "Only Supported in Active-Standby mode.";
                    junos:must "(".. .. mc-ae status-control active")";
                    junos:must-message "Supported only when status control is Active";
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 10";
                      }
                    }
                    units "minute";
                    default "3";
                    description
                      "Wait interval before performing switchover";
                  }
    
                  container events {
                    presence "enable events";
                    description
                      "MCAE related events";
                    uses apply-advanced;
    
                    container iccp-peer-down {
                      presence
                        "enable iccp-peer-down";
                      description
                        "Define behavior in the event of ICCP peer down";
                      uses apply-advanced;
    
                      leaf force-icl-down {
                        type empty;
                        description
                          "Bring down ICL logical interface";
                      }
    
                      leaf prefer-status-control-active {
                        type empty;
                        description
                          "Keep this node up (recommended only on status-control active)";
                      }
                    }  // container iccp-peer-down
                  }  // container events
                }  // container mc-ae
              }  // container aggregated-ether-options
    
              container es-options {
                description
                  "ES PIC interface-specific options";
                uses apply-advanced;
    
                leaf backup-interface {
                  type union {
                    type jt:interface-device;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description
                    "Name of backup interface";
                }
              }  // container es-options
    
              container vdsl-options {
                description
                  "VDSL interface-specific options";
                uses apply-advanced;
    
                leaf vdsl-profile {
                  type enumeration {
                    enum "auto" {
                      value 0;
                      description "Auto";
                    }
                    enum "8a" {
                      value 1;
                      description "Profile 8a";
                    }
                    enum "8b" {
                      value 2;
                      description "Profile 8b";
                    }
                    enum "8c" {
                      value 3;
                      description "Profile 8c";
                    }
                    enum "8d" {
                      value 4;
                      description "Profile 8d";
                    }
                    enum "12a" {
                      value 5;
                      description "Profile 12a";
                    }
                    enum "12b" {
                      value 6;
                      description "Profile 12b";
                    }
                    enum "17a" {
                      value 7;
                      description "Profile 17a";
                    }
                  }
                  description "VDSL profile";
                }
    
                leaf sra {
                  type enumeration {
                    enum "enable" {
                      value 0;
                      description "Enable SRA";
                    }
                    enum "disable" {
                      value 1;
                      description "Disable SRA";
                    }
                  }
                  default "disable";
                  description "DSL SRA";
                }
    
                leaf v43 {
                  type enumeration {
                    enum "enable" {
                      value 0;
                      description "Enable V43";
                    }
                    enum "disable" {
                      value 1;
                      description "Disable V43";
                    }
                  }
                  default "enable";
                  description "DSL V43 tones";
                }
    
                leaf sos {
                  type empty;
                  description "Enable SOS";
                }
              }  // container vdsl-options
    
              container dsl-sfp-options {
                description "DSL SFP options";
                uses apply-advanced;
    
                container adsl-options {
                  description "ADSL options";
                  uses apply-advanced;
    
                  leaf vpi {
                    junos:must "(".. vci")";
                    junos:must-message "vci must be specified";
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 255";
                      }
                    }
                    description
                      "Virtual path identifier";
                  }
    
                  leaf vci {
                    junos:must "(".. vpi")";
                    junos:must-message "vpi must be specified";
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "32 .. 65535";
                      }
                    }
                    description
                      "Virtual circuit identifier";
                  }
    
                  leaf encap {
                    junos:must "((".. vci" && ".. vpi"))";
                    junos:must-message "vci and vpi must be specified";
                    type enumeration {
                      enum "bypass" {
                        value 0;
                        description "Bypass";
                      }
                      enum
                        "llcsnap-bridged-802dot1q" {
                        value 1;
                        description
                          "LLCSNAP bridged 802.1q";
                      }
                      enum "llcsnap-routed-ip" {
                        value 2;
                        description
                          "LLCSNAP routed ip";
                      }
                      enum "vc-mux-bridged" {
                        value 3;
                        description
                          "VC MUX bridged";
                      }
                      enum "vc-mux-routed-ip" {
                        value 4;
                        description
                          "VC MUX routed ip";
                      }
                      enum "generic" {
                        value 5;
                        description "Generic";
                      }
                    }
                    description "Encapsulation";
                  }
    
                  leaf annex {
                    junos:must "((".. vci" && ".. vpi"))";
                    junos:must-message "vci and vpi must be specified";
                    type enumeration {
                      enum "auto" {
                        value 0;
                        description
                          "Annex type auto";
                      }
                      enum "annexj-off" {
                        value 1;
                        description
                          "Annex type annexj turn off";
                      }
                    }
                    description "Annex type";
                  }
                }  // container adsl-options
    
                container vdsl-options {
                  description "VDSL options";
                  uses apply-advanced;
    
                  leaf profile {
                    type enumeration {
                      enum "auto" {
                        value 0;
                        description "Automatic";
                      }
                      enum "8a" {
                        value 1;
                        description "Profile 8a";
                      }
                      enum "8b" {
                        value 2;
                        description "Profile 8b";
                      }
                      enum "8c" {
                        value 3;
                        description "Profile 8c";
                      }
                      enum "8d" {
                        value 4;
                        description "Profile 8d";
                      }
                      enum "12a" {
                        value 5;
                        description
                          "Profile 12a";
                      }
                      enum "12b" {
                        value 6;
                        description
                          "Profile 12b";
                      }
                      enum "17a" {
                        value 7;
                        description
                          "Profile 17a";
                      }
                      enum "30a" {
                        value 8;
                        description
                          "Profile 30a";
                      }
                    }
                    description "VDSL profile";
                  }
    
                  leaf carrier {
                    type enumeration {
                      enum "auto" {
                        value 0;
                        description "Automatic";
                      }
                      enum "a43" {
                        value 1;
                        description
                          "Carrier A43";
                      }
                      enum "b43" {
                        value 2;
                        description
                          "Carrier B43";
                      }
                    }
                    description
                      "Carrier setting";
                  }
                }  // container vdsl-options
    
                container gfast-options {
                  description "G.fast options";
                  uses apply-advanced;
    
                  leaf carrier {
                    type enumeration {
                      enum "a43" {
                        value 0;
                        description
                          "Carrier A43";
                      }
                      enum "a43c" {
                        value 1;
                        description
                          "Carrier A43C";
                      }
                      enum "b43" {
                        value 2;
                        description
                          "Carrier B43";
                      }
                      enum "b43c" {
                        value 3;
                        description
                          "Carrier B43C";
                      }
                    }
                    description
                      "Carrier setting";
                  }
                }  // container gfast-options
              }  // container dsl-sfp-options
    
              container shdsl-options {
                junos:must "(!("interfaces ${interface} vdsl-options"))";
                junos:must-message "VDSL options cannot co-exist with SHDSL options on the same interface";
                junos:must "(!("interfaces ${interface} dsl-options"))";
                junos:must-message "DSL options cannot co-exist with SHDSL options on the same interface";
                description
                  "SHDSL interface-specific options";
                uses apply-advanced;
    
                leaf annex {
                  type enumeration {
                    enum "annex-a" {
                      value 0;
                      description "Annex-a PIC";
                    }
                    enum "annex-b" {
                      value 1;
                      description "Annex-b PIC";
                    }
                    enum "annex-f" {
                      value 2;
                      description "Annex-f PIC";
                    }
                    enum "annex-g" {
                      value 3;
                      description "Annex-g PIC";
                    }
                    enum "annex-auto" {
                      value 4;
                      description
                        "Annex-auto PIC";
                    }
                  }
                  default "annex-b";
                  description
                    "Type of SHDSL annex";
                }
    
                leaf line-rate {
                  type string;
                  description "SHDSL line rate";
                }
    
                leaf loopback {
                  type enumeration {
                    enum "local" {
                      value 0;
                      description
                        "Local loopback";
                    }
                    enum "remote" {
                      value 1;
                      description
                        "Remote loopback";
                    }
                  }
                  description "Loopback mode";
                }
    
                container snr-margin {
                  presence "enable snr-margin";
                  description
                    "Signal to noise ratio margin";
                  uses apply-advanced;
    
                  leaf current {
                    type string;
                    units "dB";
                    description
                      "Current signal to noise ratio margin";
                  }
    
                  leaf snext {
                    type string;
                    units "dB";
                    description
                      "SNEXT signal to noise ratio margin";
                  }
                }  // container snr-margin
              }  // container shdsl-options
    
              container container-options {
                description
                  "Container interface specific options";
                uses apply-advanced;
    
                container container-type {
                  presence
                    "enable container-type";
                  description
                    "Protocol type of the container interface";
                  uses apply-advanced;
    
                  choice container-type-choice {
                    container aps {
                      junos:must "((".. .. member-interface-type sonet" || (".. .. member-interface-type atm" || (".. .. member-interface-type channelized-sonet" || ".. .. member-interface-type channelized-sdh"))))";
                      junos:must-message "APS can be enabled on Sonet, Channelized-Sonet, Channelized-SDH  or ATM interfaces only";
                      presence "enable aps";
                      description
                        "APS options on the container";
                      uses aps_type;
                    }  // container aps
                  }  // choice container-type-choice
                }  // container container-type
    
                container member-interface-type {
                  description
                    "Link type of members of container";
                  uses apply-advanced;
    
                  choice member_interface_type_choice {
                    container sonet {
                      uses apply-advanced;
    
                      leaf member-interface-speed {
                        type enumeration {
                          enum "oc3" {
                            value 0;
                            description
                              "Links are OC-3";
                          }
                          enum "oc12" {
                            value 1;
                            description
                              "Links are OC-12";
                          }
                          enum "oc48" {
                            value 2;
                            description
                              "Links are OC-48";
                          }
                          enum "oc192" {
                            value 3;
                            description
                              "Links are OC-192";
                          }
                          enum "oc768" {
                            value 4;
                            description
                              "Links are OC-768";
                          }
                          enum "mixed" {
                            value 5;
                            description
                              "Links are of different speeds";
                          }
                        }
                        description
                          "Link speed of members of container";
                      }
                    }  // container sonet
                    container atm {
                      uses apply-advanced;
    
                      leaf member-interface-speed {
                        type enumeration {
                          enum "oc3" {
                            value 0;
                            description
                              "Links are OC-3";
                          }
                          enum "oc12" {
                            value 1;
                            description
                              "Links are OC-12";
                          }
                          enum "oc48" {
                            value 2;
                            description
                              "Links are OC-48";
                          }
                        }
                        description
                          "Link speed of members of container";
                      }
                    }  // container atm
                    container channelized-sonet {
                      uses apply-advanced;
    
                      leaf member-interface-speed {
                        type enumeration {
                          enum "coc3" {
                            value 0;
                            description
                              "Links are COC-3";
                          }
                          enum "coc12" {
                            value 1;
                            description
                              "Links are COC-12";
                          }
                          enum "coc48" {
                            value 2;
                            description
                              "Links are COC-48";
                          }
                          enum "coc192" {
                            value 3;
                            description
                              "Links are COC-192";
                          }
                          enum "coc768" {
                            value 4;
                            description
                              "Links are COC-768";
                          }
                        }
                        description
                          "Link speed of members of container";
                      }
                    }  // container channelized-sonet
                    container channelized-sdh {
                      uses apply-advanced;
    
                      leaf member-interface-speed {
                        type enumeration {
                          enum "cstm1" {
                            value 0;
                            description
                              "Links are cstm-1";
                          }
                          enum "cstm4" {
                            value 1;
                            description
                              "Links are cstm-4";
                          }
                          enum "cstm16" {
                            value 2;
                            description
                              "Links are cstm-16";
                          }
                          enum "coc64" {
                            value 3;
                            description
                              "Links are cstm-64";
                          }
                          enum "cstm256" {
                            value 4;
                            description
                              "Links are cstm256";
                          }
                        }
                        description
                          "Link speed of members of container";
                      }
                    }  // container channelized-sdh
                  }  // choice member_interface_type_choice
                }  // container member-interface-type
    
                container redundancy {
                  description
                    "Container interface redundancy options";
                  uses apply-advanced;
    
                  container hold-time {
                    description
                      "Hold time for link up and link down";
                    leaf up {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "0 .. 65534";
                        }
                      }
                      units "milliseconds";
                      description
                        "Link up hold time";
                    }
    
                    leaf down {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "0 .. 65534";
                        }
                      }
                      units "milliseconds";
                      description
                        "Link down hold time";
                    }
                  }  // container hold-time
                }  // container redundancy
    
                leaf-list container-list {
                  type union {
                    type jt:interface-device;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  ordered-by user;
                  description
                    "List of container interfaces this member link is associated to";
                }
    
                choice redundancy-type {
                  choice aps-redundancy {
                    leaf primary {
                      type empty;
                      description
                        "This member link is primary interface of the container";
                    }
                    leaf standby {
                      type empty;
                      description
                        "This member link is standby interface of the container";
                    }
                  }  // choice aps-redundancy
                }  // choice redundancy-type
    
                leaf fast-aps {
                  type empty;
                  description "Fast APS switch";
                }
    
                leaf allow-configuration-override {
                  type empty;
                  description
                    "Allow physical configuration of member link to override container configuration";
                }
              }  // container container-options
    
              list unit {
                key "name";
                description "Logical interface";
                leaf name {
                  type string;
                }
    
                uses apply-advanced;
    
                leaf alias {
                  junos:must "(!("interfaces interface-range $$"))";
                  junos:must-message "Interface alias cannot be an existing interface range name";
                  type string;
                  description "Interface alias";
                }
    
                container peer-psd {
                  presence "enable peer-psd";
                  description "Peer psd";
                  leaf psd-name {
                    junos:must "(".. .. peer-interface")";
                    junos:must-message "peer-interface must be configured on this interface";
                    type string;
                    description "Peer psd name";
                  }
                }  // container peer-psd
    
                container peer-interface {
                  presence
                    "enable peer-interface";
                  description "Peer interface";
                  uses apply-advanced;
    
                  leaf interface-name {
                    junos:must "((".. .. peer-psd" || "interfaces $$-IFL peer-interface"))";
                    junos:must-message "Peer interface or peer psd must be configured";
                    type union {
                      type jt:interface-unit;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description
                      "Peer interface name";
                  }
                }  // container peer-interface
    
                container interface-shared-with {
                  junos:must "("chassis system-domains")";
                  junos:must-message "Chassis system-domains must be configured";
                  presence
                    "enable interface-shared-with";
                  description
                    "Specify which PSD owns this logical interface";
                  uses apply-advanced;
    
                  leaf psd-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)";
                  }
                }  // container interface-shared-with
    
                choice enable-disable {
                  leaf disable {
                    type empty;
                    description
                      "Disable this logical interface";
                  }
                }  // choice enable-disable
    
                leaf passive-monitor-mode {
                  type empty;
                  description
                    "Use interface to tap packets from another router";
                }
    
                leaf clear-dont-fragment-bit {
                  type empty;
                  description
                    "Clear DF bit in packet (AS PIC and J-series only as well as MIF)";
                }
    
                leaf description {
                  type string;
                  description
                    "Text description of interface";
                }
    
                leaf encapsulation {
                  type enumeration {
                    enum "atm-nlpid" {
                      value 0;
                      description
                        "ATM NLPID encapsulation";
                    }
                    enum "atm-cisco-nlpid" {
                      value 1;
                      description
                        "Cisco-compatible ATM NLPID encapsulation";
                    }
                    enum "atm-snap" {
                      value 2;
                      description
                        "ATM LLC/SNAP encapsulation";
                    }
                    enum "atm-vc-mux" {
                      value 3;
                      description
                        "ATM VC multiplexing";
                    }
                    enum "atm-ccc-vc-mux" {
                      value 4;
                      description
                        "ATM VC for CCC";
                    }
                    enum "atm-tcc-vc-mux" {
                      value 5;
                      description
                        "ATM VC for translational cross-connect";
                    }
                    enum "atm-tcc-snap" {
                      value 6;
                      description
                        "ATM LLC/SNAP for translational cross-connect";
                    }
                    enum "atm-ccc-cell-relay" {
                      value 7;
                      description
                        "ATM cell relay for CCC";
                    }
                    enum "vlan-vci-ccc" {
                      value 8;
                      description
                        "CCC for VLAN Q-in-Q and ATM VPI/VCI interworking";
                    }
                    enum "ether-over-atm-llc" {
                      value 9;
                      description
                        "Ethernet over ATM (LLC/SNAP) encapsulation";
                    }
                    enum
                      "ether-vpls-over-atm-llc" {
                      value 10;
                      description
                        "Ethernet VPLS over ATM (bridging) encapsulation";
                    }
                    enum
                      "ppp-over-ether-over-atm-llc" {
                      value 11;
                      description
                        "PPPoE over ATM (LLC/SNAP) encapsulation";
                    }
                    enum "ppp-over-ether" {
                      junos:must "(!("forwarding-options hyper-mode"))";
                      junos:must-message "To configure encapsulation ppp-over-ether, 'forwarding-options hyper-mode' should not be configured";
                      junos:must "(!(".. family"))";
                      junos:must-message "Can't configure protocol family with encapsulation ppp-over-ether";
                      value 12;
                      description
                        "PPPoE encapsulation";
                    }
                    enum "atm-ppp-vc-mux" {
                      value 13;
                      description
                        "ATM PPP over raw AAL5";
                    }
                    enum "atm-ppp-llc" {
                      value 14;
                      description
                        "ATM PPP over AAL5/LLC";
                    }
                    enum "atm-mlppp-llc" {
                      value 15;
                      description
                        "ATM MLPPP over AAL5/LLC";
                    }
                    enum "frame-relay-ppp" {
                      junos:must "(!(".. family inet6"))";
                      junos:must-message "family inet6 is not supported on encapsulation frame-relay-ppp";
                      junos:must "(!(".. family inet"))";
                      junos:must-message "family inet is not supported on encapsulation frame-relay-ppp";
                      junos:must "(".. .. encapsulation frame-relay")";
                      junos:must-message "Physical link-layer encapsulation must be frame-relay";
                      value 16;
                      description
                        "PPP over Frame Relay";
                    }
                    enum "frame-relay-ccc" {
                      value 17;
                      description
                        "Frame Relay DLCI for CCC";
                    }
                    enum "frame-relay" {
                      value 18;
                      description
                        "Frame Relay DLCI";
                    }
                    enum "frame-relay-tcc" {
                      value 19;
                      description
                        "Frame Relay DLCI for translational cross-connect";
                    }
                    enum
                      "frame-relay-ether-type" {
                      junos:must "((".. .. encapsulation flexible-frame-relay" || (".. .. encapsulation frame-relay-ether-type" || ".. .. encapsulation frame-relay-ether-type-tcc")))";
                      junos:must-message "Interface encapsulation must be cisco-compatible or flexible frame relay";
                      value 20;
                      description
                        "Cisco-compatible Frame Relay Encapsulation DLCI";
                    }
                    enum
                      "frame-relay-ether-type-tcc" {
                      value 21;
                      description
                        "Cisco-compatible Frame Relay Encapsulation DLCI for TCC";
                    }
                    enum "ether-vpls-fr" {
                      value 22;
                      description
                        "Ethernet VPLS over Frame Relay (bridging) encapsulation";
                    }
                    enum "vlan-ccc" {
                      value 23;
                      description
                        "802.1q tagging for a cross-connect";
                    }
                    enum "ethernet-ccc" {
                      value 24;
                      description
                        "Ethernet for a cross-connect";
                    }
                    enum "vlan-vpls" {
                      value 25;
                      description
                        "VLAN virtual private LAN service";
                    }
                    enum "vlan-bridge" {
                      value 26;
                      description
                        "VLAN layer-2 bridging";
                    }
                    enum "ethernet-tcc" {
                      value 27;
                      description
                        "Ethernet translational cross-connect";
                    }
                    enum "dix" {
                      value 28;
                      description
                        "Ethernet DIXv2 (RFC 894)";
                    }
                    enum "ethernet" {
                      value 29;
                      description
                        "Ethernet II (RFC 894)";
                    }
                    enum "ethernet-vpls" {
                      value 30;
                      description
                        "Ethernet II virtual private LAN service";
                    }
                    enum "ethernet-bridge" {
                      value 31;
                      description
                        "Ethernet II bridging";
                    }
                    enum "vlan" {
                      value 32;
                      description
                        "802.1q-tagged Ethernet";
                    }
                    enum "vlan-tcc" {
                      value 33;
                      description
                        "802.1q tagging for a translational cross-connect";
                    }
                    enum "multilink-ppp" {
                      value 34;
                      description
                        "Multilink PPP";
                    }
                    enum
                      "multilink-frame-relay-end-to-end" {
                      value 35;
                      description
                        "Multilink Frame Relay end-to-end (FRF.15)";
                    }
                    enum "ppp-ccc" {
                      value 36;
                      description
                        "Serial PPP device for a cross-connect";
                    }
                  }
                  description
                    "Logical link-layer encapsulation";
                }
    
                leaf mtu {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32;
                  }
                  description
                    "Maximum transmission unit packet size";
                }
    
                choice pointedness {
                  leaf point-to-point {
                    type empty;
                    description
                      "Point-to-point connection";
                  }
                  leaf multipoint {
                    type empty;
                    description
                      "Multipoint connection";
                  }
                }  // choice pointedness
    
                leaf bandwidth {
                  type string;
                  description
                    "Logical unit bandwidth (informational only)";
                }
    
                choice traps-choice {
                  leaf traps {
                    type empty;
                    description
                      "Enable SNMP notifications on state changes";
                  }
                  leaf no-traps {
                    type empty;
                    description
                      "Don't enable SNMP notifications on state changes";
                  }
                }  // choice traps-choice
    
                choice routing-services-choice {
                  leaf routing-services {
                    type empty;
                    status deprecated;
                    description
                      "Enable routing services";
                  }
                  leaf no-routing-services {
                    type empty;
                    status deprecated;
                    description
                      "Don't enable routing services";
                  }
                }  // choice routing-services-choice
    
                container routing-service {
                  description
                    "Routing Services on this interface";
                  uses apply-advanced;
    
                  choice enable-disable {
                    leaf enable {
                      type empty;
                      description
                        "Enable Routing Service";
                    }
                    leaf disable {
                      type empty;
                      description
                        "Disable Routing Service";
                    }
                  }  // choice enable-disable
                }  // container routing-service
    
                container arp-resp {
                  presence "enable arp-resp";
                  description
                    "Knob to control ARP response on the interface, default is restricted";
                  choice arp-response-options {
                    leaf unrestricted {
                      type empty;
                      description
                        "Enable unrestricted ARP respone on the interface";
                    }
                    leaf restricted {
                      type empty;
                      description
                        "Enable restricted proxy ARP response on the interface";
                    }
                  }  // choice arp-response-options
                }  // container arp-resp
    
                container proxy-arp {
                  junos:must "(!("switch-options no-arp-trap "))";
                  junos:must-message "Cannot enable proxy ARP with no-arp-trap";
                  presence "enable proxy-arp";
                  description
                    "Enable proxy ARP on the interface, default is unrestricted";
                  choice proxyarp-options {
                    leaf unrestricted {
                      type empty;
                      description
                        "Enable unrestricted proxy ARP on the interface";
                    }
                    leaf restricted {
                      type empty;
                      description
                        "Enable restricted proxy ARP on the interface";
                    }
                  }  // choice proxyarp-options
                }  // container proxy-arp
    
                choice vlan_choice {
                  leaf vlan-id {
                    junos:must "(!("interfaces ${interface} stacked-vlan-tagging"))";
                    junos:must-message "vlan-id is not supported on stacked-vlan-tagging mode";
                    type string;
                    description
                      "Virtual LAN identifier value for 802.1q VLAN tags";
                  }
                  leaf vlan-id-range {
                    junos:must "(("interfaces ${interface} vlan-tagging" || "interfaces ${interface} flexible-vlan-tagging"))";
                    junos:must-message "valid only with vlan-tagging or flexible-vlan-tagging mode";
                    type jt:vlan-range;
                    description
                      "Virtual LAN identifier range of form vid1-vid2";
                  }
                  leaf-list inner-vlan-id-swap-ranges {
                    type jt:vlan-range;
                    description
                      "Inner vlan-id swap range(s) of form vid1-vid2 for dynamic L2 VLANs";
                  }
                  leaf-list vlan-id-list {
                    junos:must "((" .. encapsulation vlan-ccc" || ("interfaces ${interface} encapsulation extended-vlan-ccc" || (" .. encapsulation vlan-vpls" || ("interfaces ${interface} encapsulation extended-vlan-vpls" || (" .. encapsulation vlan-bridge" || "interfaces ${interface} encapsulation extended-vlan-bridge"))))))";
                    junos:must-message "valid only with ccc/vpls/bridge encapsulation";
                    junos:must "(("interfaces ${interface} vlan-tagging" || "interfaces ${interface} flexible-vlan-tagging"))";
                    junos:must-message "valid only with vlan-tagging or flexible-vlan-tagging mode";
                    type jt:vlan-range;
                    description
                      "List of VLAN identifiers";
                  }
                  leaf-list vlan-tag {
                    type string;
                    ordered-by user;
                    status deprecated;
                    description
                      "IEEE 802.1q tag list for VLAN tagged frames";
                  }
                  container vlan-tags {
                    junos:must "((!("interfaces ${interface} vlan-tagging") || !((". inner" || (". inner-range" || ". inner-list")))))";
                    junos:must-message "inner/inner-range/inner-list is valid only on stacked-vlan-tagging and flexible-vlan-tagging mode";
                    junos:must "((!("interfaces ${interface} stacked-vlan-tagging") || (". inner" || (". inner-range" || ". inner-list"))))";
                    junos:must-message "inner/inner-range/inner-list must be defined for stacked-vlan-tagging mode";
                    junos:must "((".. demux-options" || ("interfaces ${interface} vlan-tagging" || ("interfaces ${interface} stacked-vlan-tagging" || "interfaces ${interface} flexible-vlan-tagging"))))";
                    junos:must-message "valid only with vlan-tagging, stacked-vlan-tagging or flexible-vlan-tagging mode";
                    presence "enable vlan-tags";
                    description
                      "IEEE 802.1q tags";
                    leaf outer {
                      type string;
                      description
                        "[tpid.]vlan-id, tpid format is 0xNNNN and is optional";
                    }
    
                    choice inner_choice {
                      leaf inner {
                        type string;
                        description
                          "[tpid.]vlan-id, tpid format is 0xNNNN and is optional";
                      }
                      leaf inner-range {
                        type string {
                          junos:posix-pattern "^((0[Xx][0-9A-Fa-f]{4}.){0,1}([1-9][0-9]{0,2}|[1-3][0-9]{3}|40[0-8][0-9]|409[0-4])-([1-9][0-9]{0,2}|[1-3][0-9]{3}|40[0-8][0-9]|409[0-4]))$";
                          junos:pattern-message "vid in vlan-tag ([0xNNNN.]vid1-vid2) must be 1 to 4094";
                        }
                        description
                          "[tpid.]vid1-vid2, tpid format is 0xNNNN and is optional";
                      }
                      leaf-list inner-list {
                        junos:must "((" .. .. encapsulation vlan-ccc" || ("interfaces ${interface} encapsulation extended-vlan-ccc" || (" .. .. encapsulation vlan-vpls" || ("interfaces ${interface} encapsulation extended-vlan-vpls" || (" .. .. encapsulation vlan-bridge" || "interfaces ${interface} encapsulation extended-vlan-bridge"))))))";
                        junos:must-message "valid only with ccc/vpls/bridge encapsulation";
                        type jt:vlan-range;
                        description
                          "List of VLAN identifiers";
                      }
                    }  // choice inner_choice
                  }  // container vlan-tags
                }  // choice vlan_choice
    
                leaf deep-vlan-qualified-learning {
                  junos:must "((".. vlan-tags outer" && ".. vlan-tags inner"))";
                  junos:must-message "deep-vlan-qualified-learning can be specified only with one outer and one inner vlan tags";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "3";
                    }
                  }
                  description
                    "Enable qualified MAC-address learning on the specified vlan tag";
                }
    
                leaf native-inner-vlan-id {
                  junos:must "((".. vlan-tags" || ".. family bridge inner-vlan-id-list"))";
                  junos:must-message "native-inner-vlan-id can be specified only on a dual vlan tagged unit";
                  junos:must "("interfaces ${interface} flexible-vlan-tagging")";
                  junos:must-message "native-inner-vlan-id can be specified only with flexible-vlan-tagging mode";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 4094";
                    }
                  }
                  description
                    "Native virtual LAN identifier for singly tagged frames";
                }
    
                container inner-vlan-id-range {
                  junos:must "("interfaces ${interface} encapsulation vlan-vci-ccc")";
                  junos:must-message "inner-vlan-id-range valid only for vlan-vci-ccc encapsulation";
                  description
                    "Inner vlan-id range start <start-vlan-id> end <end-vlan-id>";
                  leaf start {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "32 .. 4094";
                      }
                    }
                    description
                      "Inner vlan-id range's start value";
                  }
    
                  leaf end {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "32 .. 4094";
                      }
                    }
                    description
                      "Inner vlan-id range's end value";
                  }
                }  // container inner-vlan-id-range
    
                container accept-source-mac {
                  junos:must "(".. family ethernet-switching")";
                  junos:must-message "source mac filters are allowed only on interfaces with family ethernet-switching";
                  description
                    "Remote media access control address to/from which to accept traffic";
                  uses apply-advanced;
    
                  list mac-address {
                    key "name";
                    description
                      "Remote MAC address";
                    uses mac_list;
                  }  // list mac-address
                }  // container accept-source-mac
    
                container input-vlan-map {
                  description
                    "VLAN map operation on input";
                  uses vlan_map;
                }  // container input-vlan-map
    
                container output-vlan-map {
                  description
                    "VLAN map operation on output";
                  uses vlan_map;
                }  // container output-vlan-map
    
                leaf swap-by-poppush {
                  type empty;
                  description
                    "Pop original vlan tag and then push a new vlan tag";
                }
    
                leaf receive-lsp {
                  type string;
                  description
                    "Name of incoming label-switched path";
                }
    
                leaf transmit-lsp {
                  type string;
                  description
                    "Name of outgoing label-switched path";
                }
    
                leaf dlci {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 1022";
                    }
                  }
                  description
                    "Frame Relay data-link control identifier";
                }
    
                leaf multicast-dlci {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 1022";
                    }
                  }
                  description
                    "Frame Relay data-link control identifier for multicast packets";
                }
    
                choice vci_type {
                  leaf vci {
                    junos:must "(!(".. encapsulation vlan-vci-ccc"))";
                    junos:must-message "'vci-range' must be used with encapsulation vlan-vci-ccc";
                    type jt:atm-vci;
                    description
                      "ATM point-to-point virtual circuit identifier ([vpi.]vci)";
                  }
                  leaf allow-any-vci {
                    type empty;
                    description
                      "Allow all VCIs to open in atm-ccc-cell-relay mode";
                  }
                  leaf vpi {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 255";
                      }
                    }
                    description
                      "ATM point-to-point virtual path identifier (vpi)";
                  }
                  leaf trunk-id {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 31";
                      }
                    }
                    description
                      "ATM trunk identifier";
                  }
                }  // choice vci_type
    
                choice psn_vci_type {
                  case case_1 {
                  }  // case case_1
    
                  case case_2 {
                  }  // case case_2
                }  // choice psn_vci_type
    
                container atm-l2circuit-mode {
                  description
                    "Select ATM Layer 2 circuit transport mode";
                  choice mode_choice {
                    leaf cell {
                      type empty;
                      description
                        "ATM Layer 2 circuit cell mode";
                    }
                    leaf aal5 {
                      type empty;
                      description
                        "ATM Layer 2 circuit AAL5 mode";
                    }
                  }  // choice mode_choice
                }  // container atm-l2circuit-mode
    
                container vci-range {
                  junos:must "(!(".. vci"))";
                  junos:must-message "'vci-range' and 'vci' statements cannot co-exist";
                  description
                    "ATM VCI range start <start-vci> end <end-vci>";
                  leaf start {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint16 {
                        range "32 .. 4094";
                      }
                    }
                    description
                      "ATM VCI range's start value";
                  }
    
                  leaf end {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint16 {
                        range "32 .. 4094";
                      }
                    }
                    description
                      "ATM VCI range's end value";
                  }
                }  // container vci-range
    
                leaf trunk-bandwidth {
                  type string;
                  units "bits per second";
                  description
                    "ATM trunk bandwidth";
                }
    
                leaf multicast-vci {
                  type jt:atm-vci;
                  description
                    "ATM virtual circuit identifier for multicast packets";
                }
    
                container shaping {
                  description
                    "Virtual circuit traffic-shaping options";
                  uses dcd_shaping_config;
                }  // container shaping
    
                container oam-period {
                  description "OAM cell period";
                  choice oam_period_choices {
                    leaf oam-period {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 900";
                        }
                      }
                      units "seconds";
                      description
                        "OAM cell period";
                    }
                    container disable {
                      presence "enable disable";
                      description
                        "Disable F5 OAM loopback";
                    }  // container disable
                  }  // choice oam_period_choices
                }  // container oam-period
    
                container oam-liveness {
                  description
                    "OAM virtual circuit liveness parameters";
                  uses apply-advanced;
    
                  leaf up-count {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 255";
                      }
                    }
                    description
                      "Number of OAM cells to consider VC up";
                  }
    
                  leaf down-count {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 255";
                      }
                    }
                    description
                      "Number of OAM cells to consider VC down";
                  }
                }  // container oam-liveness
    
                container ppp-options {
                  description
                    "Point-to-Point Protocol interface-specific options";
                  uses ppp_options_type;
                }  // container ppp-options
    
                choice keepalive_choices {
                  container keepalives {
                    presence "enable keepalives";
                    description
                      "Send or demand keepalive messages";
                    uses keepalives_type;
                  }  // container keepalives
                  leaf no-keepalives {
                    type empty;
                    description
                      "Do not send or demand keepalive messages";
                  }
                }  // choice keepalive_choices
    
                leaf inverse-arp {
                  type empty;
                  description
                    "Enable inverse ARP";
                }
    
                leaf transmit-weight {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 32767";
                    }
                  }
                  description
                    "ATM2 transmit weight for VC under VP tunnel";
                }
    
                container epd-threshold {
                  description
                    "Early packet discard threshold for ATM2";
                  uses epd_threshold_config;
                }  // container epd-threshold
    
                leaf cell-bundle-size {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 176";
                    }
                  }
                  units "cells";
                  description
                    "L2 circuit cell bundle size";
                }
    
                leaf cell-bundle-timeout {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 512";
                    }
                  }
                  units "microseconds";
                  description
                    "L2 circuit cell bundle timeout";
                }
    
                leaf plp-to-clp {
                  type empty;
                  description
                    "Enable ATM2 PLP to CLP copy";
                }
    
                leaf atm-scheduler-map {
                  type union {
                    type string {
                      pattern "default";
                    }
                    type string;
                  }
                  description
                    "Assign ATM2 CoS scheduling map";
                }
    
                leaf mrru {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1500 .. 4500";
                    }
                  }
                  units "bytes";
                  description
                    "Maximum received reconstructed unit";
                }
    
                leaf short-sequence {
                  type empty;
                  description
                    "Short sequence number header format (MLPPP only)";
                }
    
                leaf fragment-threshold {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "64 .. 4500";
                    }
                  }
                  units "bytes";
                  description
                    "Fragmentation threshold";
                }
    
                leaf drop-timeout {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "0 .. 2000";
                    }
                  }
                  units "milliseconds";
                  description "Drop timeout";
                }
    
                leaf disable-mlppp-inner-ppp-pfc {
                  type empty;
                  description
                    "Disable compression for inner PPP header in MLPPP payload";
                }
    
                leaf minimum-links {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16;
                  }
                  description
                    "Minimum number of links to sustain the bundle";
                }
    
                leaf multilink-max-classes {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16;
                  }
                  description
                    "Number of multilink classes";
                }
    
                leaf interleave-fragments {
                  type empty;
                  description
                    "Interleave long packets with high priority ones";
                }
    
                leaf link-layer-overhead {
                  type jt:unsigned-float;
                  description
                    "Link layer bit stuffing overhead (0.0 .. 50.0 percent)";
                }
    
                leaf accounting-profile {
                  junos:must "(("accounting-options interface-profile $$" || "accounting-options flat-file-profile $$"))";
                  junos:must-message "referenced accounting profile must be defined";
                  type string;
                  description
                    "Accounting profile name";
                }
    
                leaf peer-unit {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 16385";
                    }
                  }
                  description "Peer unit number";
                }
    
                container tunnel {
                  description
                    "Tunnel parameters";
                  uses apply-advanced;
    
                  container encapsulation {
                    presence
                      "enable encapsulation";
                    description
                      "Encapsulation over tunnel";
                    container vxlan-gpe {
                      junos:must "((!(".. udp") && !(".. ipip")))";
                      junos:must-message "Only one encapsulation can  be set per IFL";
                      presence
                        "enable vxlan-gpe";
                      uses apply-advanced;
    
                      container source {
                        uses apply-advanced;
    
                        leaf address {
                          junos:must "(!(".. interface"))";
                          junos:must-message "To configure address interface must be not set";
                          type jt:ipv4addr;
                          description
                            "Interface address prefix";
                        }
    
                        leaf mac-address {
                          type jt:mac-addr;
                          description
                            "Interface source mac address";
                        }
    
                        leaf interface {
                          type union {
                            type jt:interface-name;
                            type string {
                              pattern "<.*>|$.*";
                            }
                          }
                          description
                            "Name of the interface";
                        }
                      }  // container source
    
                      container destination {
                        uses apply-advanced;
    
                        leaf address {
                          type jt:ipv4addr;
                          description
                            "Interface address prefix";
                        }
    
                        leaf mac-address {
                          type jt:mac-addr;
                          description
                            "Interface destination mac address";
                        }
                      }  // container destination
    
                      leaf tunnel-endpoint {
                        type enumeration {
                          enum "vxlan" {
                            value 0;
                            description
                              "To configure vxlan tunnel-end-point";
                          }
                        }
                        description
                          "Tunnel end point type";
                      }
    
                      leaf destination-udp-port {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 65535";
                          }
                        }
                        description
                          "Value to write to the destination-udp-port field";
                      }
    
                      leaf vni {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range
                              "0 .. 16777214";
                          }
                        }
                        description
                          "Value to write to the vni field";
                      }
                    }  // container vxlan-gpe
                  }  // container encapsulation
    
                  leaf source {
                    type jt:ipaddr;
                    description "Tunnel source";
                  }
    
                  leaf destination {
                    type jt:ipaddr;
                    description
                      "Tunnel destination";
                  }
    
                  leaf key {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 4294967295";
                      }
                    }
                    description "Tunnel key";
                  }
    
                  leaf backup-destination {
                    junos:must "(!(".. destination $$"))";
                    junos:must-message "Backup and primary tunnel destinations must be different";
                    type jt:ipaddr;
                    description
                      "Backup tunnel destination";
                  }
    
                  choice fragmentation {
                    leaf allow-fragmentation {
                      type empty;
                      description
                        "Do not set DF bit on packets";
                    }
                    leaf do-not-fragment {
                      type empty;
                      description
                        "Set DF bit on packets";
                    }
                  }  // choice fragmentation
    
                  leaf ttl {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 255";
                      }
                    }
                    description "Time to live";
                  }
    
                  leaf traffic-class {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 255";
                      }
                    }
                    description
                      "TOS/Traffic class field of IP-header";
                  }
    
                  leaf flow-label {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 1048575";
                      }
                    }
                    description
                      "Flow label field of IP6-header";
                  }
    
                  choice path-mtu-discovery-choice {
                    leaf path-mtu-discovery {
                      type empty;
                      description
                        "Enable path MTU discovery for tunnels";
                    }
                    leaf no-path-mtu-discovery {
                      type empty;
                      description
                        "Don't enable path MTU discovery for tunnels";
                    }
                  }  // choice path-mtu-discovery-choice
    
                  container routing-instance {
                    description
                      "Routing instance to which tunnel ends belong";
                    uses apply-advanced;
    
                    leaf destination {
                      junos:must "(("routing-instances $$" || any "tenants <*> routing-instances $$"))";
                      junos:must-message "referenced routing-instance must be defined";
                      type string {
                        junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
                        junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
                      }
                      description
                        "Routing instance of tunnel destination";
                    }
                  }  // container routing-instance
                }  // container tunnel
    
                leaf compression-device {
                  type union {
                    type jt:interface-unit;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description
                    "Logical interface used for compression";
                }
    
                container layer2-policer {
                  junos:must "(".. family")";
                  junos:must-message "Family must be defined for a unit with layer2-policer";
                  description
                    "Layer2 policing for logical interface";
                  uses apply-advanced;
    
                  choice layer2-input-policer-choice {
                    leaf input-policer {
                      junos:must "(!("firewall policer $$ then forwarding-class"))";
                      junos:must-message "Forwarding class cannot be modified for Layer 2 policer";
                      junos:must "(!("firewall policer $$ then loss-priority medium-low"))";
                      junos:must-message "Loss priority 'medium-low' is not valid for Layer 2 policer";
                      junos:must "(!("firewall policer $$ then loss-priority low"))";
                      junos:must-message "Loss priority 'low' is not valid for Layer 2 policer";
                      junos:must "("firewall policer $$ logical-interface-policer")";
                      junos:must-message "Layer 2 policer must be a logical interface policer";
                      type string;
                      description
                        "Two-color policer for received packets";
                    }
    
                    case case_2 {
                    }  // case case_2
                    leaf input-three-color {
                      junos:must "(("firewall three-color-policer $$ single-rate color-blind" || ("firewall three-color-policer $$ single-packet-rate color-blind" || ("firewall three-color-policer $$ two-rate color-blind" || "firewall three-color-policer $$ two-packet-rate color-blind"))))";
                      junos:must-message "Layer 2 input three-color policer must be color-blind";
                      junos:must "("firewall three-color-policer $$ logical-interface-policer")";
                      junos:must-message "Layer 2 three-color policer must be a logical interface policer";
                      type string;
                      description
                        "Color-blind three-color policer for received packets";
                    }
                  }  // choice layer2-input-policer-choice
    
                  choice layer2-output-policer-choice {
                    leaf output-policer {
                      junos:must "(!("firewall policer $$ then forwarding-class"))";
                      junos:must-message "Forwarding class cannot be modified for Layer 2 policer";
                      junos:must "(!("firewall policer $$ then loss-priority medium-low"))";
                      junos:must-message "Loss priority 'medium-low' is not valid for Layer 2 policer";
                      junos:must "(!("firewall policer $$ then loss-priority low"))";
                      junos:must-message "Loss priority 'low' is not valid for Layer 2 policer";
                      junos:must "("firewall policer $$ logical-interface-policer")";
                      junos:must-message "Layer 2 policer must be a logical interface policer";
                      type string;
                      description
                        "Two-color policer for transmitted packets";
                    }
                    leaf output-three-color {
                      junos:must "("firewall three-color-policer $$ logical-interface-policer")";
                      junos:must-message "Layer 2 three-color policer must be a logical interface policer";
                      type string;
                      description
                        "Three-color policer for transmitted packets";
                    }
                  }  // choice layer2-output-policer-choice
                }  // container layer2-policer
    
                choice virtual-gateway {
                  leaf no-auto-virtual-gateway-esi {
                    junos:must "((any ".. family inet address <*> virtual-gateway-address" || any ".. family inet6 address <*> virtual-gateway-address"))";
                    junos:must-message "Only when virtual gateway address is configured";
                    type empty;
                    description
                      "Disable auto ESI generation for virtual gateway address";
                  }
                  container virtual-gateway-esi {
                    description
                      "ESI configuration of virtual gateway";
                    uses apply-advanced;
    
                    leaf identifier {
                      junos:must "(unique "interfaces <*> unit <*> virtual-gateway-esi $$")";
                      junos:must-message "virtual-gateway-esi value must be unique under all IFDs and IFLs";
                      junos:must "(unique "interfaces <*> unit <*> esi $$")";
                      junos:must-message "ESI value must be unique under all IFDs and IFLs";
                      type jt:esi;
                      description
                        "ESI value for the interface";
                    }
    
                    choice mode {
                      leaf single-active {
                        type empty;
                        description
                          "Single-active mode";
                      }
                      leaf all-active {
                        type empty;
                        description
                          "All-active mode";
                      }
                    }  // choice mode
                  }  // container virtual-gateway-esi
                }  // choice virtual-gateway
    
                container service {
                  description
                    "Service operations";
                  uses apply-advanced;
    
                  list pcef {
                    key "name";
                    ordered-by user;
                    description
                      "PCEF configuration";
                    leaf name {
                      junos:must "((".. family inet service" || ".. family inet6 service"))";
                      junos:must-message "Must be configured along with a family inet/inet6 service.";
                      type string;
                      description
                        "PCEF Profile name";
                    }
    
                    uses apply-advanced;
    
                    leaf activate-all {
                      junos:must "(!("activate"))";
                      junos:must-message "Can't be configured with activate-rule or activate- rulebase.";
                      type empty;
                      description
                        "Activate all rules and rulebases in the pcef profile";
                    }
    
                    list activate {
                      key "name";
                      ordered-by user;
                      description
                        "Name of pcef profile rule or rulebase to activate";
                      leaf name {
                        type string;
                        description
                          "Name of pcef profile rule or rulebase to activate";
                      }
    
                      uses apply-advanced;
                    }  // list activate
                  }  // list pcef
                }  // container service
    
                choice generate-eui64-choice {
                  leaf generate-eui64 {
                    junos:must "(".. family inet6 unnumbered-address")";
                    junos:must-message "generate-eui64 attribute must be set when unnumbered-address is configured under family inet6";
                    type empty;
                    description
                      "To generate Link Local EUI-64 addresses";
                  }
                  leaf no-generate-eui64 {
                    junos:must "(".. family inet6 unnumbered-address")";
                    junos:must-message "generate-eui64 attribute must be set when unnumbered-address is configured under family inet6";
                    type empty;
                    description
                      "Don't to generate Link Local EUI-64 addresses";
                  }
                }  // choice generate-eui64-choice
    
                container family {
                  junos:must "(!(".. encapsulation ppp-over-ether"))";
                  junos:must-message "Can't configure protocol family with encapsulation ppp-over-ether";
                  description "Protocol family";
                  container inet {
                    junos:must "(!(".. .. .. encapsulation vlan-vpls"))";
                    junos:must-message "Can't configure protocol family inet with encapsulation vpls";
                    presence "enable inet";
                    description
                      "IPv4 parameters";
                    uses apply-advanced;
    
                    container dhcp {
                      junos:must "(!(any "forwarding-options dhcp-relay group <*> interface ${interface}.${unit}"))";
                      junos:must-message "Incompatible with the interface configured under 'forwarding-options dhcp-relay group'";
                      junos:must "(!("system services dhcp"))";
                      junos:must-message "Incompatible with the dhcp server configured under 'system services dhcp'";
                      junos:must "(!("system autoinstallation interfaces"))";
                      junos:must-message "Incompatible with 'system autoinstallation interfaces'";
                      junos:must "(!(".. address"))";
                      junos:must-message "Incompatible with interface assigned with address";
                      presence "enable dhcp";
                      description
                        "Dynamic Host Configuration Protocol client configuration";
                      uses dhcp-client-type;
                    }  // container dhcp
    
                    container targeted-broadcast {
                      presence
                        "enable targeted-broadcast";
                      description
                        "Directed broadcast";
                      uses apply-advanced;
    
                      choice targeted-bcast-choice {
                        leaf forward-and-send-to-re {
                          type empty;
                          description
                            "Allow packets to be forwarded and sent to re";
                        }
                        leaf forward-only {
                          type empty;
                          description
                            "Allow packets only to be forwarded";
                        }
                      }  // choice targeted-bcast-choice
                    }  // container targeted-broadcast
    
                    leaf destination-class-usage {
                      type empty;
                      status deprecated;
                      description
                        "Enable destination class usage on this interface";
                    }
    
                    leaf transit-options-packets {
                      type empty;
                      status deprecated;
                      description
                        "Transit IP options packets (don't send to Routing Engine)";
                    }
    
                    leaf transit-ttl-exceeded {
                      type empty;
                      status deprecated;
                      description
                        "Transit IP TTL-exceeded packets (don't send to Routing Engine)";
                    }
    
                    leaf receive-options-packets {
                      type empty;
                      description
                        "Receive IP options packets (don't send to Routing Engine)";
                    }
    
                    leaf receive-ttl-exceeded {
                      type empty;
                      description
                        "Receive IP TTL-exceeded packets (don't send to Routing Engine)";
                    }
    
                    container accounting {
                      description
                        "Configure interface-based accounting options";
                      uses apply-advanced;
    
                      container source-class-usage {
                        description
                          "Enable source class usage on this interface";
                        uses apply-advanced;
    
                        leaf input {
                          type empty;
                          description
                            "Specify this interface for source-class-usage input";
                        }
    
                        leaf output {
                          type empty;
                          description
                            "Specify this interface for source-class-usage output";
                        }
                      }  // container source-class-usage
    
                      leaf destination-class-usage {
                        type empty;
                        description
                          "Enable destination class usage on this interface";
                      }
                    }  // container accounting
    
                    container rpf-check {
                      presence
                        "enable rpf-check";
                      description
                        "Enable reverse-path-forwarding checks on this interface";
                      uses apply-advanced;
    
                      leaf fail-filter {
                        type string;
                        description
                          "Name of filter applied to packets failing RPF check";
                      }
    
                      container mode {
                        description
                          "Mode for reverse path forwarding";
                        leaf loose {
                          type empty;
                          description
                            "Reverse-path-forwarding loose mode";
                        }
                      }  // container mode
                    }  // container rpf-check
    
                    leaf mtu {
                      type union {
                        type uint32;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Protocol family maximum transmission unit";
                    }
    
                    leaf arp-max-cache {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 2000000";
                        }
                      }
                      description
                        "Max interface ARP nexthop cache size";
                    }
    
                    leaf arp-new-hold-limit {
                      junos:must "(".. arp-max-cache")";
                      junos:must-message "Interface max ARP cache size must be configured";
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 2000000";
                        }
                      }
                      description
                        "Max no. of new unresolved nexthops";
                    }
    
                    leaf no-redirects {
                      type empty;
                      description
                        "Do not redirect traffic";
                    }
    
                    leaf no-neighbor-learn {
                      type empty;
                      description
                        "Disable neighbor address learning on interface";
                    }
    
                    leaf unconditional-src-learn {
                      type empty;
                      description
                        "Glean from arp packets even when source cannot be validated";
                    }
    
                    leaf multicast-only {
                      type empty;
                      description
                        "Allow only multicast traffic (tunnels only)";
                    }
    
                    leaf primary {
                      type empty;
                      description
                        "Candidate for primary interface in system";
                    }
    
                    leaf ipsec-sa {
                      type string {
                        length "1 .. 32";
                      }
                      description
                        "Name of security association";
                    }
    
                    leaf allow-filter-on-re {
                      type empty;
                      description
                        "Enable kernel filter on network ports";
                    }
    
                    container filter {
                      description
                        "Packet filtering";
                      uses apply-advanced;
    
                      choice input_choice {
                        container input {
                          description
                            "Filter to be applied to received packets";
                          leaf filter-name {
                            type string;
                            description
                              "Name of the filter";
                          }
    
                          leaf shared-name {
                            type string;
                            description
                              "Filter shared-name of instances of interface-shared filter";
                          }
    
                          leaf precedence {
                            type union {
                              type string {
                                pattern
                                  "<.*>|$.*";
                              }
                              type uint32 {
                                range "0 .. 255";
                              }
                            }
                            description
                              "Precedence of the filter";
                          }
                        }  // container input
                        leaf-list input-list {
                          type string;
                          ordered-by user;
                          description
                            "List of filter modules applied to received packets ";
                        }
                      }  // choice input_choice
    
                      choice output_choice {
                        container output {
                          description
                            "Filter to be applied to transmitted packets";
                          leaf filter-name {
                            type string;
                            description
                              "Name of the filter";
                          }
    
                          leaf shared-name {
                            type string;
                            description
                              "Filter shared-name of instances of interface-shared filter";
                          }
    
                          leaf precedence {
                            type union {
                              type string {
                                pattern
                                  "<.*>|$.*";
                              }
                              type uint32 {
                                range "0 .. 255";
                              }
                            }
                            description
                              "Precedence of the filter";
                          }
                        }  // container output
                        leaf-list output-list {
                          type string;
                          ordered-by user;
                          description
                            "List of filter modules applied to transmitted packets ";
                        }
                      }  // choice output_choice
    
                      container adf {
                        description
                          "Ascend Data Filter definition";
                        uses apply-advanced;
    
                        list rule {
                          key "name";
                          ordered-by user;
                          description
                            "Set of ADF rules";
                          leaf name {
                            type string;
                            description
                              "Value for a single rule";
                          }
    
                          uses apply-advanced;
                        }  // list rule
    
                        leaf counter {
                          type empty;
                          description
                            "Add a counter to each rule";
                        }
    
                        leaf input-precedence {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "0 .. 255";
                            }
                          }
                          description
                            "Precedence of the input rules";
                        }
    
                        leaf not-mandatory {
                          type empty;
                          description
                            "No errors will be reported if no rules are present";
                        }
    
                        leaf output-precedence {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "0 .. 255";
                            }
                          }
                          description
                            "Precedence of the output rules";
                        }
                      }  // container adf
    
                      leaf group {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 255";
                          }
                        }
                        description
                          "Group to which interface belongs";
                      }
                    }  // container filter
    
                    container simple-filter {
                      description
                        "Filter for doing multifield classification";
                      uses apply-advanced;
    
                      leaf input {
                        type string;
                        description
                          "Name of simple filter applied to received packets";
                      }
                    }  // container simple-filter
    
                    container policer {
                      description
                        "Interface policing";
                      uses apply-advanced;
    
                      leaf arp {
                        junos:must "(!(".. disable-arp-policer"))";
                        junos:must-message "Interface configuration can have either disable-arp-policer or arp policer configured";
                        junos:must "((!(".. .. .. .. peer-unit") || (".. .. .. .. encapsulation ethernet" || ".. .. .. .. encapsulation vlan")))";
                        junos:must-message "Interface encapsulation must be ethernet or vlan";
                        type string;
                        description
                          "Name of policer applied to received ARP packets";
                      }
    
                      leaf input {
                        junos:must "(!(".. .. input-hierarchical-policer"))";
                        junos:must-message "Both input policer and input hierarchical policer can not be applied on the same family";
                        type string;
                        description
                          "Name of policer applied to received packets";
                      }
    
                      leaf output {
                        type string;
                        description
                          "Name of policer applied to transmitted packets";
                      }
                    }  // container policer
    
                    container sampling {
                      junos:must "(("forwarding-options sampling family inet" || ("forwarding-options packet-capture" || any "forwarding-options sampling instance <*> family inet")))";
                      junos:must-message "Requires forwarding-options sampling or packet-capture config";
                      description
                        "Interface sampling";
                      uses apply-advanced;
    
                      leaf input {
                        type empty;
                        description
                          "Sample all packets input on this interface";
                      }
    
                      leaf output {
                        type empty;
                        description
                          "Sample all packets output on this interface";
                      }
                    }  // container sampling
    
                    container service {
                      junos:must "((!(".. rpf-check") || "chassis network-services enhanced-ip"))";
                      junos:must-message "rpf-check can not be enabled with interface services";
                      description
                        "Service operations";
                      uses apply-advanced;
    
                      container input {
                        description
                          "Service sets to consider for received packets";
                        uses apply-advanced;
    
                        list service-set {
                          key "name";
                          ordered-by user;
                          description
                            "Service set to consider for received packets";
                          leaf name {
                            junos:must "((!(".. .. .. .. .. .. demux-source") && !(".. .. .. .. .. .. demux-destination")))";
                            junos:must-message "Service set cannot be configured on interfaces with demux-source or demux-destination";
                            junos:must "("services service-set $$ interface-service")";
                            junos:must-message "this service set must be an interface service";
                            type string {
                              junos:posix-pattern "^[[:alnum:]][[:alnum:]/.:_-]*$";
                              junos:pattern-message "Must be a string beginning with a number or letter and consisting of letters, numbers, dashes, underscores, forward slashes, colons and dots.";
                            }
                            description
                              "Name of service set";
                          }
    
                          uses apply-advanced;
    
                          leaf service-filter {
                            type string;
                            description
                              "Name of service filter";
                          }
                        }  // list service-set
    
                        leaf post-service-filter {
                          type string;
                          description
                            "Post-service filter to apply to received packets";
                        }
                      }  // container input
    
                      container output {
                        description
                          "Service sets to consider for transmitted packets";
                        uses apply-advanced;
    
                        list service-set {
                          key "name";
                          ordered-by user;
                          description
                            "Service set to consider for transmitted packets";
                          leaf name {
                            type string {
                              junos:posix-pattern "^[[:alnum:]][[:alnum:]/.:_-]*$";
                              junos:pattern-message "Must be a string beginning with a number or letter and consisting of letters, numbers, dashes, underscores, forward slashes, colons and dots.";
                            }
                            description
                              "Name of service set";
                          }
    
                          uses apply-advanced;
    
                          leaf service-filter {
                            type string;
                            description
                              "Name of service filter";
                          }
                        }  // list service-set
                      }  // container output
                    }  // container service
    
                    list next-hop-tunnel {
                      key "name";
                      ordered-by user;
                      description
                        "One or more next-hop tunnel tables";
                      leaf name {
                        type string;
                        description
                          "Next-hop tunnel gateway address";
                      }
    
                      uses apply-advanced;
    
                      leaf ipsec-vpn {
                        junos:must "("security ipsec vpn $$")";
                        junos:must-message "Referenced IPSec vpn must be defined under [edit security ipsec vpn] hierarchy level";
                        junos:must "(unique "interfaces st0 unit <*> family inet next-hop-tunnel <*> ipsec-vpn $$")";
                        junos:must-message "Referenced IPSec vpn must be unique";
                        type string;
                        description
                          "Name of IPSec VPN";
                      }
                    }  // list next-hop-tunnel
    
                    container tunnel-termination {
                      presence
                        "enable tunnel-termination";
                      description
                        "Tunnel termination";
                    }  // container tunnel-termination
    
                    list address {
                      junos:must "((!(".. unnumbered-address") && !(".. location-pool-address")))";
                      junos:must-message "address cannot be defined with unnumbered-address or location-pool-address simultaneously";
                      key "name";
                      ordered-by user;
                      description
                        "Interface address/destination prefix";
                      leaf name {
                        type jt:ipv4prefix;
                        description
                          "Interface address/destination prefix";
                      }
    
                      uses apply-advanced;
    
                      leaf destination {
                        type jt:ipv4addr;
                        description
                          "Destination address";
                      }
    
                      leaf destination-profile {
                        junos:must "("access group-profile $$ ppp")";
                        junos:must-message "referenced group-profile must be defined and must contain ppp statement";
                        type string;
                        description
                          "Profile to use for destination address";
                      }
    
                      leaf broadcast {
                        type jt:ipv4addr;
                        description
                          "Broadcast address";
                      }
    
                      leaf primary {
                        type empty;
                        description
                          "Candidate for primary address in system";
                      }
    
                      leaf preferred {
                        type empty;
                        description
                          "Preferred address on interface";
                      }
    
                      leaf master-only {
                        type empty;
                        description
                          "Master management IP address for router";
                      }
    
                      list multipoint-destination {
                        key "name";
                        ordered-by user;
                        description
                          "Multipoint NBMA destination";
                        leaf name {
                          type jt:ipv4addr;
                          description
                            "Destination address";
                        }
    
                        uses apply-advanced;
    
                        choice link-address {
                          leaf dlci {
                            type union {
                              type string {
                                pattern
                                  "<.*>|$.*";
                              }
                              type uint32 {
                                range
                                  "1 .. 1022";
                              }
                            }
                            description
                              "Frame Relay data-link control identifier";
                          }
                          leaf vci {
                            type jt:atm-vci;
                            description
                              "ATM virtual circuit identifier ([vpi.]vci)";
                          }
                        }  // choice link-address
    
                        container shaping {
                          description
                            "Virtual circuit traffic-shaping options";
                          uses dcd_shaping_config;
                        }  // container shaping
    
                        container oam-period {
                          description
                            "OAM cell period";
                          choice oam_period_choices {
                            leaf oam_period {
                              type union {
                                type string {
                                  pattern
                                    "<.*>|$.*";
                                }
                                type uint32 {
                                  range
                                    "1 .. 900";
                                }
                              }
                              units "seconds";
                              description
                                "OAM cell period";
                            }
                            container disable {
                              presence
                                "enable disable";
                              description
                                "Disable OAM loopback";
                            }  // container disable
                          }  // choice oam_period_choices
                        }  // container oam-period
    
                        container oam-liveness {
                          description
                            "OAM virtual circuit liveness parameters";
                          uses apply-advanced;
    
                          leaf up-count {
                            type union {
                              type string {
                                pattern
                                  "<.*>|$.*";
                              }
                              type uint32 {
                                range "1 .. 255";
                              }
                            }
                            description
                              "Number of OAM cells to consider VC up";
                          }
    
                          leaf down-count {
                            type union {
                              type string {
                                pattern
                                  "<.*>|$.*";
                              }
                              type uint32 {
                                range "1 .. 255";
                              }
                            }
                            description
                              "Number of OAM cells to consider VC down";
                          }
                        }  // container oam-liveness
    
                        leaf inverse-arp {
                          type empty;
                          description
                            "Enable inverse ARP reply messages";
                        }
    
                        leaf transmit-weight {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint16 {
                              range "1 .. 32767";
                            }
                          }
                          description
                            "ATM2 transmit weight for VC under VP tunnel";
                        }
    
                        container epd-threshold {
                          description
                            "Early packet discard threshold for ATM2";
                          uses epd_threshold_config;
                        }  // container epd-threshold
                      }  // list multipoint-destination
    
                      list arp {
                        key "name";
                        ordered-by user;
                        description
                          "Static Address Resolution Protocol entries";
                        leaf name {
                          type jt:ipv4addr;
                          description
                            "Destination IP address";
                        }
    
                        leaf l2-interface {
                          type union {
                            type jt:interface-name;
                            type string {
                              pattern "<.*>|$.*";
                            }
                          }
                          description
                            "Layer 2 interface name for ARP entry";
                        }
    
                        choice mac_address_type {
                          leaf mac {
                            type jt:mac-unicast;
                            description
                              "MAC address";
                          }
                          leaf multicast-mac {
                            type jt:mac-multicast;
                            description
                              "Multicast MAC address";
                          }
                        }  // choice mac_address_type
    
                        leaf publish {
                          junos:must "((".. mac" || ".. multicast-mac"))";
                          junos:must-message "mac or multicast-mac must be configured to publish";
                          type empty;
                          description
                            "Reply to ARP requests for this entry";
                        }
                      }  // list arp
    
                      list vrrp-group {
                        key "name";
                        ordered-by user;
                        description "VRRP group";
                        uses vrrp-group;
                      }  // list vrrp-group
    
                      leaf virtual-gateway-address {
                        junos:must "(!(".. vrrp-group"))";
                        junos:must-message "vrrp configuration incompatible with virtual gateway address";
                        type jt:ipv4addr;
                        description
                          "Virtual Gateway IP address";
                      }
                    }  // list address
    
                    container unnumbered-address {
                      description
                        "Unnumbered interface address/destination prefix";
                      leaf source {
                        junos:must "("interfaces $$-IFL family inet address")";
                        junos:must-message "referred interface must have address configured under family inet";
                        type union {
                          type jt:interface-unit;
                          type string {
                            pattern "<.*>|$.*";
                          }
                        }
                        description
                          "Interface from which to take local address";
                      }
    
                      leaf preferred-source-address {
                        type string;
                        description
                          "Preferred address on the donor interface";
                      }
    
                      leaf destination {
                        type jt:ipv4addr;
                        description
                          "Destination address";
                      }
    
                      leaf destination-profile {
                        junos:must "("access group-profile $$ ppp")";
                        junos:must-message "referenced group-profile must be defined and must contain ppp statement";
                        type string;
                        description
                          "Profile to use for destination address";
                      }
                    }  // container unnumbered-address
    
                    leaf negotiate-address {
                      junos:must "(!(".. .. .. .. encapsulation multilink-frame-relay-uni-nni"))";
                      junos:must-message "negotiate-address is not supported with family mlfr-uni-nni ";
                      junos:must "(!(".. .. .. encapsulation multilink-frame-relay-end-to-end"))";
                      junos:must-message "negotiate-address is not supported with family mlfr-end-to-end ";
                      junos:must "(!(".. location-pool-address"))";
                      junos:must-message "negotiate-address and location-pool-address must not be defined simultaneously";
                      junos:must "(!(".. unnumbered-address"))";
                      junos:must-message "negotiate-address and unnumbered-address must not be defined simultaneously";
                      junos:must "(!(".. address"))";
                      junos:must-message "negotiate-address and address must not be defined simultaneously";
                      type empty;
                      description
                        "Negotiate address with remote";
                    }
    
                    leaf destination-udp-port {
                      junos:must "(".. .. .. tunnel encapsulation udp")";
                      junos:must-message "destination-udp-port can be configured only for encapsulation udp on fti interface";
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "10000 .. 10009";
                        }
                      }
                      description
                        "Choose destination UDP port number";
                    }
                  }  // container inet
    
                  container iso {
                    junos:must "(!(".. .. encapsulation frame-relay-ppp"))";
                    junos:must-message "family iso is not supported on encapsulation frame-relay-ppp";
                    presence "enable iso";
                    description
                      "OSI ISO protocol parameters";
                    uses apply-advanced;
    
                    list address {
                      key "name";
                      ordered-by user;
                      description
                        "Interface address";
                      leaf name {
                        type jt:isoaddr;
                        description
                          "Interface address";
                      }
    
                      uses apply-advanced;
                    }  // list address
    
                    leaf mtu {
                      type union {
                        type uint32;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Protocol family maximum transmission unit";
                    }
    
                    leaf destination-udp-port {
                      junos:must "(".. .. .. tunnel encapsulation udp")";
                      junos:must-message "destination-udp-port can be configured only for encapsulation udp on fti interface";
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "10030 .. 10039";
                        }
                      }
                      description
                        "Choose destination UDP port number";
                    }
                  }  // container iso
    
                  container inet6 {
                    presence "enable inet6";
                    description
                      "IPv6 protocol parameters";
                    uses apply-advanced;
    
                    container dhcpv6-client {
                      junos:must "(!("system services dhcp"))";
                      junos:must-message "Incompatible with the dhcp server configured under 'system services dhcp'";
                      junos:must "(!("system autoinstallation"))";
                      junos:must-message "Incompatible with 'system autoinstallation'";
                      junos:must "(!(".. address"))";
                      junos:must-message "Incompatible with interface assigned with address";
                      junos:must "(!(any "forwarding-options dhcp-relay dhcpv6  group <*> interface ${interface}.${unit}"))";
                      junos:must-message "DHCPv6 client and relay cannot be configured on the same interface ";
                      junos:must "(!(any "system services dhcp-local-server dhcpv6 group <*> interface ${interface}.${unit}"))";
                      junos:must-message "DHCPv6 client and server cannot be configured on the same interface ";
                      description
                        "Dynamic Host Configuration Protocol DHCPv6 client configuration";
                      uses apply-advanced;
    
                      leaf client-type {
                        type enumeration {
                          enum "stateful" {
                            value 0;
                            description
                              "Stateful client type for address assignment.";
                          }
                          enum "autoconfig" {
                            junos:must "("protocols router-advertisement interface ${interface}.${unit}")";
                            junos:must-message "Interface for ra messages is must for auto mode";
                            junos:must "(!("interfaces ${interface} unit ${unit} family inet6 dhcpv6-client update-router-advertisement"))";
                            junos:must-message "Incompatible with 'dhcpv6-client update-router-advertisement'";
                            junos:must "(!("interfaces ${interface} unit ${unit} family inet6 dhcpv6-client client-ia-type ia-pd"))";
                            junos:must-message "Incompatible with 'client-ia-type ia-pd'";
                            value 1;
                            description
                              "Autoconfig  client type for router-advertisement";
                          }
                        }
                        description
                          "DHCPv6 client type";
                      }
    
                      list client-ia-type {
                        key "name";
                        ordered-by user;
                        description
                          "DHCPv6 client identity association type";
                        leaf name {
                          type enumeration {
                            enum "ia-na" {
                              value 0;
                              description
                                "Identity Association-Non-temporary Address";
                            }
                            enum "ia-pd" {
                              value 1;
                              description
                                "Identity Association-Prefix Address";
                            }
                          }
                        }
    
                        uses apply-advanced;
                      }  // list client-ia-type
    
                      container rapid-commit {
                        presence
                          "enable rapid-commit";
                        description
                          "Option is used to signal the use of the two message exchange for address assignment";
                      }  // container rapid-commit
    
                      container prefix-delegating {
                        junos:must "("interfaces ${interface} unit ${unit} family inet6 dhcpv6-client client-ia-type ia-pd")";
                        junos:must-message "Incompatible with out 'client-ia-type ia-pd'";
                        description
                          "Prefix delegating parameters";
                        uses apply-advanced;
    
                        leaf preferred-prefix-length {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "0 .. 64";
                            }
                          }
                          description
                            "Client preferred prefix length";
                        }
    
                        leaf sub-prefix-length {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "1 .. 127";
                            }
                          }
                          description
                            "The sub prefix length for LAN interfaces";
                        }
                      }  // container prefix-delegating
    
                      container client-identifier {
                        description
                          "DHCP Server identifies a client by client-identifier value ";
                        leaf duid-type {
                          type enumeration {
                            enum "duid-llt" {
                              value 0;
                              description
                                "Link-layer address plus time";
                            }
                            enum "vendor" {
                              value 1;
                              description
                                "Vendor-assigned unique ID based on Enterprise Number";
                            }
                            enum "duid-ll" {
                              value 2;
                              description
                                "Link-layer address";
                            }
                          }
                          description
                            "DUID identifying a client";
                        }
                      }  // container client-identifier
    
                      leaf vendor-id {
                        type string {
                          length "1 .. 60";
                        }
                        description
                          "Vendor class id for the dhcpv6 client";
                      }
    
                      list req-option {
                        key "name";
                        ordered-by user;
                        description
                          "DHCPV6 client requested option configuration";
                        leaf name {
                          type enumeration {
                            enum "dns-server" {
                              value 0;
                              description
                                "Dns-server option";
                            }
                            enum "domain" {
                              value 1;
                              description
                                "Dns-server option";
                            }
                            enum "ntp-server" {
                              value 2;
                              description
                                "Ntp-server option";
                            }
                            enum "time-zone" {
                              value 3;
                              description
                                "Time-zone option";
                            }
                            enum "sip-server" {
                              value 4;
                              description
                                "Sip-server option";
                            }
                            enum "sip-domain" {
                              value 5;
                              description
                                "Sip-domain option";
                            }
                            enum "nis-server" {
                              value 6;
                              description
                                "Nis-server option";
                            }
                            enum "nis-domain" {
                              value 7;
                              description
                                "Nis-domain option";
                            }
                            enum "fqdn" {
                              value 8;
                              description
                                "Fully-qualified-domain option";
                            }
                            enum "vendor-spec" {
                              value 9;
                              description
                                "Vendor-spec option";
                            }
                            enum
                              "zero-touch-redirect" {
                              value 10;
                              description
                                "Zero-touch-redirect";
                            }
                            enum "bootfile-url" {
                              value 11;
                              description
                                "Bootfile url";
                            }
                            enum
                              "bootfile-param" {
                              value 12;
                              description
                                "Bootfile param";
                            }
                          }
                        }
    
                        uses apply-advanced;
                      }  // list req-option
    
                      container options {
                        description
                          "DHCP options";
                        uses apply-advanced;
    
                        list number {
                          key "name";
                          description
                            "DHCP option code";
                          leaf name {
                            type union {
                              type string {
                                pattern
                                  "<.*>|$.*";
                              }
                              type uint32 {
                                range "1 .. 254";
                              }
                            }
                            description
                              "DHCP option identifier code";
                          }
    
                          choice option-type-choice {
                            leaf hex-string {
                              type string {
                                junos:posix-pattern "^[[:xdigit:]]+$";
                                junos:pattern-message "Must be hexadecimal digits (0-9, a-f, A-F)";
                                length
                                  "1 .. 510";
                              }
                              description
                                "Hexadecimal string";
                            }
                          }  // choice option-type-choice
                        }  // list number
                      }  // container options
    
                      leaf retransmission-attempt {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "0 .. 50000";
                          }
                        }
                        default "9";
                        description
                          "Number of attempts to retransmit the DHCPV6 client protocol packet";
                      }
                    }  // container dhcpv6-client
    
                    container rpf-check {
                      presence
                        "enable rpf-check";
                      description
                        "Enable reverse-path-forwarding checks on this interface";
                      uses apply-advanced;
    
                      leaf fail-filter {
                        type string;
                        description
                          "Name of filter applied to packets failing RPF check";
                      }
    
                      container mode {
                        description
                          "Mode for reverse path forwarding";
                        leaf loose {
                          type empty;
                          description
                            "Reverse-path-forwarding loose mode";
                        }
                      }  // container mode
                    }  // container rpf-check
    
                    container accounting {
                      description
                        "Interface-based accounting options";
                      uses apply-advanced;
    
                      container source-class-usage {
                        uses apply-advanced;
    
                        leaf input {
                          type empty;
                          description
                            "Interface for source-class-usage input";
                        }
    
                        leaf output {
                          type empty;
                          description
                            "Interface for source-class-usage output";
                        }
                      }  // container source-class-usage
    
                      leaf destination-class-usage {
                        type empty;
                        description
                          "Enable destination class usage on this interface";
                      }
                    }  // container accounting
    
                    leaf mtu {
                      type union {
                        type uint32;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Protocol family maximum transmission unit";
                    }
    
                    leaf nd6-stale-time {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 18000";
                        }
                      }
                      units "seconds";
                      description
                        "Stale time to reconfirm reachability with inet6 neighbour";
                    }
    
                    leaf no-neighbor-learn {
                      type empty;
                      description
                        "Disable neighbor address learning on interface";
                    }
    
                    container ndp-proxy {
                      description
                        "Enable ndp proxy on interface";
                      uses apply-advanced;
    
                      leaf interface-restricted {
                        type empty;
                        description
                          "Enable ndp interface proxy restricted to interface";
                      }
                    }  // container ndp-proxy
    
                    container dad-proxy {
                      junos:must "(".. ndp-proxy")";
                      junos:must-message "ndp-proxy must be configured";
                      description
                        "DAD proxy on interface";
                      uses apply-advanced;
    
                      leaf interface-restricted {
                        type empty;
                        description
                          "Enable DAD interface proxy restricted to interface";
                      }
                    }  // container dad-proxy
    
                    leaf nd6-max-cache {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 2000000";
                        }
                      }
                      description
                        "Max interface ND nexthop cache size";
                    }
    
                    leaf nd6-new-hold-limit {
                      junos:must "(".. nd6-max-cache")";
                      junos:must-message "Interface max ND cache size must be configured";
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 2000000";
                        }
                      }
                      description
                        "Max no. of new unresolved nexthops";
                    }
    
                    leaf no-redirects {
                      type empty;
                      description
                        "Do not redirect traffic";
                    }
    
                    leaf allow-filter-on-re {
                      type empty;
                      description
                        "Enable kernel filter on network ports";
                    }
    
                    container filter {
                      description
                        "Packet filtering";
                      uses apply-advanced;
    
                      choice input_choice {
                        container input {
                          description
                            "Filter to be applied to received packets";
                          leaf filter-name {
                            type string;
                            description
                              "Name of the filter";
                          }
    
                          leaf shared-name {
                            type string;
                            description
                              "Filter shared-name of instances of interface-shared filter";
                          }
    
                          leaf precedence {
                            type union {
                              type string {
                                pattern
                                  "<.*>|$.*";
                              }
                              type uint32 {
                                range "0 .. 255";
                              }
                            }
                            description
                              "Precedence of the filter";
                          }
                        }  // container input
                        leaf-list input-list {
                          type string;
                          ordered-by user;
                          description
                            "List of filter modules applied to received packets ";
                        }
                      }  // choice input_choice
    
                      choice output_choice {
                        container output {
                          description
                            "Filter to be applied to transmitted packets";
                          leaf filter-name {
                            type string;
                            description
                              "Name of the filter";
                          }
    
                          leaf shared-name {
                            type string;
                            description
                              "Filter shared-name of instances of interface-shared filter";
                          }
    
                          leaf precedence {
                            type union {
                              type string {
                                pattern
                                  "<.*>|$.*";
                              }
                              type uint32 {
                                range "0 .. 255";
                              }
                            }
                            description
                              "Precedence of the filter";
                          }
                        }  // container output
                        leaf-list output-list {
                          type string;
                          ordered-by user;
                          description
                            "List of filter modules applied to transmitted packets ";
                        }
                      }  // choice output_choice
    
                      container adf {
                        description
                          "Ascend Data Filter definition";
                        uses apply-advanced;
    
                        list rule {
                          key "name";
                          ordered-by user;
                          description
                            "Set of ADF rules";
                          leaf name {
                            type string;
                            description
                              "Value for a single rule";
                          }
    
                          uses apply-advanced;
                        }  // list rule
    
                        leaf counter {
                          type empty;
                          description
                            "Add a counter to each rule";
                        }
    
                        leaf input-precedence {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "0 .. 255";
                            }
                          }
                          description
                            "Precedence of the input rules";
                        }
    
                        leaf not-mandatory {
                          type empty;
                          description
                            "No errors will be reported if no rules are present";
                        }
    
                        leaf output-precedence {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "0 .. 255";
                            }
                          }
                          description
                            "Precedence of the output rules";
                        }
                      }  // container adf
    
                      leaf group {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 255";
                          }
                        }
                        description
                          "Group to which interface belongs";
                      }
                    }  // container filter
    
                    container policer {
                      description
                        "Interface policing";
                      uses apply-advanced;
    
                      leaf input {
                        type string;
                        description
                          "Name of policer applied to received packets";
                      }
    
                      leaf output {
                        type string;
                        description
                          "Name of policer applied to transmitted packets";
                      }
                    }  // container policer
    
                    container service {
                      description
                        "Service operations";
                      uses apply-advanced;
    
                      container input {
                        description
                          "Service sets to consider for received packets";
                        uses apply-advanced;
    
                        list service-set {
                          key "name";
                          ordered-by user;
                          description
                            "Service set to consider for received packets";
                          leaf name {
                            junos:must "((!(".. .. .. .. .. .. demux-source") && !(".. .. .. .. .. .. demux-destination")))";
                            junos:must-message "Service set cannot be configured on interfaces with demux-source or demux-destination";
                            junos:must "("services service-set $$ interface-service")";
                            junos:must-message "this service set must be an interface service";
                            type string {
                              junos:posix-pattern "^[[:alnum:]][[:alnum:]/.:_-]*$";
                              junos:pattern-message "Must be a string beginning with a number or letter and consisting of letters, numbers, dashes, underscores, forward slashes, colons and dots.";
                            }
                            description
                              "Name of service set";
                          }
    
                          uses apply-advanced;
    
                          leaf service-filter {
                            type string;
                            description
                              "Name of service filter";
                          }
                        }  // list service-set
    
                        leaf post-service-filter {
                          type string;
                          description
                            "Post-service filter to apply to received packets";
                        }
                      }  // container input
    
                      container output {
                        description
                          "Service sets to consider for transmitted packets";
                        uses apply-advanced;
    
                        list service-set {
                          key "name";
                          ordered-by user;
                          description
                            "Service set to consider for transmitted packets";
                          leaf name {
                            type string {
                              junos:posix-pattern "^[[:alnum:]][[:alnum:]/.:_-]*$";
                              junos:pattern-message "Must be a string beginning with a number or letter and consisting of letters, numbers, dashes, underscores, forward slashes, colons and dots.";
                            }
                            description
                              "Name of service set";
                          }
    
                          uses apply-advanced;
    
                          leaf service-filter {
                            type string;
                            description
                              "Name of service filter";
                          }
                        }  // list service-set
                      }  // container output
                    }  // container service
    
                    container tunnel-termination {
                      presence
                        "enable tunnel-termination";
                      description
                        "Tunnel termination";
                    }  // container tunnel-termination
    
                    list address {
                      junos:must "(!(".. unnumbered-address"))";
                      junos:must-message "ipv6 unnumbered-address and ipv6 address must not be defined simultaneously";
                      key "name";
                      ordered-by user;
                      description
                        "Interface address or destination prefix";
                      leaf name {
                        type jt:ipv6prefix;
                        description
                          "Interface address or destination prefix";
                      }
    
                      uses apply-advanced;
    
                      leaf destination {
                        type jt:ipv6addr;
                        description
                          "Destination address";
                      }
    
                      leaf eui-64 {
                        type empty;
                        description
                          "Generate EUI-64 interface ID";
                      }
    
                      leaf primary {
                        type empty;
                        description
                          "Candidate for primary address in system";
                      }
    
                      leaf preferred {
                        type empty;
                        description
                          "Preferred address on interface";
                      }
    
                      leaf master-only {
                        type empty;
                        description
                          "Master management IP address for router";
                      }
    
                      list ndp {
                        key "name";
                        ordered-by user;
                        description
                          "Static Neighbor Discovery Protocol  entries";
                        leaf name {
                          type jt:ipv6addr;
                          description
                            "Destination IP address";
                        }
    
                        leaf l2-interface {
                          type union {
                            type jt:interface-name;
                            type string {
                              pattern "<.*>|$.*";
                            }
                          }
                          description
                            "Layer 2 interface name for NDP entry";
                        }
    
                        choice mac_address_type {
                          leaf mac {
                            type jt:mac-unicast;
                            description
                              "MAC address";
                          }
                          leaf multicast-mac {
                            type jt:mac-multicast;
                            description
                              "Multicast MAC address";
                          }
                        }  // choice mac_address_type
    
                        leaf publish {
                          junos:must "((".. mac" || ".. multicast-mac"))";
                          junos:must-message "either 'mac' or 'multicast-mac' must be configured along with 'publish' statment";
                          type empty;
                          description
                            "Reply to NDP requests for this entry";
                        }
                      }  // list ndp
    
                      list vrrp-inet6-group {
                        junos:must "(!(".. eui-64"))";
                        junos:must-message "'vrrp-inet6-group' is not supported when 'eui-64' is configured";
                        key "name";
                        ordered-by user;
                        description "VRRP group";
                        uses vrrp-group;
                      }  // list vrrp-inet6-group
    
                      leaf virtual-gateway-address {
                        junos:must "(!(".. vrrp-inet6-group"))";
                        junos:must-message "vrrp configuration incompatible with virtual gateway address";
                        type jt:ipv6addr;
                        description
                          "Virtual Gateway IP address";
                      }
    
                      leaf subnet-router-anycast {
                        type empty;
                        description
                          "Create a subnet roter anycast address for this address.";
                      }
                    }  // list address
    
                    choice dad-disable-choice {
                      leaf dad-disable {
                        type empty;
                        description
                          "Disable duplicate-address-detection";
                      }
                      leaf no-dad-disable {
                        type empty;
                        description
                          "Don't disable duplicate-address-detection";
                      }
                    }  // choice dad-disable-choice
    
                    leaf destination-udp-port {
                      junos:must "(".. .. .. tunnel encapsulation udp")";
                      junos:must-message "destination-udp-port can be configured only for encapsulation udp on fti interface";
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "10010 .. 10019";
                        }
                      }
                      description
                        "Choose destination UDP port number";
                    }
                  }  // container inet6
    
                  container mpls {
                    junos:must "(!(".. .. encapsulation frame-relay-ppp"))";
                    junos:must-message "family mpls is not supported on encapsulation frame-relay-ppp";
                    presence "enable mpls";
                    description
                      "MPLS protocol parameters";
                    uses apply-advanced;
    
                    leaf mtu {
                      type union {
                        type uint32;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Protocol family maximum transmission unit";
                    }
    
                    container filter {
                      description
                        "Packet filtering";
                      uses apply-advanced;
    
                      choice input_choice {
                        leaf input {
                          type string;
                          description
                            "Name of filter applied to received packets";
                        }
                        leaf-list input-list {
                          type string;
                          ordered-by user;
                          description
                            "List of filter modules applied to received packets ";
                        }
                      }  // choice input_choice
    
                      leaf-list input-chain {
                        type string;
                        ordered-by user;
                        description
                          "List of filter modules applied to received packets ";
                      }
    
                      choice output_choice {
                        leaf output {
                          type string;
                          description
                            "Name of filter applied to transmitted packets";
                        }
                        leaf-list output-list {
                          type string;
                          ordered-by user;
                          description
                            "List of filter modules applied to transmitted packets ";
                        }
                      }  // choice output_choice
    
                      leaf-list output-chain {
                        type string;
                        ordered-by user;
                        description
                          "List of filter modules applied to transmitted packets ";
                      }
    
                      leaf group {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 255";
                          }
                        }
                        description
                          "Interface group to which interface belongs";
                      }
                    }  // container filter
    
                    container policer {
                      description
                        "Interface policing";
                      uses apply-advanced;
    
                      leaf input {
                        type string;
                        description
                          "Name of policer applied to received packets";
                      }
    
                      leaf output {
                        type string;
                        description
                          "Name of policer applied to transmitted packets";
                      }
                    }  // container policer
    
                    leaf destination-udp-port {
                      junos:must "(".. .. .. tunnel encapsulation udp")";
                      junos:must-message "destination-udp-port can be configured only for encapsulation udp on fti interface";
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "10020 .. 10029";
                        }
                      }
                      description
                        "Choose destination UDP port number";
                    }
                  }  // container mpls
    
                  container mlppp {
                    junos:must "(!("interfaces ${interface} container-options"))";
                    junos:must-message "mlppp is not supported for container interfaces";
                    description
                      "Multilink PPP protocol parameters";
                    uses apply-advanced;
    
                    leaf bundle {
                      junos:must "((!(".. .. .. dial-options") || "interfaces $$-IFL encapsulation multilink-ppp"))";
                      junos:must-message "Bundle interface must be configured";
                      junos:must "((!(".. .. .. pppoe-options") || "interfaces $$-IFL encapsulation multilink-ppp"))";
                      junos:must-message "Bundle interface must be configured";
                      type string;
                      description
                        "Logical interface name this link will join";
                    }
    
                    choice anchor-points {
                      case case_1 {
                      }  // case case_1
    
                      case case_2 {
                      }  // case case_2
                    }  // choice anchor-points
    
                    leaf dynamic-profile {
                      junos:must "("dynamic-profiles $$")";
                      junos:must-message "referenced dynamic-profile must be defined";
                      type string {
                        length "1 .. 80";
                      }
                      description
                        " dynamic profile for interface to use";
                    }
                  }  // container mlppp
    
                  container mlfr-end-to-end {
                    junos:must "(!(".. .. encapsulation frame-relay-ppp"))";
                    junos:must-message "family mlfr-end-to-end is not supported on encapsulation frame-relay-ppp";
                    presence
                      "enable mlfr-end-to-end";
                    description
                      "Multilink Frame Relay end-to-end protocol parameters";
                    uses apply-advanced;
    
                    leaf bundle {
                      type union {
                        type jt:interface-unit;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Logical interface name this link will join";
                    }
                  }  // container mlfr-end-to-end
    
                  container mlfr-uni-nni {
                    junos:must "(!(".. .. encapsulation frame-relay-ppp"))";
                    junos:must-message "family mlfr-uni-uni is not supported on encapsulation frame-relay-ppp";
                    presence
                      "enable mlfr-uni-nni";
                    description
                      "Multilink Frame Relay UNI NNI protocol parameters";
                    uses apply-advanced;
    
                    leaf bundle {
                      type union {
                        type jt:interface-unit;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Logical interface name this link will join";
                    }
                  }  // container mlfr-uni-nni
    
                  container ccc {
                    junos:must "(!(".. .. encapsulation frame-relay-ppp"))";
                    junos:must-message "family ccc is not supported on encapsulation frame-relay-ppp";
                    presence "enable ccc";
                    description
                      "Circuit cross-connect parameters";
                    uses apply-advanced;
    
                    container filter {
                      description
                        "Packet filtering";
                      uses apply-advanced;
    
                      choice input_choice {
                        leaf input {
                          type string;
                          description
                            "Name of filter applied to received packets";
                        }
                        leaf-list input-list {
                          type string;
                          ordered-by user;
                          description
                            "List of filter modules applied to received packets ";
                        }
                      }  // choice input_choice
    
                      leaf-list input-chain {
                        type string;
                        ordered-by user;
                        description
                          "List of filter modules applied to received packets ";
                      }
    
                      choice output_choice {
                        leaf output {
                          type string;
                          description
                            "Name of filter applied to transmitted packets";
                        }
                        leaf-list output-list {
                          type string;
                          ordered-by user;
                          description
                            "List of filter modules applied to transmitted packets ";
                        }
                      }  // choice output_choice
    
                      leaf-list output-chain {
                        type string;
                        ordered-by user;
                        description
                          "List of filter modules applied to transmitted packets ";
                      }
    
                      leaf group {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 255";
                          }
                        }
                        description
                          "Interface group to which interface belongs";
                      }
                    }  // container filter
    
                    container policer {
                      description
                        "Interface policing";
                      uses apply-advanced;
    
                      leaf input {
                        type string;
                        description
                          "Name of policer applied to received packets";
                      }
    
                      leaf output {
                        type string;
                        description
                          "Name of policer applied to transmitted packets";
                      }
                    }  // container policer
    
                    leaf translate-fecn-and-becn {
                      type empty;
                      description
                        "Translate FECN and BECN bits";
                    }
    
                    choice de-or-plp {
                      leaf translate-discard-eligible {
                        type empty;
                        description
                          "Translate DE bit";
                      }
    
                      case case_2 {
                      }  // case case_2
                    }  // choice de-or-plp
    
                    leaf keep-address-and-control {
                      type empty;
                      description
                        "Don't strip PPP address and control bytes";
                    }
                  }  // container ccc
    
                  container tcc {
                    junos:must "(!(".. .. encapsulation frame-relay-ppp"))";
                    junos:must-message "family tcc is not supported on encapsulation frame-relay-ppp";
                    presence "enable tcc";
                    description
                      "Translational cross-connect parameters";
                    uses apply-advanced;
    
                    container policer {
                      description
                        "Interface policing";
                      uses apply-advanced;
    
                      leaf input {
                        type string;
                        description
                          "Name of policer applied to received packets";
                      }
    
                      leaf output {
                        type string;
                        description
                          "Name of policer applied to transmitted packets";
                      }
                    }  // container policer
    
                    container proxy {
                      presence "enable proxy";
                      uses apply-advanced;
    
                      leaf inet-address {
                        type jt:ipv4addr;
                        description
                          "Remote host address on non-Ethernet side of Ethernet TCC";
                      }
                    }  // container proxy
    
                    container remote {
                      presence "enable remote";
                      uses apply-advanced;
    
                      leaf inet-address {
                        type jt:ipv4addr;
                        description
                          "Remote host address on Ethernet side of Ethernet TCC";
                      }
    
                      leaf mac-address {
                        type jt:mac-addr;
                        description
                          "Remote host MAC address on Ethernet side of Ethernet TCC";
                      }
                    }  // container remote
                  }  // container tcc
    
                  container vpls {
                    presence "enable vpls";
                    description
                      "Virtual private LAN service parameters";
                    uses apply-advanced;
    
                    leaf core-facing {
                      type empty;
                      description
                        "Interface is core facing";
                    }
                  }  // container vpls
    
                  container bridge {
                    junos:must "((!(".. vpls") && (!(".. inet") && (!(".. inet6") && (!(".. ccc") && (!(".. ethernet-switching") && (!(".. iso") && (!(".. llc2") && (!(".. mpls") && (!(".. tcc") && (!(".. pppoe") && !(".. gre"))))))))))))";
                    junos:must-message "family bridge and rest of the families are mutually exclusive";
                    presence "enable bridge";
                    description
                      "Layer-2 bridging parameters";
                    uses apply-advanced;
    
                    leaf core-facing {
                      type empty;
                      description
                        "Interface is core facing";
                    }
    
                    leaf interface-mode {
                      type enumeration {
                        enum "access" {
                          junos:must "((!("interfaces ${interface} vlan-tagging") && (!("interfaces ${interface} flexible-vlan-tagging") && !("interfaces ${interface} stacked-vlan-tagging"))))";
                          junos:must-message "interface-mode access is allowed only for untagged interfaces";
                          value 0;
                          description
                            "Interface mode is access";
                        }
                        enum "trunk" {
                          junos:must "(!("interfaces ${interface} no-native-vlan-insert"))";
                          junos:must-message "'interface-mode trunk' must not be configured with 'no-native-vlan-insert'";
                          junos:must "((("protocols mvrp interface ${interface}" || any "routing-instances <*> protocols mvrp interface ${interface}") || (".. vlan-id-list" || (".. isid-list" || (".. inner-vlan-id-list" || (".. vlan members" || ("..inner-vlan members" || (".. vlan-id" || ".. vlan-auto-sense"))))))))";
                          junos:must-message "'interface-mode trunk' must be defined with either 'vlan-id-list','isid-list', 'inner-vlan-id-list' or the interface must be configured for 'protocols mvrp' or 'vlan-auto-sense'";
                          value 1;
                          description
                            "Interface mode is trunk";
                        }
                      }
                      description
                        "Interface mode (access or trunk)";
                    }
    
                    leaf vlan-auto-sense {
                      junos:must "(".. interface-mode trunk")";
                      junos:must-message "vlan-auto-sense can be enabled only on trunk interfaces";
                      type empty;
                      description
                        "Enable VLAN auto sense on this interface";
                    }
    
                    leaf bridge-domain-type {
                      type enumeration {
                        enum "svlan" {
                          junos:must "(".. isid-list all-service-groups")";
                          junos:must-message "bridge-domain-type svlan is allowed only for isid tagged interfaces";
                          junos:must "(".. interface-mode trunk")";
                          junos:must-message "bridge-domain-type svlan is allowed only for trunk interfaces";
                          value 0;
                          description
                            "Bridge domain type svlan";
                        }
                        enum "bvlan" {
                          junos:must "(".. isid-list all")";
                          junos:must-message "bridge-domain-type bvlan is allowed only for isid tagged interfaces";
                          junos:must "(".. interface-mode trunk")";
                          junos:must-message "bridge-domain-type bvlan is allowed only for trunk interfaces";
                          value 1;
                          description
                            "Bridge domain type bvlan";
                        }
                      }
                      description
                        "Bridge domain type (svlan or bvlan)";
                    }
    
                    leaf inter-switch-link {
                      junos:must "(".. interface-mode trunk")";
                      junos:must-message "'Inter switch link' is supported only under trunk interface mode";
                      type empty;
                      description
                        "PVLAN inter switch link";
                    }
    
                    choice vlan_list {
                      leaf vlan-id {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 4094";
                          }
                        }
                        description
                          "Access mode and trunk mode VLAN membership";
                      }
                      leaf-list vlan-id-list {
                        junos:must "((!(".. .. .. vlan-id") && !(".. .. .. vlan-tags")))";
                        junos:must-message "'vlan-id-list' cannot be used on interface with vlan-id/vlan-tags";
                        junos:must "(!("interfaces ${interface} stacked-vlan-tagging"))";
                        junos:must-message "'vlan-id-list' is not supported on stacked-vlan-tagging mode";
                        junos:must "(".. interface-mode trunk")";
                        junos:must-message "'vlan-id-list' statement supported only under trunk interface mode";
                        type jt:vlan-range;
                        description
                          "Trunk mode VLAN membership for this interface";
                      }
                      leaf-list inner-vlan-id-list {
                        junos:must "((!(".. .. .. vlan-tags inner") && !(".. .. .. vlan-tags inner-range")))";
                        junos:must-message "'inner-vlan-id-list' cannot be used on interface with vlan-tags inner/inner-range";
                        junos:must "((".. .. .. vlan-id" || ".. .. .. vlan-tags"))";
                        junos:must-message "'inner-vlan-id-list' can be used only on interface with vlan-id/vlan-tags";
                        junos:must "("interfaces ${interface} flexible-vlan-tagging")";
                        junos:must-message "'inner-vlan-id-list' is supported only on flexible-vlan-tagging mode";
                        junos:must "(".. interface-mode trunk")";
                        junos:must-message "'inner-vlan-id-list' statement supported only under trunk interface mode";
                        type jt:vlan-range;
                        description
                          "Trunk mode VLAN membership for this interface based on inner VLAN tag";
                      }
                    }  // choice vlan_list
    
                    container vlan-rewrite {
                      junos:must "((".. inner-vlan-id-list" || ".. vlan-id-list"))";
                      junos:must-message "'vlan-rewrite' statement can be used only with 'vlan-id-list' or inner-vlan-id-list configured";
                      junos:must "(".. interface-mode trunk")";
                      junos:must-message "'vlan-rewrite' statement supported only under trunk interface mode";
                      description
                        "Specify vlan translation";
                      uses apply-advanced;
    
                      list translate {
                        key "name";
                        ordered-by user;
                        description
                          "Translate incoming VLAN tag";
                        leaf name {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "1 .. 4094";
                            }
                          }
                          description
                            "Specify the incoming VLAN tag";
                        }
    
                        leaf to-vlan-id {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "1 .. 4094";
                            }
                          }
                          description
                            "Specify the bridge-domain VLAN-ID";
                        }
                      }  // list translate
                    }  // container vlan-rewrite
    
                    choice isid_list {
                      leaf isid-list {
                        type enumeration {
                          enum
                            "all-service-groups" {
                            junos:must "(".. interface-mode trunk")";
                            junos:must-message "'all-service-groups' statement supported only under trunk interface mode";
                            value 0;
                            description
                              "Map all ISIDs specified under the service-groups";
                          }
                          enum "all" {
                            junos:must "(".. interface-mode trunk")";
                            junos:must-message "'all' statement supported only under trunk interface mode";
                            value 1;
                            description
                              "Map all ISIDs";
                          }
                        }
                        description
                          "Specify the ISID list";
                      }
                    }  // choice isid_list
    
                    container recovery-timeout {
                      junos:must "(".. storm-control")";
                      junos:must-message "Recovery timeout should be configured only with storm-control";
                      description
                        "Recovery timeout for this interface";
                      leaf time-in-seconds {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "10 .. 3600";
                          }
                        }
                        units "seconds";
                      }
                    }  // container recovery-timeout
                  }  // container bridge
    
                  container ethernet-switching {
                    junos:must "((!(".. vpls") && (!(".. inet") && (!(".. inet6") && (!(".. bridge") && (!(".. ccc") && (!(".. iso") && (!(".. llc2") && (!(".. mpls") && (!(".. tcc") && (!(".. pppoe") && !(".. gre"))))))))))))";
                    junos:must-message "Family ethernet-switching and rest of the families are mutually exclusive";
                    presence
                      "enable ethernet-switching";
                    description
                      "Ethernet switching parameters";
                    uses ethernet-switching-type;
                  }  // container ethernet-switching
    
                  container fibre-channel {
                    presence
                      "enable fibre-channel";
                    description
                      "Fibre channel switching parameters";
                    uses fibre-channel-type;
                  }  // container fibre-channel
    
                  container any {
                    presence "enable any";
                    description
                      "Parameters for 'any' family";
                    uses apply-advanced;
    
                    container filter {
                      description
                        "Layer 2 packet filtering";
                      uses apply-advanced;
    
                      leaf input {
                        junos:must "(("firewall family any filter $$" || (!("firewall") && ".. .. .. .. .. .. firewall family any filter $$")))";
                        junos:must-message "referenced filter must be defined under firewall family any";
                        type string {
                          junos:posix-pattern "!^((__.*)|(.{65,}))$";
                          junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                        }
                        description
                          "Name of filter applied to received packets";
                      }
    
                      leaf group {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 255";
                          }
                        }
                        description
                          "Group to which interface belongs";
                      }
                    }  // container filter
                  }  // container any
                }  // container family
    
                leaf service-domain {
                  type enumeration {
                    enum "inside" {
                      value 0;
                      description
                        "Inside network";
                    }
                    enum "outside" {
                      value 1;
                      description
                        "Outside network";
                    }
                  }
                  description
                    "Service domain to which interface belongs";
                }
    
                leaf copy-tos-to-outer-ip-header {
                  type empty;
                  description
                    "Copy IP payload header's ToS field to GRE delivery header";
                }
    
                container load-balancing-options {
                  junos:must "(!(".. .. load-balancing-options high-availability-options one-to-one"))";
                  junos:must-message "load-balancing-options are used when number of active members is more than one";
                  description
                    "AMS subunit load balancing options";
                  uses apply-advanced;
    
                  leaf preferred-active {
                    junos:must "((".. .. .. load-balancing-options member-interface $$" && !(".. .. .. load-balancing-options high-availability-options many-to-one preferred-backup $$")))";
                    junos:must-message "Active should be one of member-interfaces excluding preferred-backup";
                    type union {
                      type jt:interface-device;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description
                      "Preferred active Interface name";
                  }
    
                  leaf disable-hash {
                    junos:must "(".. .. service-domain")";
                    junos:must-message "service-domain must be configured if disable-hash is enabled";
                    junos:must "(!(".. hash-keys"))";
                    junos:must-message "hash-keys must not be configured if disable-hash is enabled";
                    type empty;
                    description
                      "Hash based distribution is not needed for this subunit";
                  }
    
                  container hash-keys {
                    uses apply-advanced;
    
                    leaf-list ingress-key {
                      type enumeration {
                        enum "source-ip" {
                          value 0;
                          description
                            "Source Ip Address";
                        }
                        enum "destination-ip" {
                          value 1;
                          description
                            "Destination Ip Address";
                        }
                        enum "protocol" {
                          value 2;
                          description "Protocol";
                        }
                        enum "iif" {
                          value 3;
                          description
                            "Incoming Interface";
                        }
                      }
                      ordered-by user;
                      description
                        "Hash Key for the ingress direction";
                    }
    
                    leaf-list egress-key {
                      type enumeration {
                        enum "source-ip" {
                          value 0;
                          status deprecated;
                          description
                            "Source Ip Address";
                        }
                        enum "destination-ip" {
                          value 1;
                          status deprecated;
                          description
                            "Destination Ip Address";
                        }
                        enum "protocol" {
                          value 2;
                          status deprecated;
                          description "Protocol";
                        }
                        enum "oif" {
                          value 3;
                          status deprecated;
                          description
                            "Outgoing Interface";
                        }
                      }
                      ordered-by user;
                      status deprecated;
                      description
                        "Hash Key for the egress direction";
                    }
    
                    leaf ipv6-source-prefix-length {
                      type enumeration {
                        enum "56" {
                          value 0;
                          description
                            "56 bit IPv6 address prefix";
                        }
                        enum "64" {
                          value 1;
                          description
                            "64 bit IPv6 address prefix";
                        }
                        enum "96" {
                          value 2;
                          description
                            "96 bit IPv6 address prefix";
                        }
                        enum "128" {
                          value 3;
                          description
                            "Complete 128 bit IPv6 address";
                        }
                      }
                      description
                        "IPv6 source prefix length for hash computation";
                    }
                  }  // container hash-keys
                }  // container load-balancing-options
    
                container interface-state {
                  description
                    "IRB interface state computation";
                  uses apply-advanced;
    
                  choice state {
                    leaf local-interface {
                      type union {
                        type jt:interface-name;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "IRB State computation based on loopback AE port state";
                    }
                  }  // choice state
    
                  container hold-time {
                    description
                      "Delay before marking interface up or down for defect";
                    uses apply-advanced;
    
                    leaf up {
                      type union {
                        type uint32;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      units "seconds";
                      description
                        "Delay in seconds before marking IRB interface up";
                    }
    
                    leaf down {
                      type union {
                        type uint32;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      units "seconds";
                      description
                        "Delay in seconds before marking IRB interface down";
                    }
                  }  // container hold-time
                }  // container interface-state
    
                leaf virtual-gateway-v4-mac {
                  type jt:mac-unicast;
                  description
                    "Configure virtual gateway IPV4 virtual MAC address";
                }
    
                leaf virtual-gateway-v6-mac {
                  type jt:mac-unicast;
                  description
                    "Configure virtual gateway IPV6 virtual MAC address";
                }
    
                leaf etree-ac-role {
                  type enumeration {
                    enum "root" {
                      value 0;
                      description
                        "ETREE root interface";
                    }
                    enum "leaf" {
                      value 1;
                      description
                        "ETREE leaf interface";
                    }
                  }
                  description
                    "ETREE attachment circuit role";
                }
              }  // list unit
    
              container no-partition {
                description
                  "Use channelizable interface as clear channel";
                leaf interface-type {
                  type enumeration {
                    enum "e1" {
                      value 0;
                      description "E1 interface";
                    }
                    enum "t1" {
                      value 1;
                      description "T1 interface";
                    }
                    enum "at" {
                      value 2;
                      description
                        "ATM interface";
                    }
                    enum "t3" {
                      value 3;
                      description "T3 interface";
                    }
                    enum "e3" {
                      value 4;
                      description "E3 interface";
                    }
                    enum "ct3" {
                      value 5;
                      description
                        "Channelized T3 interface";
                    }
                    enum "so" {
                      value 6;
                      description
                        "SONET interface";
                    }
                    enum "cau4" {
                      value 7;
                      description
                        "CAU4 interface";
                    }
                  }
                  description "Interface type";
                }
              }  // container no-partition
    
              list partition {
                junos:must "(!(".. no-partition"))";
                junos:must-message "cannot set partitions with no-partition attribute turned on";
                key "name";
                ordered-by user;
                description
                  "Channelized interface partition";
                leaf name {
                  type string;
                  description
                    "Sublevel interface partition index (for example, 1, 3-4)";
                }
    
                leaf oc-slice {
                  type string;
                  description
                    "Range of SONET/SDH slices (for example, 1, 7-9)";
                }
    
                leaf timeslots {
                  type string;
                  description
                    "Timeslots [(1..24) for T1, (1..31) for E1]; for example, 1-3,4,9,22-24 (no spaces)";
                }
    
                leaf interface-type {
                  type enumeration {
                    enum "ds" {
                      value 0;
                      description
                        "DS0 interface";
                    }
                    enum "e1" {
                      value 1;
                      description "E1 interface";
                    }
                    enum "t1" {
                      value 2;
                      description "T1 interface";
                    }
                    enum "at" {
                      value 3;
                      description
                        "ATM interface";
                    }
                    enum "ct1" {
                      value 4;
                      description
                        "Channelized T1 interface";
                    }
                    enum "ce1" {
                      value 5;
                      description
                        "Channelized E1 interface";
                    }
                    enum "t3" {
                      value 6;
                      description "T3 interface";
                    }
                    enum "ct3" {
                      value 7;
                      description
                        "Channelized T3 interface";
                    }
                    enum "e3" {
                      value 8;
                      description "E3 interface";
                    }
                    enum "so" {
                      value 9;
                      description
                        "SONET interface";
                    }
                    enum "coc1" {
                      value 10;
                      description
                        "Channelized OC1 interface";
                    }
                    enum "cau4" {
                      value 11;
                      description
                        "Channelized AU4 interface";
                    }
                    enum "dc" {
                      junos:must "(any ".. .. partition <*> interface-type bc")";
                      junos:must-message "BC partition must be defined for PRI";
                      value 12;
                      description
                        "D channel interface";
                    }
                    enum "bc" {
                      junos:must "(any ".. .. partition <*> interface-type dc")";
                      junos:must-message "DC partition must be defined for PRI";
                      value 13;
                      description
                        "B channel interface";
                    }
                  }
                  description
                    "Sublevel interface type";
                }
              }  // list partition
            }  // list interface-range
    
            list interface {
              key "name";
              uses interfaces_type;
            }  // list interface
          }  // container interfaces
    
          container protocols {
            description
              "Routing protocol configuration";
            uses apply-advanced;
    
            container igmp {
              presence "enable igmp";
              description "IGMP options";
              uses apply-advanced;
    
              container traceoptions {
                description
                  "Trace options for IGMP";
                uses apply-advanced;
    
                container file {
                  description
                    "Trace file options";
                  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 replace {
                    type empty;
                    status deprecated;
                    description
                      "Replace trace file rather than appending to it";
                  }
    
                  leaf size {
                    type string;
                    description
                      "Maximum trace file size";
                  }
    
                  leaf files {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "2 .. 1000";
                      }
                    }
                    default "10";
                    description
                      "Maximum number of trace files";
                  }
    
                  leaf no-stamp {
                    type empty;
                    status deprecated;
                    description
                      "Do not timestamp trace file";
                  }
    
                  choice world-readable-choice {
                    leaf world-readable {
                      type empty;
                      description
                        "Allow any user to read the log file";
                    }
                    leaf no-world-readable {
                      type empty;
                      description
                        "Don't allow any user to read the log file";
                    }
                  }  // choice world-readable-choice
                }  // container file
    
                list flag {
                  key "name";
                  ordered-by user;
                  description
                    "Tracing parameters";
                  leaf name {
                    type enumeration {
                      enum "packets" {
                        value 0;
                        description
                          "Trace all IGMP packets";
                      }
                      enum "query" {
                        value 1;
                        description
                          "Trace IGMP membership query messages";
                      }
                      enum "report" {
                        value 2;
                        description
                          "Trace membership report messages";
                      }
                      enum "leave" {
                        value 3;
                        description
                          "Trace leave group messages (IGMPv2 only)";
                      }
                      enum "mtrace" {
                        value 4;
                        description
                          "Trace mtrace packets";
                      }
                      enum "group" {
                        value 5;
                        description
                          "Trace group operations";
                      }
                      enum "client-notification" {
                        value 6;
                        description
                          "Trace notifications";
                      }
                      enum "host-notification" {
                        value 7;
                        description
                          "Trace host notifications";
                      }
                      enum "route" {
                        value 8;
                        description
                          "Trace routing information";
                      }
                      enum "normal" {
                        value 9;
                        description
                          "Trace normal events";
                      }
                      enum "general" {
                        value 10;
                        description
                          "Trace general events";
                      }
                      enum "state" {
                        value 11;
                        description
                          "Trace state transitions";
                      }
                      enum "policy" {
                        value 12;
                        description
                          "Trace policy processing";
                      }
                      enum "task" {
                        value 13;
                        description
                          "Trace routing protocol task processing";
                      }
                      enum "timer" {
                        value 14;
                        description
                          "Trace routing protocol timer processing";
                      }
                      enum "all" {
                        value 15;
                        description
                          "Trace everything";
                      }
                    }
                  }
    
                  leaf send {
                    type empty;
                    description
                      "Trace transmitted packets";
                  }
    
                  leaf receive {
                    type empty;
                    description
                      "Trace received packets";
                  }
    
                  leaf detail {
                    type empty;
                    description
                      "Trace detailed information";
                  }
    
                  leaf disable {
                    type empty;
                    description
                      "Disable this trace flag";
                  }
                }  // list flag
              }  // container traceoptions
    
              leaf query-interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 1024";
                  }
                }
                units "seconds";
                description
                  "When to send host query messages";
              }
    
              leaf query-response-interval {
                type string {
                  junos:posix-pattern "^[0-9]{1,4}(.[0-9])?$";
                  junos:pattern-message "Up to 1 digit to right of decimal point";
                }
                units "seconds";
                description
                  "How long to wait for a host query response";
              }
    
              leaf query-last-member-interval {
                type string {
                  junos:posix-pattern "^[0-9]{1,4}(.[0-9])?$";
                  junos:pattern-message "Up to 1 digit to right of decimal point";
                }
                units "seconds";
                description
                  "When to send group query messages";
              }
    
              leaf robust-count {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "2 .. 10";
                  }
                }
                description
                  "Expected packet loss on a subnet";
              }
    
              leaf maximum-transmit-rate {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 10000";
                  }
                }
                description
                  "Maximum transmission rate (packets per second)";
              }
    
              leaf accounting {
                type empty;
                description
                  "Enable join and leave event notification";
              }
    
              list interface {
                key "name";
                ordered-by user;
                description
                  "Interface options for IGMP";
                leaf name {
                  type string;
                }
    
                uses apply-advanced;
    
                choice enable-disable {
                  leaf disable {
                    type empty;
                    description
                      "Disable IGMP on this interface";
                  }
                }  // choice enable-disable
    
                leaf version {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint8 {
                      range "1 .. 3";
                    }
                  }
                  description
                    "Set IGMP version number on this interface";
                }
    
                container static {
                  description
                    "Static group or source membership";
                  uses apply-advanced;
    
                  list group {
                    key "name";
                    ordered-by user;
                    description
                      "IP multicast group address";
                    leaf name {
                      type jt:ipv4addr;
                      description
                        "IP multicast group address";
                    }
    
                    uses apply-advanced;
    
                    leaf group-increment {
                      type jt:ipv4addr;
                      description
                        "Mask for the incrementing group IP address";
                    }
    
                    leaf group-count {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 512";
                        }
                      }
                      description
                        "Number of groups";
                    }
    
                    leaf exclude {
                      type empty;
                      description
                        "Exclude sources";
                    }
    
                    list source {
                      key "name";
                      ordered-by user;
                      description
                        "IP multicast source address";
                      leaf name {
                        type jt:ipv4addr;
                        description
                          "Source address of IP multicast data";
                      }
    
                      uses apply-advanced;
    
                      leaf source-increment {
                        type jt:ipv4addr;
                        description
                          "Mask for the incrementing source IP address";
                      }
    
                      leaf source-count {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 1024";
                          }
                        }
                        description
                          "Number of sources";
                      }
                    }  // list source
                  }  // list group
                }  // container static
    
                leaf ssm-map {
                  type string;
                  description
                    "Map for SSM translation of IGMPv1 or IGMPv2 messages";
                }
    
                leaf-list ssm-map-policy {
                  type jt:policy-algebra;
                  ordered-by user;
                  description
                    "SSM map policy name";
                }
    
                leaf immediate-leave {
                  type empty;
                  description
                    "Group removed immediately, last membership query not sent";
                }
    
                leaf promiscuous-mode {
                  type empty;
                  description
                    "Accept igmp messages coming from different subnet";
                }
    
                choice accounting-choice {
                  leaf accounting {
                    type empty;
                    description
                      "Enable join and leave event notification";
                  }
                  leaf no-accounting {
                    type empty;
                    description
                      "Don't enable join and leave event notification";
                  }
                }  // choice accounting-choice
    
                leaf-list group-policy {
                  type jt:policy-algebra;
                  ordered-by user;
                  description
                    "Group filter applied to incoming IGMP report messages";
                }
    
                leaf group-limit {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 32767";
                    }
                  }
                  description
                    "Maximum number of (source,group) per interface";
                }
    
                leaf group-threshold {
                  junos:must "(" .. group-limit")";
                  junos:must-message "To configure group-threshold, group-limit must be set";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "Percentage of limit at which to generate warnings";
                }
    
                leaf log-interval {
                  junos:must "(" .. group-limit")";
                  junos:must-message "To configure log-interval, group-limit must be set";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "6 .. 32767";
                    }
                  }
                  description
                    "Time between consecutive log messages";
                }
    
                container passive {
                  presence "enable passive";
                  description
                    "Suppress sending and receiving IGMP messages";
                  leaf allow-receive {
                    type empty;
                    description
                      "Allow receiving IGMP messages";
                  }
    
                  leaf send-general-query {
                    type empty;
                    description
                      "Send IGMP general query messages";
                  }
    
                  leaf send-group-query {
                    type empty;
                    description
                      "Send IGMP group query messages";
                  }
                }  // container passive
    
                leaf-list oif-map {
                  type jt:policy-algebra;
                  ordered-by user;
                  description
                    "Output interface map";
                }
    
                leaf distributed {
                  junos:must "("chassis network-services enhanced-ip")";
                  junos:must-message "distributed is supported only in enhanced-ip mode";
                  type empty;
                  description
                    "Distributed IGMP interface";
                }
              }  // list interface
    
              container amt {
                description
                  "Automatic Multicast Tunnel options for IGMP";
                uses apply-advanced;
    
                container relay {
                  description
                    "AMT relay options for IGMP";
                  uses apply-advanced;
    
                  container defaults {
                    presence "enable defaults";
                    description
                      "Default AMT relay options for IGMP";
                    uses apply-advanced;
    
                    leaf version {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint8 {
                          range "1 .. 3";
                        }
                      }
                      description
                        "Set IGMP version number on AMT interfaces";
                    }
    
                    leaf ssm-map {
                      type string;
                      description
                        "Map for SSM translation of IGMPv1 or IGMPv2 messages";
                    }
    
                    leaf-list ssm-map-policy {
                      type jt:policy-algebra;
                      ordered-by user;
                      description
                        "SSM map policy name";
                    }
    
                    choice accounting-choice {
                      leaf accounting {
                        type empty;
                        description
                          "Enable join and leave event notification";
                      }
                      leaf no-accounting {
                        type empty;
                        description
                          "Don't enable join and leave event notification";
                      }
                    }  // choice accounting-choice
    
                    leaf-list group-policy {
                      type jt:policy-algebra;
                      ordered-by user;
                      description
                        "Group filter applied to incoming IGMP report messages";
                    }
    
                    leaf group-limit {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint16 {
                          range "1 .. 32767";
                        }
                      }
                      description
                        "Maximum number of (source,group) per interface";
                    }
    
                    leaf group-threshold {
                      junos:must "(" .. group-limit")";
                      junos:must-message "To configure group-threshold, group-limit must be set";
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 100";
                        }
                      }
                      description
                        "Percentage of limit at which to generate warnings";
                    }
    
                    leaf log-interval {
                      junos:must "(" .. group-limit")";
                      junos:must-message "To configure log-interval, group-limit must be set";
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "6 .. 32767";
                        }
                      }
                      description
                        "Time between consecutive log messages";
                    }
    
                    leaf robust-count {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "2 .. 10";
                        }
                      }
                      description
                        "Expected packet loss on a subnet";
                    }
    
                    leaf query-interval {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 1024";
                        }
                      }
                      units "seconds";
                      description
                        "When to send host query messages";
                    }
    
                    leaf query-response-interval {
                      type string {
                        junos:posix-pattern "^[0-9]{1,4}(.[0-9])?$";
                        junos:pattern-message "Up to 1 digit to right of decimal point";
                      }
                      units "seconds";
                      description
                        "How long to wait for a host query response";
                    }
                  }  // container defaults
                }  // container relay
              }  // container amt
            }  // container igmp
    
            container oam {
              description
                "Operation, Administration, and Management configuration";
              uses apply-advanced;
    
              container ethernet {
                description
                  "OAM configuration for Ethernet";
                uses apply-advanced;
    
                container link-fault-management {
                  description
                    "802.3ah Ethernet OAM configuration";
                  uses apply-advanced;
    
                  container traceoptions {
                    description
                      "Trace options for link-fault management";
                    uses apply-advanced;
    
                    leaf no-remote-trace {
                      junos:must "("system tracing")";
                      junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
                      type empty;
                      description
                        "Disable remote tracing";
                    }
    
                    container file {
                      description
                        "Trace file information";
                      leaf filename {
                        type string {
                          junos:posix-pattern "![/ %]";
                          junos:pattern-message "Must not contain '/', % or a space";
                          length "1 .. 1024";
                        }
                        description
                          "Name of file in which to write trace information";
                      }
    
                      leaf size {
                        type string;
                        description
                          "Maximum trace file size";
                      }
    
                      leaf files {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "2 .. 1000";
                          }
                        }
                        default "3";
                        description
                          "Maximum number of trace files";
                      }
    
                      choice world-readable-choice {
                        leaf world-readable {
                          type empty;
                          description
                            "Allow any user to read the log file";
                        }
                        leaf no-world-readable {
                          type empty;
                          description
                            "Don't allow any user to read the log file";
                        }
                      }  // choice world-readable-choice
    
                      leaf match {
                        type jt:regular-expression;
                        description
                          "Regular expression for lines to be logged";
                      }
                    }  // container file
    
                    list flag {
                      key "name";
                      ordered-by user;
                      description
                        "Tracing parameters";
                      leaf name {
                        type enumeration {
                          enum "configuration" {
                            value 0;
                            description
                              "Trace configuration events";
                          }
                          enum "routing-socket" {
                            value 1;
                            description
                              "Trace routing socket events";
                          }
                          enum "protocol" {
                            value 2;
                            description
                              "Trace protocol processing events";
                          }
                          enum "action-profile" {
                            value 3;
                            description
                              "Trace action profile invocation events";
                          }
                          enum "all" {
                            value 4;
                            description
                              "Trace everything";
                          }
                        }
                      }
                    }  // list flag
                  }  // container traceoptions
    
                  list action-profile {
                    key "name";
                    ordered-by user;
                    description
                      "Define an action profile";
                    leaf name {
                      type string {
                        length "1 .. 32";
                      }
                      description
                        "Name of action profile";
                    }
    
                    uses apply-advanced;
    
                    container event {
                      description
                        "Events this action profile will check";
                      uses apply-advanced;
    
                      leaf link-adjacency-loss {
                        type empty;
                        description
                          "Loss of adjacency with OAM peer";
                      }
    
                      leaf protocol-down {
                        type empty;
                        description
                          "Upper layer indication on protocol down";
                      }
    
                      container link-event-rate {
                        uses apply-advanced;
    
                        leaf symbol-period {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type int32 {
                              range "1 .. 100";
                            }
                          }
                          units
                            "error(s) per 100 symbol";
                          description
                            "Rate of receiving symbol period events";
                        }
    
                        leaf frame-error {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type int32 {
                              range "1 .. 1000";
                            }
                          }
                          units
                            "error(s) per 100 milli-second";
                          description
                            "Rate of receiving frame error events";
                        }
    
                        leaf frame-period {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type int32 {
                              range "1 .. 100";
                            }
                          }
                          units
                            "error(s) per 100 frames";
                          description
                            "Rate of receiving frame period events";
                        }
    
                        leaf frame-period-summary {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type int32 {
                              range "1 .. 1000";
                            }
                          }
                          units
                            "error(s) per second";
                          description
                            "Rate of receiving frame period summary events";
                        }
                      }  // container link-event-rate
                    }  // container event
    
                    container action {
                      description
                        "Action to take on specified events";
                      uses apply-advanced;
    
                      leaf syslog {
                        type empty;
                        description
                          "Generate syslog message";
                      }
    
                      leaf link-down {
                        type empty;
                        description
                          "Mark the interface down for transit traffic";
                      }
    
                      leaf send-critical-event {
                        junos:must "(".. .. event protocol-down")";
                        junos:must-message "send-critical-event action can be configured only with protocol-down event";
                        type empty;
                        description
                          "Start sending OAM PDUs with critical event bit set";
                      }
                    }  // container action
                  }  // list action-profile
    
                  list interface {
                    key "name";
                    ordered-by user;
                    description
                      "Interface on which to set Ethernet OAM parameters";
                    leaf name {
                      type union {
                        type jt:interface-device;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Interface name";
                    }
    
                    uses apply-advanced;
    
                    leaf-list apply-action-profile {
                      type string;
                      ordered-by user;
                      description
                        "Apply the specified action profile on the interface";
                    }
    
                    leaf pdu-interval {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type int32 {
                          range "100 .. 1000";
                        }
                      }
                      units "milliseconds";
                      default "1000";
                      description
                        "Periodic OAM protocol data unit interval";
                    }
    
                    leaf loopback-tracking {
                      type empty;
                      description
                        "Enable link down on loopback detection";
                    }
    
                    leaf detect-loc {
                      type empty;
                      description
                        "Detects initial lack of adjacency formation";
                    }
    
                    leaf link-discovery {
                      type enumeration {
                        enum "active" {
                          value 0;
                        }
                        enum "passive" {
                          value 1;
                        }
                      }
                      default "active";
                      description
                        "Mode of discovery";
                    }
    
                    leaf pdu-threshold {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type int32;
                      }
                      default "3";
                      description
                        "Number of PDUs missed before declaring peer lost";
                    }
    
                    leaf remote-loopback {
                      junos:must "(!(".. link-discovery passive"))";
                      junos:must-message "remote-loopback request not allowed in passive mode";
                      type empty;
                      description
                        "Put remote DTE into remote-loopback mode";
                    }
    
                    container negotiation-options {
                      description
                        "802.3ah features supported on the interface";
                      uses apply-advanced;
    
                      leaf no-allow-link-events {
                        type empty;
                        description
                          "Do not emit periodic PDUs detailing framing and symbol errors";
                      }
    
                      leaf allow-remote-loopback {
                        type empty;
                        description
                          "Allow local port to be put into loopback mode";
                      }
                    }  // container negotiation-options
    
                    container event-thresholds {
                      junos:must "(!(".. negotiation-options no-allow-link-events"))";
                      junos:must-message "'event-thresholds' statement cannot be included along with 'no-allow-link-events' statement";
                      description
                        "Thresholds for sending 802.3ah events";
                      uses apply-advanced;
    
                      leaf symbol-period {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type int32 {
                            range "0 .. 100";
                          }
                        }
                        default "1";
                        description
                          "Threshold for sending symbol period events";
                      }
    
                      leaf frame-error {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type int32 {
                            range "0 .. 100";
                          }
                        }
                        default "1";
                        description
                          "Threshold for sending frame error events";
                      }
    
                      leaf frame-period {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type int32 {
                            range "0 .. 100";
                          }
                        }
                        default "1";
                        description
                          "Threshold for sending frame period error events";
                      }
    
                      leaf frame-period-summary {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type int32 {
                            range "0 .. 100";
                          }
                        }
                        default "1";
                        description
                          "Threshold for sending frame period summary error events";
                      }
                    }  // container event-thresholds
                  }  // list interface
                }  // container link-fault-management
    
                container connectivity-fault-management {
                  description
                    "Configurations related to 802.1ag ethernet oam";
                  uses apply-advanced;
    
                  container performance-monitoring {
                    description
                      "Configurations related to ethernet performance monitoring";
                    uses apply-advanced;
    
                    leaf hardware-assisted-timestamping {
                      type empty;
                      description
                        "Enable timestamping feature in hardware";
                    }
    
                    leaf delegate-server-processing {
                      type empty;
                      description
                        "Delegate performance measurement request handling to PFE";
                    }
    
                    leaf hardware-assisted-keepalives {
                      type enumeration {
                        enum "enable" {
                          value 0;
                          description
                            "Enable delegate keepalives handling to Hardware";
                        }
                        enum "disable" {
                          value 1;
                          description
                            "Disable delegate keepalives handling to Hardware (default)";
                        }
                      }
                      description
                        "Enable/Disable delegating keepalives to hardware";
                    }
    
                    leaf hardware-assisted-pm {
                      junos:must "("protocols oam ethernet connectivity-fault-management enhanced-cfm-mode")";
                      junos:must-message "enhanced-cfm-mode needs to be configured for inline pm support";
                      type empty;
                      description
                        "Enable inline support for performance monitoring";
                    }
    
                    leaf enhanced-sla-iterator {
                      type empty;
                      description
                        "Enable Enhanced SLA Iterator Cycle-time";
                    }
    
                    leaf measurement-interval {
                      junos:must "(".. enhanced-sla-iterator")";
                      junos:must-message "enhanced-sla-iterator needs to be configured for MEF36 mode";
                      type enumeration {
                        enum "2" {
                          value 0;
                          description
                            "2 minutes measurement interval";
                        }
                        enum "5" {
                          value 1;
                          description
                            "5 minutes measurement interval";
                        }
                        enum "15" {
                          value 2;
                          description
                            "15 minutes measurement interval";
                        }
                        enum "30" {
                          value 3;
                          description
                            "30 minutes measurement interval";
                        }
                        enum "60" {
                          value 4;
                          description
                            "1 hour measurement interval";
                        }
                      }
                      units "minutes";
                      description
                        "Enables measurement-interval based PM (MEF 36 mode). Default 15 min in enhanced-cfm-mode";
                    }
    
                    leaf legacy-pm-display {
                      junos:must "((".. measurement-interval" || ".. .. enhanced-cfm-mode"))";
                      junos:must-message "measurement-interval or enhanced-cfm-mode needs to be configured for legacy PM output in MEF mode.";
                      type empty;
                      description
                        "Display Legacy PM output (for DM) in MEF mode.";
                    }
    
                    list sla-iterator-profiles {
                      key "name";
                      ordered-by user;
                      description
                        "Configuration related to an sla monitoring iterator";
                      leaf name {
                        type string;
                      }
    
                      uses apply-advanced;
    
                      leaf disable {
                        type empty;
                        description
                          "Disable the iterator profile";
                      }
    
                      leaf measurement-type {
                        type enumeration {
                          enum "two-way-delay" {
                            junos:must "(!("routing-options ppm no-delegate-processing"))";
                            junos:must-message "Iterator two-way-delay measurement is not supported with ppm no-delegate-processing";
                            value 0;
                            description
                              "Y.1731 2-way DM frames are sent for this profile";
                          }
                          enum "loss" {
                            value 1;
                            description
                              "Y.1731 LM frames are sent for this profile";
                          }
                          enum "slm" {
                            value 2;
                            description
                              "Y.1731 SLM frames are sent for this profile";
                          }
                          enum
                            "statistical-frame-loss" {
                            junos:must "(!("routing-options ppm no-delegate-processing"))";
                            junos:must-message "Iterator statistical-frame-loss measurement is not supported with ppm no-delegate-processing";
                            value 3;
                            description
                              "Y.1731 2-way DM frames for statistical frame loss are sent for this profile";
                          }
                        }
                        description
                          "Choice of the type of Y.1731(SLA measurement) frame to be sent";
                      }
    
                      leaf flap-trap-monitor {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 360";
                          }
                        }
                        units "seconds";
                        description
                          "Configurable timer value 1-360";
                      }
    
                      leaf cycle-time {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32;
                        }
                        units "milliseconds";
                        default "1000";
                        description
                          "Time period of an iterator profile";
                      }
    
                      leaf iteration-period {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 2000";
                          }
                        }
                        units "connections";
                        default "2000";
                        description
                          "Maximum services under this iterator profile";
                      }
    
                      container calculation-weight {
                        junos:must "(".. measurement-type two-way-delay")";
                        junos:must-message "The measurement type must be two-way-delay";
                        presence
                          "enable calculation-weight";
                        description
                          "Configure delay and delay variation calculation weight";
                        uses apply-advanced;
    
                        leaf delay {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "1 .. 65535";
                            }
                          }
                          default "1";
                          description
                            "Weight used in delay calculation";
                        }
    
                        leaf delay-variation {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "1 .. 65535";
                            }
                          }
                          default "1";
                          description
                            "Weight used in delay-variation calculation";
                        }
                      }  // container calculation-weight
    
                      container avg-flr-forward-threshold {
                        junos:must "((".. measurement-type loss" || " .. measurement-type slm"))";
                        junos:must-message " The measurement type must be either loss or slm";
                        presence
                          "enable avg-flr-forward-threshold";
                        description
                          "Avg forward flr threshold";
                        uses apply-advanced;
    
                        leaf avg-flr-forward {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range
                                "1 .. 100000";
                            }
                          }
                          description
                            "Avg forward flr threshold value in mili-percent";
                        }
    
                        leaf flap-trap-monitor {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "1 .. 360";
                            }
                          }
                          units "seconds";
                          description
                            "Configurable timer value 1-360";
                        }
                      }  // container avg-flr-forward-threshold
    
                      container avg-flr-backward-threshold {
                        junos:must "((".. measurement-type loss" || " .. measurement-type slm"))";
                        junos:must-message " The measurement type must be either loss or slm";
                        presence
                          "enable avg-flr-backward-threshold";
                        description
                          "Avg backward flr threshold";
                        uses apply-advanced;
    
                        leaf avg-flr-backward {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range
                                "1 .. 100000";
                            }
                          }
                          description
                            "Avg backward flr threshold value in mili-percent";
                        }
    
                        leaf flap-trap-monitor {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "1 .. 360";
                            }
                          }
                          units "seconds";
                          description
                            "Configurable timer value 1-360";
                        }
                      }  // container avg-flr-backward-threshold
    
                      container avg-fd-twoway-threshold {
                        junos:must "(".. measurement-type two-way-delay")";
                        junos:must-message " The measurement type must be two-way-delay";
                        presence
                          "enable avg-fd-twoway-threshold";
                        description
                          "Avg frame delay threshold value";
                        uses apply-advanced;
    
                        leaf avg-fd-twoway {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range
                                "1 .. 4294967295";
                            }
                          }
                          units "microseconds";
                          description
                            "Avg frame delay threshold value in mili-percent";
                        }
    
                        leaf flap-trap-monitor {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "1 .. 360";
                            }
                          }
                          units "seconds";
                          description
                            "Configurable timer value 1-360";
                        }
                      }  // container avg-fd-twoway-threshold
    
                      container avg-fdv-twoway-threshold {
                        junos:must "(".. measurement-type two-way-delay")";
                        junos:must-message " The measurement type must be two-way-delay";
                        presence
                          "enable avg-fdv-twoway-threshold";
                        description
                          "Avg frame delay variance threshold";
                        uses apply-advanced;
    
                        leaf avg-fdv-twoway {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range
                                "1 .. 4294967295";
                            }
                          }
                          units "microseconds";
                          description
                            "Avg frame delay variance threshold value in mili-percent";
                        }
    
                        leaf flap-trap-monitor {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "1 .. 360";
                            }
                          }
                          units "seconds";
                          description
                            "Configurable timer value 1-360";
                        }
                      }  // container avg-fdv-twoway-threshold
    
                      container frame-delay {
                        description
                          "Bin configuration for frame delay";
                        uses apply-advanced;
    
                        leaf num-bins {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "2 .. 5";
                            }
                          }
                          description
                            "Max number of bins";
                        }
    
                        container two-way {
                          presence
                            "enable two-way";
                          description
                            "Bin configuration for 2way frame delay";
                          uses apply-advanced;
    
                          leaf-list lower-threshold-bin {
                            type union {
                              type string {
                                pattern
                                  "<.*>|$.*";
                              }
                              type uint32 {
                                range
                                  "1 .. 4294967294";
                              }
                            }
                            description
                              "Lower threshold bin configuration in ascending order";
                          }
                        }  // container two-way
    
                        container forward {
                          presence
                            "enable forward";
                          description
                            "Bin configuration for forward frame delay";
                          uses apply-advanced;
    
                          leaf-list lower-threshold-bin {
                            type union {
                              type string {
                                pattern
                                  "<.*>|$.*";
                              }
                              type uint32 {
                                range
                                  "1 .. 4294967294";
                              }
                            }
                            description
                              "Lower threshold bin configuration in ascending order";
                          }
                        }  // container forward
    
                        container backward {
                          presence
                            "enable backward";
                          description
                            "Bin configuration for backward frame delay";
                          uses apply-advanced;
    
                          leaf-list lower-threshold-bin {
                            type union {
                              type string {
                                pattern
                                  "<.*>|$.*";
                              }
                              type uint32 {
                                range
                                  "1 .. 4294967294";
                              }
                            }
                            description
                              "Lower threshold bin configuration in ascending order";
                          }
                        }  // container backward
                      }  // container frame-delay
    
                      container frame-delay-range {
                        description
                          "Bin configuration for frame delay range";
                        uses apply-advanced;
    
                        leaf num-bins {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "2 .. 5";
                            }
                          }
                          description
                            "Max number of bins";
                        }
    
                        container two-way {
                          presence
                            "enable two-way";
                          description
                            "Bin configuration for 2way frame delay range";
                          uses apply-advanced;
    
                          leaf-list lower-threshold-bin {
                            type union {
                              type string {
                                pattern
                                  "<.*>|$.*";
                              }
                              type uint32 {
                                range
                                  "1 .. 4294967294";
                              }
                            }
                            description
                              "Lower threshold bin configuration in ascending order";
                          }
                        }  // container two-way
    
                        container forward {
                          presence
                            "enable forward";
                          description
                            "Bin configuration for forward frame delay range";
                          uses apply-advanced;
    
                          leaf-list lower-threshold-bin {
                            type union {
                              type string {
                                pattern
                                  "<.*>|$.*";
                              }
                              type uint32 {
                                range
                                  "1 .. 4294967294";
                              }
                            }
                            description
                              "Lower threshold bin configuration in ascending order";
                          }
                        }  // container forward
    
                        container backward {
                          presence
                            "enable backward";
                          description
                            "Bin configuration for backward frame delay range";
                          uses apply-advanced;
    
                          leaf-list lower-threshold-bin {
                            type union {
                              type string {
                                pattern
                                  "<.*>|$.*";
                              }
                              type uint32 {
                                range
                                  "1 .. 4294967294";
                              }
                            }
                            description
                              "Lower threshold bin configuration in ascending order";
                          }
                        }  // container backward
                      }  // container frame-delay-range
    
                      container ifdv {
                        description
                          "Bin configuration for IFDV";
                        uses apply-advanced;
    
                        leaf num-bins {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "2 .. 5";
                            }
                          }
                          description
                            "Max number of bins";
                        }
    
                        container two-way {
                          presence
                            "enable two-way";
                          description
                            "Bin configuration for 2way IFDV";
                          uses apply-advanced;
    
                          leaf-list lower-threshold-bin {
                            type union {
                              type string {
                                pattern
                                  "<.*>|$.*";
                              }
                              type uint32 {
                                range
                                  "1 .. 4294967294";
                              }
                            }
                            description
                              "Lower threshold bin configuration in ascending order";
                          }
                        }  // container two-way
    
                        container forward {
                          presence
                            "enable forward";
                          description
                            "Bin configuration for forward IFDV";
                          uses apply-advanced;
    
                          leaf-list lower-threshold-bin {
                            type union {
                              type string {
                                pattern
                                  "<.*>|$.*";
                              }
                              type uint32 {
                                range
                                  "1 .. 4294967294";
                              }
                            }
                            description
                              "Lower threshold bin configuration in ascending order";
                          }
                        }  // container forward
    
                        container backward {
                          presence
                            "enable backward";
                          description
                            "Bin configuration for backward IFDV";
                          uses apply-advanced;
    
                          leaf-list lower-threshold-bin {
                            type union {
                              type string {
                                pattern
                                  "<.*>|$.*";
                              }
                              type uint32 {
                                range
                                  "1 .. 4294967294";
                              }
                            }
                            description
                              "Lower threshold bin configuration in ascending order";
                          }
                        }  // container backward
                      }  // container ifdv
                    }  // list sla-iterator-profiles
    
                    list interface {
                      key "name";
                      ordered-by user;
                      description
                        "Name of interface for the performance monitoring";
                      leaf name {
                        type union {
                          type jt:interface-unit;
                          type string {
                            pattern "<.*>|$.*";
                          }
                        }
                        description
                          "Interface name";
                      }
    
                      leaf enable-multiclass-loss-measurement {
                        junos:must "((!(".. code-point-based-lm-accounting") && !(".. priority-based-lm-accounting")))";
                        junos:must-message "loss measurement modes are exclusive with each other";
                        type empty;
                        description
                          "Disable multiclass loss measurement in hardware";
                      }
    
                      leaf code-point-based-lm-accounting {
                        junos:must "((!(".. enable-multiclass-loss-measurement") && (!(".. colorless-loss-measurement") && !(".. priority-based-lm-accounting"))))";
                        junos:must-message "loss measurement modes are exclusive with each other";
                        type empty;
                        description
                          "Enable code point based loss measurement in hardware";
                      }
    
                      leaf priority-based-lm-accounting {
                        junos:must "((!(".. enable-multiclass-loss-measurement") && (!(".. colorless-loss-measurement") && !(".. code-point-based-lm-accounting"))))";
                        junos:must-message "loss measurement modes are exclusive with each other";
                        type empty;
                        description
                          "Enable priority based loss measurement in hardware";
                      }
                    }  // list interface
    
                    leaf enable-multiclass-loss-measurement {
                      junos:must "((!(".. code-point-based-lm-accounting") && !(".. priority-based-lm-accounting")))";
                      junos:must-message "loss measurement modes are exclusive with each other";
                      type empty;
                      description
                        "Disable multiclass loss measurement in hardware";
                    }
    
                    leaf code-point-based-lm-accounting {
                      junos:must "((!(".. enable-multiclass-loss-measurement") && (!(".. colorless-loss-measurement") && !(".. priority-based-lm-accounting"))))";
                      junos:must-message "loss measurement modes are exclusive with each other";
                      type empty;
                      description
                        "Enable code point based loss measurement in hardware";
                    }
    
                    leaf priority-based-lm-accounting {
                      junos:must "((!(".. enable-multiclass-loss-measurement") && (!(".. colorless-loss-measurement") && !(".. code-point-based-lm-accounting"))))";
                      junos:must-message "loss measurement modes are exclusive with each other";
                      type empty;
                      description
                        "Enable priority based loss measurement in hardware";
                    }
    
                    leaf colorless-loss-measurement {
                      junos:must "((!(".. code-point-based-lm-accounting") && !(".. priority-based-lm-accounting")))";
                      junos:must-message "loss measurement modes are exclusive with each other";
                      type empty;
                      description
                        "Enable colorless loss measurement in hardware";
                    }
                  }  // container performance-monitoring
    
                  leaf no-aggregate-delegate-processing {
                    type empty;
                    description
                      "Do not distribute aggregate session to pfe";
                  }
    
                  leaf enhanced-cfm-mode {
                    type empty;
                    description
                      "Enables Enhanced CFM Mode";
                  }
    
                  container traceoptions {
                    presence
                      "enable traceoptions";
                    description
                      "Trace options for connectivity fault management";
                    uses cfm-traceoptions;
                  }  // container traceoptions
    
                  list action-profile {
                    key "name";
                    ordered-by user;
                    description
                      "Action profiles to use when one or more remote maintenance association endpoints are down";
                    leaf name {
                      type string;
                      description
                        "Name of action profile";
                    }
    
                    uses apply-advanced;
    
                    container event {
                      junos:must "(".. action")";
                      junos:must-message "Cannot configure event without action";
                      description
                        "Events that need to be monitored";
                      uses apply-advanced;
    
                      leaf-list interface-status-tlv {
                        type enumeration {
                          enum "down" {
                            value 0;
                            description
                              "Interface is administratively down";
                          }
                          enum
                            "lower-layer-down" {
                            value 1;
                            description
                              "Interface is physically down";
                          }
                        }
                        ordered-by user;
                        description
                          "Values that need to be monitored in interface status TLV";
                      }
    
                      leaf-list port-status-tlv {
                        type enumeration {
                          enum "blocked" {
                            value 0;
                            description
                              "Port is blocked";
                          }
                        }
                        ordered-by user;
                        description
                          "Values that need to be monitored in port status TLV";
                      }
    
                      leaf adjacency-loss {
                        type empty;
                        description
                          "Connectivity is lost";
                      }
    
                      leaf rdi {
                        type empty;
                        description
                          "RDI received from some MEP";
                      }
    
                      leaf connection-protection-tlv {
                        type enumeration {
                          enum
                            "using-working-path" {
                            value 0;
                            description
                              "Service traffic is using working path";
                          }
                          enum
                            "using-protection-path" {
                            value 1;
                            description
                              "Service traffic is using protection path";
                          }
                        }
                        description
                          "Values that need to be monitored in connection protection TLV";
                      }
                    }  // container event
    
                    container action {
                      junos:must "(".. event")";
                      junos:must-message "Cannot configure action without event";
                      uses apply-advanced;
    
                      leaf interface-down {
                        type empty;
                        description
                          "Mark the interface as down";
                      }
    
                      leaf revertive-interface-down {
                        junos:must "(!(".. non-revertive-interface-down"))";
                        junos:must-message "Cannot configure action along with revertive-interface-down";
                        type empty;
                        description
                          "Wait for CC loss-threshold to bring back the interface up";
                      }
    
                      leaf non-revertive-interface-down {
                        junos:must "(!(".. revertive-interface-down"))";
                        junos:must-message "Cannot configure action along with non-revertive-interface-down";
                        type empty;
                        description
                          "Interface will not be brought up when CC is received";
                      }
    
                      leaf propagate-remote-mac-flush {
                        type empty;
                        description
                          "Remote mac-flush";
                      }
    
                      leaf interface-group-down {
                        junos:must "((!(".. .. event interface-status-tlv") && (!(".. .. event port-status-tlv") && (!(".. .. event connection-protection-tlv") && (!(".. .. event server-mep-defects") && !(".. .. event ais-trigger-condition"))))))";
                        junos:must-message "Cannot configure events other that adjacency-loss or rdi with this action";
                        junos:must "((!(".. interface-down") && (!(".. revertive-interface-down") && !(".. non-revertive-interface-down"))))";
                        junos:must-message "Cannot configure action along with other interface down actions";
                        type empty;
                        description
                          "Mark the interface group as down";
                      }
    
                      leaf asynchronous-notification {
                        junos:must "((!(".. .. event port-status-tlv") && (!(".. .. event rdi") && (!(".. .. event connection-protection-tlv") && (!(".. .. event server-mep-defects") && !(".. .. event ais-trigger-condition"))))))";
                        junos:must-message "Cannot configure events other that adjacency-loss or interface-status-tlv with this action";
                        junos:must "((!(".. interface-down") && (!(".. revertive-interface-down") && (!(".. non-revertive-interface-down") && !(".. interface-group-down")))))";
                        junos:must-message "Cannot configure action along with other interface down actions";
                        type empty;
                        description
                          "Generate asynchronous notification (Laser-off for optical phys)";
                      }
    
                      container log-and-generate-ais {
                        uses apply-advanced;
    
                        leaf-list level {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "1 .. 7";
                            }
                          }
                          description
                            "Server maintenance domain levels range";
                        }
    
                        leaf interval {
                          type enumeration {
                            enum "1s" {
                              value 0;
                            }
                            enum "1m" {
                              value 1;
                            }
                          }
                          default "1s";
                          description
                            "Interval between AIS messages";
                        }
    
                        leaf priority {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "0 .. 7";
                            }
                          }
                          default "0";
                          description
                            "802.1p priority of AIS packet";
                        }
                      }  // container log-and-generate-ais
                    }  // container action
    
                    container clear-action {
                      junos:must "(".. event")";
                      junos:must-message "Cannot configure action without event";
                      uses apply-advanced;
    
                      container interface-down {
                        description
                          "Mark the interface as down";
                        leaf peer-interface {
                          type empty;
                          description
                            "Mark the interface as down";
                        }
                      }  // container interface-down
    
                      leaf propagate-remote-mac-flush {
                        type empty;
                        description
                          "Remote  mac flush";
                      }
                    }  // container clear-action
    
                    container default-actions {
                      junos:must "(!(".. event"))";
                      junos:must-message "Cannot configure default-actions if event is set";
                      description
                        "Action that needs to be taken";
                      uses apply-advanced;
    
                      leaf interface-down {
                        type empty;
                        description
                          "Bring the interface down";
                      }
                    }  // container default-actions
                  }  // list action-profile
    
                  container policer {
                    description
                      "Rate limit Ethernet OAM packets for all sessions";
                    uses apply-advanced;
    
                    leaf continuity-check {
                      junos:must "("firewall policer $$")";
                      junos:must-message "referenced policer must be defined";
                      type string;
                      description
                        "Policer to rate limit Continuity Check Ethernet OAM messages";
                    }
    
                    leaf other {
                      junos:must "("firewall policer $$")";
                      junos:must-message "referenced policer must be defined";
                      type string;
                      description
                        "Policer to rate limit non Continuity Check Ethernet OAM messages";
                    }
    
                    leaf all {
                      junos:must "("firewall policer $$")";
                      junos:must-message "referenced policer must be defined";
                      type string;
                      description
                        "Policer to rate limit all Ethernet OAM messages";
                    }
                  }  // container policer
    
                  container linktrace {
                    presence "enable linktrace";
                    description
                      "Linktrace protocol global options";
                    uses apply-advanced;
    
                    leaf path-database-size {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 255";
                        }
                      }
                      default "100";
                      description
                        "Number of linktrace reply entries to be stored per linktrace request";
                    }
    
                    leaf age {
                      type enumeration {
                        enum "10s" {
                          value 0;
                        }
                        enum "30s" {
                          value 1;
                        }
                        enum "1m" {
                          value 2;
                        }
                        enum "10m" {
                          value 3;
                        }
                        enum "30m" {
                          value 4;
                        }
                      }
                      default "10m";
                      description
                        "Time after which a stale request-response entry is deleted";
                    }
                  }  // container linktrace
    
                  list maintenance-domain {
                    key "name";
                    ordered-by user;
                    description
                      "Maintenance domain configuration";
                    leaf name {
                      type string;
                    }
    
                    uses apply-advanced;
    
                    list bridge-domain {
                      key "name";
                      ordered-by user;
                      description
                        "Bridge-domain information for the default maintenance domain";
                      leaf name {
                        type string;
                        description
                          "Bridge domain name";
                      }
    
                      leaf-list vlan-id {
                        type string;
                        ordered-by user;
                        description "VLAN id";
                      }
                    }  // list bridge-domain
    
                    list virtual-switch {
                      key "name";
                      ordered-by user;
                      description
                        "Virtual switch Bridge-domain information for the default maintenance domain";
                      leaf name {
                        type string;
                        description
                          "Routing instance of type virtual switch";
                      }
    
                      uses apply-advanced;
    
                      list bridge-domain {
                        key "name";
                        ordered-by user;
                        leaf name {
                          type string;
                          description
                            "Bridge domain name";
                        }
    
                        leaf-list vlan-id {
                          type string;
                          ordered-by user;
                          description "VLAN id";
                        }
                      }  // list bridge-domain
                    }  // list virtual-switch
    
                    list instance {
                      key "name";
                      ordered-by user;
                      description
                        "VPLS instance name for the default maintenance domain";
                      leaf name {
                        junos:must "(!("routing-instances $$ vlan-id inner-all"))";
                        junos:must-message "MIPs are not allowed for VPLS with vlan-id inner-all";
                        junos:must "(!("routing-instances $$ vlan-id all"))";
                        junos:must-message "MIPs are not allowed for VPLS with vlan-id all";
                        junos:must "(("routing-instances $$ vlan-id" || "routing-instances $$ vlan-tags"))";
                        junos:must-message "MIPs are allowed only for VPLS with vlan-id/vlan-tags";
                        junos:must "("routing-instances $$ instance-type vpls")";
                        junos:must-message "Only VPLS routing-instances are allowed under default maintenance-domains";
                        type string;
                        description
                          "VPLS routing instance name";
                      }
                    }  // list instance
    
                    list interface {
                      key "name";
                      ordered-by user;
                      description
                        "Name of interface for the default maintenance domain";
                      leaf name {
                        junos:must "(!("protocols loop-detect enhanced interface $$"))";
                        junos:must-message "Connectivtiy and loop-detect protocols cannot be enabled on same interface";
                        junos:must "(!("protocols oam ethernet link-fault-management interface $$"))";
                        junos:must-message "Connectivtiy and link fault management protocols cannot be enabled on same interface";
                        junos:must "((!(any "interfaces $$ unit <*> vlan-id 0") && !(any "logical-systems <*> interfaces $$ unit <*> vlan-id 0")))";
                        junos:must-message "Default maintenance domain cannot be configured with a physical interface which has a logical interface configured with vlan-id 0";
                        type union {
                          type jt:interface-unit;
                          type string {
                            pattern "<.*>|$.*";
                          }
                        }
                        description
                          "Interface name";
                      }
                    }  // list interface
    
                    leaf level {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint8 {
                          range "0 .. 7";
                        }
                      }
                      description
                        "Level value for maintenance domain";
                    }
    
                    leaf name-format {
                      type enumeration {
                        enum "none" {
                          value 0;
                          description
                            "No format specified";
                        }
                        enum "dns" {
                          value 1;
                          description
                            "Character string similar to Domain Name System name";
                        }
                        enum "mac+2oct" {
                          value 2;
                          description
                            "MAC address with 2 octet integer (xx:xx:xx:xx:xx:xx.Y format)";
                        }
                        enum "character-string" {
                          value 3;
                          description
                            "Character string";
                        }
                      }
                      description
                        "Format of maintenance domain name";
                    }
    
                    leaf mip-half-function {
                      type enumeration {
                        enum "none" {
                          value 0;
                          description
                            "No MHFs should be created";
                        }
                        enum "default" {
                          value 1;
                          description
                            "Create MHF as per IEEE 802.1ag specifications for defMHFDefault";
                        }
                        enum "explicit" {
                          value 2;
                          description
                            "Create MHF as per IEEE 802.1ag specifications for defMHFExplicit";
                        }
                      }
                      default "none";
                      description
                        "Half function to be implemented by MIP";
                    }
    
                    list maintenance-association {
                      key "name";
                      ordered-by user;
                      description
                        "Maintenance association configuration";
                      leaf name {
                        type string {
                          length "1 .. 45";
                        }
                        description
                          "Name of maintenance association in IEEE compliant format";
                      }
    
                      uses apply-advanced;
    
                      leaf debug-session {
                        type empty;
                        description
                          "Debug the CFM session";
                      }
    
                      leaf short-name-format {
                        type enumeration {
                          enum "2octet" {
                            value 0;
                            description
                              "An integer in the range 0..65535";
                          }
                          enum "rfc-2685-vpn-id" {
                            value 1;
                            description
                              "VPN identifier that complies with RFC 2685";
                          }
                          enum "vlan" {
                            value 2;
                            description
                              "Primary VLAN identifier";
                          }
                          enum
                            "character-string" {
                            value 3;
                            description
                              "Character string";
                          }
                          enum "icc" {
                            value 4;
                            description
                              "ITU Carrier Code";
                          }
                        }
                        description
                          "Format of Maintenance Association Name";
                      }
    
                      leaf primary-vid {
                        type string;
                        description "VLAN id";
                      }
    
                      container continuity-check {
                        presence
                          "enable continuity-check";
                        description
                          "Continuity check configuration";
                        uses apply-advanced;
    
                        leaf interval {
                          type enumeration {
                            enum "10ms" {
                              junos:must "(!("routing-options ppm no-delegate-processing"))";
                              junos:must-message "10ms interval for continuity-check is not supported with no-delegate-processing";
                              value 0;
                            }
                            enum "100ms" {
                              value 1;
                            }
                            enum "1s" {
                              value 2;
                            }
                            enum "10s" {
                              value 3;
                            }
                            enum "1m" {
                              value 4;
                            }
                            enum "10m" {
                              value 5;
                            }
                            enum "3.3ms" {
                              value 6;
                            }
                          }
                          default "1m";
                          description
                            "Interval between continuity-check messages";
                        }
    
                        leaf loss-threshold {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "3 .. 256";
                            }
                          }
                          default "3";
                          description
                            "Number of continuity-check messages lost before marking endpoint as down";
                        }
    
                        leaf hold-interval {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "1 .. 30240";
                            }
                          }
                          units "minutes";
                          default "10";
                          description
                            "Time before flushing MEP database if no updates occur";
                        }
    
                        leaf port-status-tlv {
                          type empty;
                          description
                            "Include port status TLV in CCM";
                        }
    
                        leaf interface-status-tlv {
                          type empty;
                          description
                            "Include interface status TLV in CCM";
                        }
    
                        leaf connection-protection-tlv {
                          type empty;
                          description
                            "Include connection protection OUI TLV in CCM";
                        }
    
                        leaf convey-loss-threshold {
                          type empty;
                          description
                            "Include Loss Threshold OUI TLV in CCM";
                        }
    
                        leaf interface-status-send-rdi {
                          type empty;
                          description
                            "Send RDI on interface operation status down in CCM";
                        }
    
                        container sendid-tlv {
                          description
                            "Include sendid-tlv in CCM/LBM/LTM";
                          uses apply-advanced;
    
                          leaf send-chassis-tlv {
                            type empty;
                            description
                              "Attach Chassis ID & Mgmt Addr to CCM/LBM/LTM";
                          }
                        }  // container sendid-tlv
                      }  // container continuity-check
    
                      leaf mip-half-function {
                        type enumeration {
                          enum "none" {
                            value 0;
                            description
                              "No MHFs should be created";
                          }
                          enum "default" {
                            value 1;
                            description
                              "Create MHF as per IEEE 802.1ag specifications for defMHFDefault";
                          }
                          enum "explicit" {
                            value 2;
                            description
                              "Create MHF as per IEEE 802.1ag specifications for defMHFExplicit";
                          }
                          enum "defer" {
                            value 3;
                            description
                              "Create MHF as per IEEE 802.1ag specifications for defMHFDefer";
                          }
                        }
                        default "defer";
                        description
                          "Half function to be implemented by MIP";
                      }
    
                      list mep {
                        key "name";
                        ordered-by user;
                        description
                          "Maintenance association endpoint configuration";
                        leaf name {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint16 {
                              range "1 .. 8191";
                            }
                          }
                          description
                            "Identifier for maintenance association endpoint";
                        }
    
                        uses apply-advanced;
    
                        container interface {
                          presence
                            "enable interface";
                          description
                            "Name of interface";
                          leaf interface-name {
                            junos:must "(!("protocols oam ethernet link-fault-management interface $$"))";
                            junos:must-message "Connectivtiy and link fault management protocols cannot be enabled on same interface";
                            junos:must "((!(any "interfaces $$ unit <*> vlan-id 0") && !(any "logical-systems <*> interfaces $$ unit <*> vlan-id 0")))";
                            junos:must-message "Cannot create a MEP on a physical interface which has a logical interface configured with vlan-id 0";
                            junos:must "(!(any "interfaces $$ unit 0 family inet address <*>"))";
                            junos:must-message "CFM interface cannot be configured with an INET address";
                            type union {
                              type jt:interface-unit;
                              type string {
                                pattern
                                  "<.*>|$.*";
                              }
                            }
                          }
    
                          leaf vlan {
                            type union {
                              type string {
                                pattern
                                  "<.*>|$.*";
                              }
                              type uint32 {
                                range
                                  "1 .. 4094";
                              }
                            }
                            description
                              "Trunk port interface VLAN identifier";
                          }
    
                          choice connection-type {
                            leaf working {
                              type empty;
                              description
                                "Monitory the primary path";
                            }
                            leaf protect {
                              type empty;
                              description
                                "Monitory the protect path";
                            }
                          }  // choice connection-type
                        }  // container interface
    
                        leaf direction {
                          type enumeration {
                            enum "up" {
                              value 0;
                            }
                            enum "down" {
                              junos:must "(!(".. .. mip-half-function"))";
                              junos:must-message "Cannot specify MA MHF with down MEP";
                              junos:must "(!(".. .. .. mip-half-function"))";
                              junos:must-message "Cannot specify MD MHF with down MEP";
                              value 1;
                            }
                          }
                          default "down";
                          description
                            "Direction of maintenance endpoint";
                        }
    
                        leaf priority {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "0 .. 7";
                            }
                          }
                          default "0";
                          description
                            "802.1p priority of continuity-check and link-trace packet";
                        }
    
                        leaf auto-discovery {
                          type empty;
                          description
                            "Accept continuity-check messages from all remote MEPs";
                        }
    
                        leaf action-profile {
                          junos:must "(!("protocols oam ethernet connectivity-fault-management action-profile $$ action asynchronous-notification"))";
                          junos:must-message "Action asynchronous-notificaiton can not be configured at mep level";
                          junos:must "("protocols oam ethernet connectivity-fault-management action-profile $$")";
                          junos:must-message "Action profile not configured";
                          type string;
                          description
                            "Name of the action profile";
                        }
    
                        list remote-mep {
                          key "name";
                          ordered-by user;
                          description
                            "Remote maintenance association endpoint configuration";
                          leaf name {
                            type union {
                              type string {
                                pattern
                                  "<.*>|$.*";
                              }
                              type uint16 {
                                range
                                  "1 .. 8191";
                              }
                            }
                            description
                              "Identifier for remote maintenance association endpoint";
                          }
    
                          uses apply-advanced;
    
                          leaf action-profile {
                            junos:must "("protocols oam ethernet connectivity-fault-management action-profile $$")";
                            junos:must-message "Action profile not configured";
                            type string;
                            description
                              "Name of the action profile";
                          }
    
                          container interface-group {
                            presence
                              "enable interface-group";
                            description
                              "Mark this interface group down Profile configured with action interface-group-down";
                            uses apply-advanced;
    
                            leaf interface-device-name {
                              type union {
                                type jt:interface-device;
                                type string {
                                  pattern
                                    "<.*>|$.*";
                                }
                              }
                              description
                                "Interface device name";
                            }
    
                            leaf-list unit-list {
                              type jt:range;
                              description
                                "One or more logical interface unit numbers";
                            }
                          }  // container interface-group
    
                          list sla-iterator-profile {
                            key "name";
                            ordered-by user;
                            description
                              "Name of the iterator profile";
                            leaf name {
                              junos:must "((!(".. .. .. no-delegate-processing") || ("protocols oam ethernet connectivity-fault-management performance-monitoring sla-iterator-profiles ${sla-iterator-profile} measurement-type loss" || "protocols oam ethernet connectivity-fault-management performance-monitoring sla-iterator-profiles ${sla-iterator-profile} measurement-type slm")))";
                              junos:must-message "Iterator two-way-delay or statistical-frame-loss measurement is not supported with mep level no-delegate-processing";
                              junos:must "("protocols oam ethernet connectivity-fault-management performance-monitoring sla-iterator-profiles $$")";
                              junos:must-message "The SLA iterator profile must be configured";
                              type string;
                            }
    
                            uses apply-advanced;
    
                            leaf iteration-count {
                              junos:must "(!("protocols oam ethernet connectivity-fault-management performance-monitoring measurement-interval"))";
                              junos:must-message "Iteration-count not supported with measurement-interval";
                              type union {
                                type string {
                                  pattern
                                    "<.*>|$.*";
                                }
                                type uint32 {
                                  range
                                    "1 .. 65535";
                                }
                              }
                              units "frames";
                              description
                                "Iterations to partake for acquiring SLA measurements";
                            }
    
                            leaf priority {
                              type union {
                                type string {
                                  pattern
                                    "<.*>|$.*";
                                }
                                type uint32 {
                                  range "0 .. 7";
                                }
                              }
                              description
                                "The vlan pcp value to be sent in the Y.1731 frame";
                            }
    
                            leaf data-tlv-size {
                              junos:must "(("protocols oam ethernet connectivity-fault-management performance-monitoring sla-iterator-profiles ${sla-iterator-profile} measurement-type two-way-delay" || ("protocols oam ethernet connectivity-fault-management performance-monitoring sla-iterator-profiles ${sla-iterator-profile} measurement-type statistical-frame-loss" || "protocols oam ethernet connectivity-fault-management performance-monitoring sla-iterator-profiles ${sla-iterator-profile} measurement-type slm")))";
                              junos:must-message "The measurement type must be two-way-delay or statistical-frame-loss or slm";
                              type union {
                                type string {
                                  pattern
                                    "<.*>|$.*";
                                }
                                type uint32 {
                                  range
                                    "1 .. 1400";
                                }
                              }
                              units "bytes";
                              description
                                "Size of the data-tlv portion of Y.1731 frame";
                            }
                          }  // list sla-iterator-profile
    
                          leaf detect-loc {
                            type empty;
                            description
                              "Detects initial loss of connectivity with remote mep";
                          }
                        }  // list remote-mep
    
                        leaf lowest-priority-defect {
                          type enumeration {
                            enum "all-defects" {
                              value 0;
                              description
                                "Allows all defects";
                            }
                            enum
                              "mac-rem-err-xcon" {
                              value 1;
                              description
                                "Allows only MAC, not receiving CCM, erroneous CCM and cross connect defects";
                            }
                            enum "rem-err-xcon" {
                              value 2;
                              description
                                "Allows only not receiving CCM, erroneous CCM and cross connect CCM defects";
                            }
                            enum "err-xcon" {
                              value 3;
                              description
                                "Allows only erroneous CCM and cross connect CCM defects";
                            }
                            enum "xcon" {
                              value 4;
                              description
                                "Allows only cross connect CCM defect";
                            }
                            enum "no-defect" {
                              value 5;
                              description
                                "Allows no defect";
                            }
                          }
                          description
                            "Lowest priority defect that is allowed to generate a fault alarm";
                        }
                      }  // list mep
    
                      container policer {
                        description
                          "Rate limit Ethernet OAM packets for this session";
                        uses apply-advanced;
    
                        leaf continuity-check {
                          junos:must "("firewall policer $$")";
                          junos:must-message "referenced policer must be defined";
                          type string;
                          description
                            "Policer to rate limit Continuity Check Ethernet OAM messages";
                        }
    
                        leaf other {
                          junos:must "("firewall policer $$")";
                          junos:must-message "referenced policer must be defined";
                          type string;
                          description
                            "Policer to rate limit non Continuity Check Ethernet OAM messages";
                        }
    
                        leaf all {
                          junos:must "("firewall policer $$")";
                          junos:must-message "referenced policer must be defined";
                          type string;
                          description
                            "Policer to rate limit all Ethernet OAM messages";
                        }
                      }  // container policer
                    }  // list maintenance-association
                  }  // list maintenance-domain
    
                  container sendid-tlv {
                    description
                      "Include sendid-tlv in CCM/LBM/LTM";
                    uses apply-advanced;
    
                    leaf send-chassis-tlv {
                      type empty;
                      description
                        "Attach Chassis ID & Mgmt Addr to CCM/LBM/LTM";
                    }
                  }  // container sendid-tlv
                }  // container connectivity-fault-management
    
                list evcs {
                  key "name";
                  description
                    "Ethernet virtual circuits configuration";
                  leaf name {
                    type string {
                      junos:posix-pattern "!^((__.*__)|(.{100,})|(.*[+].*))$";
                      junos:pattern-message "Must be a non-reserved string of 100 characters or less";
                      length "1 .. 100";
                    }
                    description "EVC id";
                  }
    
                  uses apply-advanced;
    
                  container evc-protocol {
                    description
                      "Signaling protocol to monitor EVC status";
                    choice protocol {
                      container cfm {
                        presence "enable cfm";
                        description
                          "Connectivity fault management";
                        leaf maintenance-domain {
                          junos:must "("protocols oam ethernet connectivity-fault-management maintenance-domain $$")";
                          junos:must-message "referenced maintenance-domain must be defined";
                          type string;
                          description
                            "Maintenance domain name";
                        }
    
                        leaf maintenance-association {
                          junos:must "(any "protocols oam ethernet connectivity-fault-management maintenance-domain <*> maintenance-association $$")";
                          junos:must-message "referenced maintenance-association must be defined";
                          type string;
                          description
                            "Maintenance association name";
                        }
    
                        leaf mep {
                          junos:must "(any "protocols oam ethernet connectivity-fault-management maintenance-domain <*> maintenance-association <*> mep $$")";
                          junos:must-message "referenced maintenance association endpoint must be defined";
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint16 {
                              range "1 .. 8191";
                            }
                          }
                          description
                            "Identifier for maintenance association endpoint";
                        }
                      }  // container cfm
                      container vpls {
                        presence "enable vpls";
                        description
                          "Virtual private LAN service (BGP/LDP)";
                        leaf routing-instance {
                          junos:must "(("routing-instances $$ instance-type vpls" || ("routing-instances $$ instance-type virtual-switch" && "routing-instances $$ protocols vpls")))";
                          junos:must-message "referenced routing-instnace must be of instance-type vpls or instance-type virtual-swicth with protocols vpls configured";
                          junos:must "(("routing-instances $$" || any "tenants <*> routing-instances $$"))";
                          junos:must-message "referenced routing-instance must be defined";
                          type string;
                          description
                            "Routing instance name";
                        }
                      }  // container vpls
    
                      case case_3 {
                      }  // case case_3
    
                      case case_4 {
                      }  // case case_4
                    }  // choice protocol
                  }  // container evc-protocol
    
                  leaf remote-uni-count {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint8 {
                        range "1 .. 255";
                      }
                    }
                    default "1";
                    description
                      "Number of remote UNIs in the EVC";
                  }
    
                  leaf multipoint-to-multipoint {
                    type empty;
                    description
                      "Multipoint to Multipoint EVC";
                  }
                }  // list evcs
    
                container lmi {
                  presence "enable lmi";
                  description
                    "Ethernet local management interface configuration";
                  uses apply-advanced;
    
                  container traceoptions {
                    description
                      "Trace options for ethernet local management interface";
                    uses apply-advanced;
    
                    leaf no-remote-trace {
                      junos:must "("system tracing")";
                      junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
                      type empty;
                      description
                        "Disable remote tracing";
                    }
    
                    container file {
                      description
                        "Trace file information";
                      leaf filename {
                        type string {
                          junos:posix-pattern "![/ %]";
                          junos:pattern-message "Must not contain '/', % or a space";
                          length "1 .. 1024";
                        }
                        description
                          "Name of file in which to write trace information";
                      }
    
                      leaf size {
                        type string;
                        description
                          "Maximum trace file size";
                      }
    
                      leaf files {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "2 .. 1000";
                          }
                        }
                        default "3";
                        description
                          "Maximum number of trace files";
                      }
    
                      choice world-readable-choice {
                        leaf world-readable {
                          type empty;
                          description
                            "Allow any user to read the log file";
                        }
                        leaf no-world-readable {
                          type empty;
                          description
                            "Don't allow any user to read the log file";
                        }
                      }  // choice world-readable-choice
    
                      leaf match {
                        type jt:regular-expression;
                        description
                          "Regular expression for lines to be logged";
                      }
                    }  // container file
    
                    list flag {
                      key "name";
                      ordered-by user;
                      description
                        "Tracing parameters";
                      leaf name {
                        type enumeration {
                          enum "configuration" {
                            value 0;
                            description
                              "Trace configuration events";
                          }
                          enum "routing-socket" {
                            value 1;
                            description
                              "Trace routing socket events";
                          }
                          enum "protocol" {
                            value 2;
                            description
                              "Trace protocol processing events";
                          }
                          enum "init" {
                            value 3;
                            description
                              "Trace events related to protocol daemon start-up";
                          }
                          enum "error" {
                            value 4;
                            description
                              "Trace events related to catestrophic errors in daemon";
                          }
                          enum "packet" {
                            value 5;
                            description
                              "Trace events related to packet flow";
                          }
                          enum "all" {
                            value 6;
                            description
                              "Trace everything";
                          }
                        }
                      }
                    }  // list flag
                  }  // container traceoptions
    
                  leaf status-counter {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint8 {
                        range "2 .. 10";
                      }
                    }
                    default "4";
                    description
                      "E-LMI status counter (N393)";
                  }
    
                  leaf polling-verification-timer {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint8 {
                        range "5 .. 30";
                      }
                    }
                    units "seconds";
                    default "15";
                    description
                      "Polling verification timer (T392)";
                  }
    
                  list interface {
                    key "name";
                    description
                      "Interface options";
                    leaf name {
                      type union {
                        type jt:interface-device;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                    }
    
                    uses apply-advanced;
    
                    leaf uni-id {
                      type string {
                        length "1 .. 64";
                      }
                      description
                        "UNI identifier";
                    }
    
                    leaf status-counter {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint8 {
                          range "2 .. 10";
                        }
                      }
                      default "4";
                      description
                        "E-LMI status counter (N393)";
                    }
    
                    leaf polling-verification-timer {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint8 {
                          range "5 .. 30";
                        }
                      }
                      units "seconds";
                      default "15";
                      description
                        "Polling verification timer (T392)";
                    }
    
                    leaf evc-map-type {
                      type enumeration {
                        enum
                          "all-to-one-bundling" {
                          value 0;
                          description
                            "All to one bundling";
                        }
                        enum
                          "service-multiplexing" {
                          value 1;
                          description
                            "Service multiplexing with no bundling";
                        }
                        enum "bundling" {
                          value 2;
                          description
                            "Bundling with service multiplexing";
                        }
                      }
                      default "bundling";
                      description
                        "CE-VLAN ID/EVC map type";
                    }
    
                    list evc {
                      key "name";
                      description
                        "EVC configuration";
                      leaf name {
                        junos:must "("protocols oam ethernet evcs $$")";
                        junos:must-message "referenced evc must be defined";
                        type string {
                          length "1 .. 100";
                        }
                        description
                          "EVC identifier";
                      }
    
                      uses apply-advanced;
    
                      leaf default-evc {
                        type empty;
                        description
                          "Default EVC";
                      }
    
                      leaf-list vlan-list {
                        type jt:vlan-range;
                        description
                          "Vlans mapped to this EVC";
                      }
                    }  // list evc
                  }  // list interface
                }  // container lmi
    
                container fnp {
                  presence "enable fnp";
                  description
                    "Failure notification protocol configuration";
                  uses apply-advanced;
    
                  container traceoptions {
                    description
                      "Tracing options for FNP";
                    uses apply-advanced;
    
                    container file {
                      description
                        "Trace file options";
                      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 replace {
                        type empty;
                        status deprecated;
                        description
                          "Replace trace file rather than appending to it";
                      }
    
                      leaf size {
                        type string;
                        description
                          "Maximum trace file size";
                      }
    
                      leaf files {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "2 .. 1000";
                          }
                        }
                        default "10";
                        description
                          "Maximum number of trace files";
                      }
    
                      leaf no-stamp {
                        type empty;
                        status deprecated;
                        description
                          "Do not timestamp trace file";
                      }
    
                      choice world-readable-choice {
                        leaf world-readable {
                          type empty;
                          description
                            "Allow any user to read the log file";
                        }
                        leaf no-world-readable {
                          type empty;
                          description
                            "Don't allow any user to read the log file";
                        }
                      }  // choice world-readable-choice
                    }  // container file
    
                    list flag {
                      key "name";
                      ordered-by user;
                      description
                        "Tracing parameters";
                      leaf name {
                        type enumeration {
                          enum "events" {
                            value 0;
                            description
                              "Trace protocol events";
                          }
                          enum "pdu" {
                            value 1;
                            description
                              "Trace PDU reception and transmission";
                          }
                          enum "timers" {
                            value 2;
                            description
                              "Trace protocol timers";
                          }
                          enum "error" {
                            value 3;
                            description
                              "Trace all failure conditions";
                          }
                          enum "all" {
                            value 4;
                            description
                              "Trace all";
                          }
                        }
                      }
                    }  // list flag
                  }  // container traceoptions
    
                  leaf interval {
                    type enumeration {
                      enum "100ms" {
                        value 0;
                      }
                      enum "1s" {
                        value 1;
                      }
                      enum "10s" {
                        value 2;
                      }
                      enum "1m" {
                        value 3;
                      }
                      enum "10m" {
                        value 4;
                      }
                    }
                    default "1s";
                    description
                      "Interval between FNP messages";
                  }
    
                  leaf loss-threshold {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint8 {
                        range "3 .. 255";
                      }
                    }
                    default "4";
                    description
                      "Number of FNP messages lost before clearing FNP state";
                  }
    
                  list interface {
                    key "name";
                    ordered-by user;
                    description
                      "Interface configuration";
                    leaf name {
                      junos:must "("interfaces $$ encapsulation vlan-vpls")";
                      junos:must-message "FNP is allowed on interfaces with vlan-vpls encapsulation only.";
                      type union {
                        type jt:interface-name;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                    }
    
                    uses apply-advanced;
    
                    leaf domain-id {
                      type union {
                        type uint32;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      default "0";
                      description
                        "Ethernet domain identifier";
                    }
                  }  // list interface
                }  // container fnp
              }  // container ethernet
            }  // container oam
    
            container mld {
              presence "enable mld";
              description "MLD options";
              uses apply-advanced;
    
              container traceoptions {
                description
                  "Trace options for MLD";
                uses apply-advanced;
    
                container file {
                  description
                    "Trace file options";
                  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 replace {
                    type empty;
                    status deprecated;
                    description
                      "Replace trace file rather than appending to it";
                  }
    
                  leaf size {
                    type string;
                    description
                      "Maximum trace file size";
                  }
    
                  leaf files {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "2 .. 1000";
                      }
                    }
                    default "10";
                    description
                      "Maximum number of trace files";
                  }
    
                  leaf no-stamp {
                    type empty;
                    status deprecated;
                    description
                      "Do not timestamp trace file";
                  }
    
                  choice world-readable-choice {
                    leaf world-readable {
                      type empty;
                      description
                        "Allow any user to read the log file";
                    }
                    leaf no-world-readable {
                      type empty;
                      description
                        "Don't allow any user to read the log file";
                    }
                  }  // choice world-readable-choice
                }  // container file
    
                list flag {
                  key "name";
                  ordered-by user;
                  description
                    "Tracing parameters";
                  leaf name {
                    type enumeration {
                      enum "packets" {
                        value 0;
                        description
                          "Trace all MLD packets";
                      }
                      enum "query" {
                        value 1;
                        description
                          "Trace MLD membership query messages";
                      }
                      enum "report" {
                        value 2;
                        description
                          "Trace membership report messages";
                      }
                      enum "leave" {
                        value 3;
                        description
                          "Trace leave group messages (MLDv2 only)";
                      }
                      enum "mtrace" {
                        value 4;
                        description
                          "Trace mtrace packets";
                      }
                      enum "group" {
                        value 5;
                        description
                          "Trace group operations";
                      }
                      enum "client-notification" {
                        value 6;
                        description
                          "Trace notifications";
                      }
                      enum "host-notification" {
                        value 7;
                        description
                          "Trace host notifications";
                      }
                      enum "route" {
                        value 8;
                        description
                          "Trace routing information";
                      }
                      enum "normal" {
                        value 9;
                        description
                          "Trace normal events";
                      }
                      enum "general" {
                        value 10;
                        description
                          "Trace general events";
                      }
                      enum "state" {
                        value 11;
                        description
                          "Trace state transitions";
                      }
                      enum "policy" {
                        value 12;
                        description
                          "Trace policy processing";
                      }
                      enum "task" {
                        value 13;
                        description
                          "Trace routing protocol task processing";
                      }
                      enum "timer" {
                        value 14;
                        description
                          "Trace routing protocol timer processing";
                      }
                      enum "all" {
                        value 15;
                        description
                          "Trace everything";
                      }
                    }
                  }
    
                  leaf send {
                    type empty;
                    description
                      "Trace transmitted packets";
                  }
    
                  leaf receive {
                    type empty;
                    description
                      "Trace received packets";
                  }
    
                  leaf detail {
                    type empty;
                    description
                      "Trace detailed information";
                  }
    
                  leaf disable {
                    type empty;
                    description
                      "Disable this trace flag";
                  }
                }  // list flag
              }  // container traceoptions
    
              leaf query-interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 1024";
                  }
                }
                units "seconds";
                description
                  "When to send host query messages";
              }
    
              leaf query-response-interval {
                type string {
                  junos:posix-pattern "^[0-9]{1,4}(.[0-9])?$";
                  junos:pattern-message "Up to 1 digit to right of decimal point";
                }
                units "seconds";
                description
                  "How long to wait for a host query response";
              }
    
              leaf query-last-member-interval {
                type string {
                  junos:posix-pattern "^[0-9]{1,4}(.[0-9])?$";
                  junos:pattern-message "Up to 1 digit to right of decimal point";
                }
                units "seconds";
                description
                  "When to send group query messages";
              }
    
              leaf robust-count {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "2 .. 10";
                  }
                }
                description
                  "Expected packet loss on a subnet";
              }
    
              leaf maximum-transmit-rate {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 10000";
                  }
                }
                description
                  "Maximum transmission rate (packets per second)";
              }
    
              leaf accounting {
                type empty;
                description
                  "Enable join and leave event notification";
              }
    
              list interface {
                key "name";
                ordered-by user;
                description
                  "Interface options for MLD";
                leaf name {
                  type string;
                }
    
                uses apply-advanced;
    
                choice enable-disable {
                  leaf disable {
                    type empty;
                    description
                      "Disable MLD on this interface";
                  }
                }  // choice enable-disable
    
                leaf version {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint8 {
                      range "1 .. 2";
                    }
                  }
                  description
                    "Set mld version number on this interface";
                }
    
                container static {
                  description
                    "Static group or source membership";
                  uses apply-advanced;
    
                  list group {
                    key "name";
                    ordered-by user;
                    description
                      "IP multicast group address";
                    leaf name {
                      type jt:ipv6addr;
                      description
                        "IP multicast group address";
                    }
    
                    uses apply-advanced;
    
                    leaf group-increment {
                      type jt:ipv6addr;
                      description
                        "Mask for the incrementing group IP address";
                    }
    
                    leaf group-count {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 512";
                        }
                      }
                      description
                        "Number of groups";
                    }
    
                    leaf exclude {
                      type empty;
                      description
                        "Exclude sources";
                    }
    
                    list source {
                      key "name";
                      ordered-by user;
                      description
                        "IP multicast source address";
                      leaf name {
                        type jt:ipv6addr;
                        description
                          "Source address of IP multicast data";
                      }
    
                      uses apply-advanced;
    
                      leaf source-increment {
                        type jt:ipv6addr;
                        description
                          "Mask for the incrementing source IP address";
                      }
    
                      leaf source-count {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 1024";
                          }
                        }
                        description
                          "Number of sources";
                      }
                    }  // list source
                  }  // list group
                }  // container static
    
                leaf ssm-map {
                  type string;
                  description
                    "Map for ssm translation of mld v1 messages";
                }
    
                leaf-list ssm-map-policy {
                  type jt:policy-algebra;
                  ordered-by user;
                  description
                    "SSM map policy name";
                }
    
                leaf immediate-leave {
                  type empty;
                  description
                    "Group removed immediately, last membership query not sent";
                }
    
                leaf-list group-policy {
                  type jt:policy-algebra;
                  ordered-by user;
                  description
                    "Group filter applied to incoming mld report messages";
                }
    
                leaf group-limit {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 32767";
                    }
                  }
                  description
                    "Maximum number of (source,group) per interface";
                }
    
                leaf group-threshold {
                  junos:must "(".. group-limit")";
                  junos:must-message "To configure group-threshold, group-limit must be configured";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "Percentage of group-limit at which to start generating warnings";
                }
    
                leaf log-interval {
                  junos:must "(".. group-limit")";
                  junos:must-message "To configure log-interval, group-limit must be configured";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "6 .. 32767";
                    }
                  }
                  description
                    "Time between consecutive log messages";
                }
    
                choice accounting-choice {
                  leaf accounting {
                    type empty;
                    description
                      "Enable join and leave event notification";
                  }
                  leaf no-accounting {
                    type empty;
                    description
                      "Don't enable join and leave event notification";
                  }
                }  // choice accounting-choice
    
                container passive {
                  presence "enable passive";
                  description
                    "Suppress sending and receiving mld messages";
                  leaf allow-receive {
                    type empty;
                    description
                      "Allow receiving mld messages";
                  }
    
                  leaf send-general-query {
                    type empty;
                    description
                      "Send mld general query messages";
                  }
    
                  leaf send-group-query {
                    type empty;
                    description
                      "Send mld group query messages";
                  }
                }  // container passive
    
                leaf-list oif-map {
                  type jt:policy-algebra;
                  ordered-by user;
                  description
                    "Output interface map";
                }
    
                leaf distributed {
                  junos:must "("chassis network-services enhanced-ip")";
                  junos:must-message "distributed is supported only in enhanced-ip mode";
                  type empty;
                  description
                    "Distributed MLD interface";
                }
              }  // list interface
            }  // container mld
    
            container pim {
              description "PIM configuration";
              uses juniper-protocols-pim;
            }  // container pim
    
            container router-advertisement {
              description
                "IPv6 router advertisement options";
              uses apply-advanced;
    
              container traceoptions {
                description
                  "Trace options for router advertisement";
                uses apply-advanced;
    
                container file {
                  description
                    "Trace file options";
                  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 replace {
                    type empty;
                    status deprecated;
                    description
                      "Replace trace file rather than appending to it";
                  }
    
                  leaf size {
                    type string;
                    description
                      "Maximum trace file size";
                  }
    
                  leaf files {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "2 .. 1000";
                      }
                    }
                    default "10";
                    description
                      "Maximum number of trace files";
                  }
    
                  leaf no-stamp {
                    type empty;
                    status deprecated;
                    description
                      "Do not timestamp trace file";
                  }
    
                  choice world-readable-choice {
                    leaf world-readable {
                      type empty;
                      description
                        "Allow any user to read the log file";
                    }
                    leaf no-world-readable {
                      type empty;
                      description
                        "Don't allow any user to read the log file";
                    }
                  }  // choice world-readable-choice
                }  // container file
    
                list flag {
                  key "name";
                  ordered-by user;
                  description
                    "Tracing parameters";
                  leaf name {
                    type enumeration {
                      enum "route" {
                        value 0;
                        description
                          "Trace routing information";
                      }
                      enum "normal" {
                        value 1;
                        description
                          "Trace normal events";
                      }
                      enum "general" {
                        value 2;
                        description
                          "Trace general events";
                      }
                      enum "state" {
                        value 3;
                        description
                          "Trace state transitions";
                      }
                      enum "policy" {
                        value 4;
                        description
                          "Trace policy processing";
                      }
                      enum "task" {
                        value 5;
                        description
                          "Trace routing protocol task processing";
                      }
                      enum "timer" {
                        value 6;
                        description
                          "Trace routing protocol timer processing";
                      }
                      enum "all" {
                        value 7;
                        description
                          "Trace everything";
                      }
                    }
                  }
                }  // list flag
              }  // container traceoptions
    
              list interface {
                key "name";
                ordered-by user;
                description
                  "Interfaces on which to configure router advertisement";
                leaf name {
                  type string;
                }
    
                uses apply-advanced;
    
                leaf preference {
                  type enumeration {
                    enum "medium" {
                      value 0;
                      description
                        "Medium / (Default)";
                    }
                    enum "high" {
                      value 1;
                      description "High";
                    }
                    enum "low" {
                      value 2;
                      description "Low";
                    }
                  }
                  description
                    "Set the Preference for Router Selection";
                }
    
                leaf max-advertisement-interval {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "4 .. 1800";
                    }
                  }
                  units "seconds";
                  description
                    "Maximum advertisement interval";
                }
    
                leaf min-advertisement-interval {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "3 .. 1350";
                    }
                  }
                  units "seconds";
                  description
                    "Minimum advertisement interval";
                }
    
                choice managed-configuration-choice {
                  leaf managed-configuration {
                    type empty;
                    description
                      "Set managed address configuration";
                  }
                  leaf no-managed-configuration {
                    type empty;
                    description
                      "Don't set managed address configuration";
                  }
                }  // choice managed-configuration-choice
    
                choice other-stateful-configuration-choice {
                  leaf other-stateful-configuration {
                    type empty;
                    description
                      "Set other stateful configuration";
                  }
                  leaf no-other-stateful-configuration {
                    type empty;
                    description
                      "Don't set other stateful configuration";
                  }
                }  // choice other-stateful-configuration-choice
    
                choice link-mtu-choice {
                  leaf link-mtu {
                    type empty;
                    description "Link MTU";
                  }
                  leaf no-link-mtu {
                    type empty;
                    description "Don't link MTU";
                  }
                }  // choice link-mtu-choice
    
                leaf solicit-router-advertisement-unicast {
                  type empty;
                  description
                    "Enbale solicited router advertisement as unicast";
                }
    
                leaf reachable-time {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 3600000";
                    }
                  }
                  units "milliseconds";
                  description "Reachable time";
                }
    
                leaf retransmit-timer {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 4294967295";
                    }
                  }
                  units "milliseconds";
                  description "Retransmit timer";
                }
    
                leaf virtual-router-only {
                  type empty;
                  description
                    "Send advertisemnets only for vrrp-inet6-group";
                }
    
                leaf current-hop-limit {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 255";
                    }
                  }
                  description
                    "Current hop limit";
                }
    
                leaf default-lifetime {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 9000";
                    }
                  }
                  units "seconds";
                  description "Router lifetime";
                }
    
                list dns-server-address {
                  key "name";
                  max-elements 3;
                  ordered-by user;
                  description
                    "Recursive DNS address configuration";
                  leaf name {
                    type string;
                    description
                      "DNS address to be advertised";
                  }
    
                  uses apply-advanced;
    
                  leaf lifetime {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 4294967295";
                      }
                    }
                    units "seconds";
                    default "1800";
                    description
                      "DNS address lifetime";
                  }
                }  // list dns-server-address
    
                list prefix {
                  key "name";
                  ordered-by user;
                  description
                    "Prefix configuration";
                  leaf name {
                    type jt:ipv6prefix;
                    description
                      "Prefix to be advertised";
                  }
    
                  uses apply-advanced;
    
                  leaf valid-lifetime {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 4294967295";
                      }
                    }
                    units "seconds";
                    description
                      "Valid lifetime (fixed)";
                  }
    
                  choice on-link-choice {
                    leaf on-link {
                      type empty;
                      description
                        "Set on-link flag";
                    }
                    leaf no-on-link {
                      type empty;
                      description
                        "Don't set on-link flag";
                    }
                  }  // choice on-link-choice
    
                  leaf preferred-lifetime {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 4294967295";
                      }
                    }
                    units "seconds";
                    description
                      "Preferred lifetime (fixed)";
                  }
    
                  choice autonomous-choice {
                    leaf autonomous {
                      type empty;
                      description
                        "Set autonomous flag";
                    }
                    leaf no-autonomous {
                      type empty;
                      description
                        "Don't set autonomous flag";
                    }
                  }  // choice autonomous-choice
                }  // list prefix
    
                list dns-search-list {
                  key "name";
                  ordered-by user;
                  description
                    "DNS search list configuration";
                  leaf name {
                    type string;
                    description
                      "DNS search list name";
                  }
    
                  uses apply-advanced;
    
                  leaf lifetime {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 4294967295";
                      }
                    }
                    units "seconds";
                    default "5400";
                    description
                      "DNS search list lifetime";
                  }
                }  // list dns-search-list
    
                list rio-prefix {
                  key "name";
                  ordered-by user;
                  description
                    "Route information option configuration";
                  leaf name {
                    type jt:ipv6prefix;
                    description
                      "Prefix to be advertised";
                  }
    
                  uses apply-advanced;
    
                  leaf rio-lifetime {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 4294967295";
                      }
                    }
                    units "seconds";
                    description
                      "Route information lifetime";
                  }
    
                  leaf rio-preference {
                    type enumeration {
                      enum "medium" {
                        value 0;
                        description
                          "Medium / Default";
                      }
                      enum "high" {
                        value 1;
                        description "High";
                      }
                      enum "low" {
                        value 2;
                        description "Low";
                      }
                    }
                    description
                      "Set the preference for route information";
                  }
                }  // list rio-prefix
              }  // list interface
    
              container ra-secure {
                description
                  "Protect box against rogue incoming RA messages";
                uses apply-advanced;
    
                leaf accept-current-hop-limit-min {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 255";
                    }
                  }
                  units "uint";
                  description
                    "Current hop limit acceptable min for incoming RA";
                }
    
                leaf accept-current-hop-limit-max {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 255";
                    }
                  }
                  units "uint";
                  description
                    "Current hop acceptable min for incoming RA";
                }
    
                leaf accept-reachable-time-min {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1000 .. 3600000";
                    }
                  }
                  units "milliseconds";
                  description
                    "Reachable Time acceptable min for incoming RA";
                }
    
                leaf accept-reachable-time-max {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1000 .. 3600000";
                    }
                  }
                  units "milliseconds";
                  description
                    "Reachable Time acceptable max for incoming RA";
                }
    
                leaf accept-retransmit-time-min {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1000 .. 3600000";
                    }
                  }
                  units "milliseconds";
                  description
                    "Retransmit Time acceptable min for incoming RA";
                }
    
                leaf accept-retransmit-time-max {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1000 .. 3600000";
                    }
                  }
                  units "milliseconds";
                  description
                    "Retransmit Time acceptable min for incoming RA";
                }
              }  // container ra-secure
            }  // container router-advertisement
          }  // container protocols
    
          container class-of-service {
            description
              "Class-of-service configuration";
            uses juniper-class-of-service-options;
          }  // container class-of-service
    
          container routing-options {
            description
              "Protocol-independent routing option configuration";
            uses apply-advanced;
    
            list rib {
              key "name";
              ordered-by user;
              description
                "Routing table options";
              leaf name {
                type string;
                description "Routing table name";
              }
    
              uses apply-advanced;
    
              container static {
                description "Static routes";
                uses apply-advanced;
    
                leaf rib-group {
                  type string;
                  description
                    "Routing table group";
                }
    
                container defaults {
                  description
                    "Global route options";
                  uses apply-advanced;
    
                  choice retain-choice {
                    leaf retain {
                      junos:must "(!(".. resolve"))";
                      junos:must-message "Must not specify resolve with retain";
                      type empty;
                      description
                        "Always keep route in forwarding table";
                    }
                    leaf no-retain {
                      junos:must "(!(".. resolve"))";
                      junos:must-message "Must not specify resolve with retain";
                      type empty;
                      description
                        "Don't always keep route in forwarding table";
                    }
                  }  // choice retain-choice
    
                  choice install-choice {
                    leaf install {
                      type empty;
                      description
                        "Install route into forwarding table";
                    }
                    leaf no-install {
                      type empty;
                      description
                        "Don't install route into forwarding table";
                    }
                  }  // choice install-choice
    
                  choice readvertise-choice {
                    leaf readvertise {
                      type empty;
                      description
                        "Mark route as eligible to be readvertised";
                    }
                    leaf no-readvertise {
                      type empty;
                      description
                        "Don't mark route as eligible to be readvertised";
                    }
                  }  // choice readvertise-choice
    
                  choice resolve-choice {
                    leaf resolve {
                      type empty;
                      description
                        "Allow resolution of indirectly connected next hops";
                    }
                    leaf no-resolve {
                      type empty;
                      description
                        "Don't allow resolution of indirectly connected next hops";
                    }
                  }  // choice resolve-choice
    
                  choice longest-match-choice {
                    leaf longest-match {
                      junos:must "(".. resolve")";
                      junos:must-message "Requires resolve to be configured";
                      type empty;
                      description
                        "Always use longest prefix match to resolve next hops";
                    }
                    leaf no-longest-match {
                      junos:must "(".. resolve")";
                      junos:must-message "Requires resolve to be configured";
                      type empty;
                      description
                        "Don't always use longest prefix match to resolve next hops";
                    }
                  }  // choice longest-match-choice
    
                  choice passive_flag {
                    leaf active {
                      type empty;
                      description
                        "Remove inactive route from forwarding table";
                    }
                    leaf passive {
                      type empty;
                      description
                        "Retain inactive route in forwarding table";
                    }
                  }  // choice passive_flag
    
                  container metric {
                    presence "enable metric";
                    description "Metric value";
                    uses rib_static_metric_type;
                  }  // container metric
    
                  container metric2 {
                    presence "enable metric2";
                    description "Metric value 2";
                    uses rib_static_metric_type;
                  }  // container metric2
    
                  container metric3 {
                    presence "enable metric3";
                    description "Metric value 3";
                    uses rib_static_metric_type;
                  }  // container metric3
    
                  container metric4 {
                    presence "enable metric4";
                    description "Metric value 4";
                    uses rib_static_metric_type;
                  }  // container metric4
    
                  container tag {
                    presence "enable tag";
                    description "Tag string";
                    uses rib_static_metric_type;
                  }  // container tag
    
                  container tag2 {
                    presence "enable tag2";
                    description "Tag string 2";
                    uses rib_static_metric_type;
                  }  // container tag2
    
                  container preference {
                    presence "enable preference";
                    description
                      "Preference value";
                    uses rib_static_metric_type;
                  }  // container preference
    
                  container preference2 {
                    presence
                      "enable preference2";
                    description
                      "Preference value 2";
                    uses rib_static_metric_type;
                  }  // container preference2
    
                  container color {
                    presence "enable color";
                    description
                      "Color (preference) value";
                    uses rib_static_metric_type;
                  }  // container color
    
                  container color2 {
                    presence "enable color2";
                    description
                      "Color (preference) value 2";
                    uses rib_static_metric_type;
                  }  // container color2
    
                  leaf-list community {
                    type jt:community;
                    ordered-by user;
                    description
                      "BGP community identifier";
                  }
    
                  container as-path {
                    description
                      "Autonomous system path";
                    uses apply-advanced;
    
                    leaf path {
                      type string;
                      description
                        "Autonomous system path";
                    }
    
                    leaf origin {
                      type enumeration {
                        enum "igp" {
                          value 0;
                          description
                            "Path originated in the local IGP";
                        }
                        enum "egp" {
                          value 1;
                          description
                            "Path originated in another AS";
                        }
                        enum "incomplete" {
                          value 2;
                          description
                            "Path was learned by some other means";
                        }
                      }
                    }
    
                    leaf atomic-aggregate {
                      type empty;
                      description
                        "Add ATOMIC_AGGREGATE path attribute to route";
                    }
    
                    container aggregator {
                      presence
                        "enable aggregator";
                      description
                        "Add AGGREGATOR path attribute to route";
                    }  // container aggregator
    
                    leaf as-number {
                      type string {
                        junos:posix-pattern "^[0-9]+(.[0-9]+)?$";
                        junos:pattern-message "Use format 'x' or 'x.y' to specify number 'x' (Range 1 .. 4294967295) or number with higher 2 bytes 'x' (Range 0 .. 65535) and lower 2 bytes 'y' (Range 0 .. 65535) respectively";
                      }
                      description
                        " Autonomous system number in plain number or 'higher 16bits'.'Lower 16 bits' (asdot notation) format";
                    }
    
                    leaf address {
                      type jt:ipv4addr;
                      description
                        "Address of BGP system that formed the route";
                    }
                  }  // container as-path
                }  // container defaults
    
                list route {
                  key "name";
                  ordered-by user;
                  description "Static route";
                  leaf name {
                    type jt:ipprefix;
                  }
    
                  uses apply-advanced;
    
                  choice next_hop {
                    leaf-list next-hop {
                      type union {
                        type jt:ipaddr-or-interface;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      ordered-by user;
                      description
                        "Next hop to destination";
                    }
                    leaf reject {
                      type empty;
                      description
                        "Drop packets to destination; send ICMP unreachables";
                    }
                    leaf discard {
                      type empty;
                      description
                        "Drop packets to destination; send no ICMP unreachables";
                    }
                    leaf receive {
                      type empty;
                      description
                        "Install a receive route for the destination";
                    }
                    leaf next-table {
                      type string {
                        junos:posix-pattern "^(((.{0,128})[:](.{1,128})[.]|((.{1,128})[.]))?([a-z]|[0-9]|[-_])+[.]((1?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5])))$";
                        junos:pattern-message "Must match the format [<instance-name>[:<topology-name>].]<family-name>.<rib-id>";
                      }
                      description
                        "Next hop to another table";
                    }
                  }  // choice next_hop
    
                  list qualified-next-hop {
                    key "name";
                    ordered-by user;
                    description
                      "Next hop with qualifiers";
                    uses qualified_nh_obj;
                  }  // list qualified-next-hop
    
                  leaf backup-pe-group {
                    junos:must "(".. p2mp-lsp-next-hop")";
                    junos:must-message "Backup groups only allowed for static routes with p2mp lsp next-hop";
                    type string;
                    description
                      "Multicast source redundancy group";
                  }
    
                  container bfd-liveness-detection {
                    description
                      "Bidirectional Forwarding Detection (BFD) options";
                    uses apply-advanced;
    
                    leaf version {
                      type enumeration {
                        enum "0" {
                          value 0;
                          description
                            "BFD version 0 (deprecated)";
                        }
                        enum "1" {
                          value 1;
                          description
                            "BFD version 1";
                        }
                        enum "automatic" {
                          value 2;
                          description
                            "Choose BFD version automatically";
                        }
                      }
                      default "automatic";
                      description
                        "BFD protocol version number";
                    }
    
                    leaf minimum-interval {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "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 authentication {
                      description
                        "Authentication options";
                      uses apply-advanced;
    
                      leaf key-chain {
                        junos:must "(".. algorithm")";
                        junos:must-message "May not be configured without algorithm";
                        junos:must "("security authentication-key-chains key-chain $$")";
                        junos:must-message "Referenced key-chain must be defined";
                        type string;
                        description
                          "Key chain name";
                      }
    
                      leaf algorithm {
                        junos:must "(".. key-chain")";
                        junos:must-message "May not be configured without key-chain";
                        type enumeration {
                          enum "simple-password" {
                            value 0;
                            description
                              "Simple password";
                          }
                          enum "keyed-md5" {
                            value 1;
                            description
                              "Keyed message Digest 5";
                          }
                          enum
                            "meticulous-keyed-md5" {
                            value 2;
                            description
                              "Meticulous keyed message Digest 5";
                          }
                          enum "keyed-sha-1" {
                            value 3;
                            description
                              "Keyed secure hash algorithm (SHA1) ";
                          }
                          enum
                            "meticulous-keyed-sha-1" {
                            value 4;
                            description
                              "Meticulous keyed secure hash algorithm (SHA1) ";
                          }
                        }
                        description
                          "Algorithm name";
                      }
    
                      leaf loose-check {
                        type empty;
                        description
                          "Verify authentication only if authentication is negotiated";
                      }
                    }  // container authentication
    
                    leaf neighbor {
                      type jt:ipaddr;
                      description
                        "BFD neighbor address";
                    }
    
                    leaf local-address {
                      type jt:ipaddr;
                      description
                        "BFD local address (for multihop only)";
                    }
    
                    leaf holddown-interval {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "0 .. 255000";
                        }
                      }
                      units "milliseconds";
                      description
                        "Time to hold the session-UP notification to the client";
                    }
    
                    leaf minimum-receive-ttl {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint8 {
                          range "1 .. 255";
                        }
                      }
                      description
                        "Minimum receive TTL below which to drop";
                    }
                  }  // container bfd-liveness-detection
    
                  choice retain-choice {
                    leaf retain {
                      junos:must "(!(".. resolve"))";
                      junos:must-message "Must not specify resolve with retain";
                      type empty;
                      description
                        "Always keep route in forwarding table";
                    }
                    leaf no-retain {
                      junos:must "(!(".. resolve"))";
                      junos:must-message "Must not specify resolve with retain";
                      type empty;
                      description
                        "Don't always keep route in forwarding table";
                    }
                  }  // choice retain-choice
    
                  choice install-choice {
                    leaf install {
                      type empty;
                      description
                        "Install route into forwarding table";
                    }
                    leaf no-install {
                      type empty;
                      description
                        "Don't install route into forwarding table";
                    }
                  }  // choice install-choice
    
                  choice readvertise-choice {
                    leaf readvertise {
                      type empty;
                      description
                        "Mark route as eligible to be readvertised";
                    }
                    leaf no-readvertise {
                      type empty;
                      description
                        "Don't mark route as eligible to be readvertised";
                    }
                  }  // choice readvertise-choice
    
                  choice resolve-choice {
                    leaf resolve {
                      type empty;
                      description
                        "Allow resolution of indirectly connected next hops";
                    }
                    leaf no-resolve {
                      type empty;
                      description
                        "Don't allow resolution of indirectly connected next hops";
                    }
                  }  // choice resolve-choice
    
                  choice longest-match-choice {
                    leaf longest-match {
                      junos:must "(".. resolve")";
                      junos:must-message "Requires resolve to be configured";
                      type empty;
                      description
                        "Always use longest prefix match to resolve next hops";
                    }
                    leaf no-longest-match {
                      junos:must "(".. resolve")";
                      junos:must-message "Requires resolve to be configured";
                      type empty;
                      description
                        "Don't always use longest prefix match to resolve next hops";
                    }
                  }  // choice longest-match-choice
    
                  choice passive_flag {
                    leaf active {
                      type empty;
                      description
                        "Remove inactive route from forwarding table";
                    }
                    leaf passive {
                      type empty;
                      description
                        "Retain inactive route in forwarding table";
                    }
                  }  // choice passive_flag
    
                  container metric {
                    presence "enable metric";
                    description "Metric value";
                    uses rib_static_metric_type;
                  }  // container metric
    
                  container metric2 {
                    presence "enable metric2";
                    description "Metric value 2";
                    uses rib_static_metric_type;
                  }  // container metric2
    
                  container metric3 {
                    presence "enable metric3";
                    description "Metric value 3";
                    uses rib_static_metric_type;
                  }  // container metric3
    
                  container metric4 {
                    presence "enable metric4";
                    description "Metric value 4";
                    uses rib_static_metric_type;
                  }  // container metric4
    
                  container tag {
                    presence "enable tag";
                    description "Tag string";
                    uses rib_static_metric_type;
                  }  // container tag
    
                  container tag2 {
                    presence "enable tag2";
                    description "Tag string 2";
                    uses rib_static_metric_type;
                  }  // container tag2
    
                  container preference {
                    presence "enable preference";
                    description
                      "Preference value";
                    uses rib_static_metric_type;
                  }  // container preference
    
                  container preference2 {
                    presence
                      "enable preference2";
                    description
                      "Preference value 2";
                    uses rib_static_metric_type;
                  }  // container preference2
    
                  container color {
                    presence "enable color";
                    description
                      "Color (preference) value";
                    uses rib_static_metric_type;
                  }  // container color
    
                  container color2 {
                    presence "enable color2";
                    description
                      "Color (preference) value 2";
                    uses rib_static_metric_type;
                  }  // container color2
    
                  leaf-list community {
                    type jt:community;
                    ordered-by user;
                    description
                      "BGP community identifier";
                  }
    
                  container as-path {
                    description
                      "Autonomous system path";
                    uses apply-advanced;
    
                    leaf path {
                      type string;
                      description
                        "Autonomous system path";
                    }
    
                    leaf origin {
                      type enumeration {
                        enum "igp" {
                          value 0;
                          description
                            "Path originated in the local IGP";
                        }
                        enum "egp" {
                          value 1;
                          description
                            "Path originated in another AS";
                        }
                        enum "incomplete" {
                          value 2;
                          description
                            "Path was learned by some other means";
                        }
                      }
                    }
    
                    leaf atomic-aggregate {
                      type empty;
                      description
                        "Add ATOMIC_AGGREGATE path attribute to route";
                    }
    
                    container aggregator {
                      presence
                        "enable aggregator";
                      description
                        "Add AGGREGATOR path attribute to route";
                    }  // container aggregator
    
                    leaf as-number {
                      type string {
                        junos:posix-pattern "^[0-9]+(.[0-9]+)?$";
                        junos:pattern-message "Use format 'x' or 'x.y' to specify number 'x' (Range 1 .. 4294967295) or number with higher 2 bytes 'x' (Range 0 .. 65535) and lower 2 bytes 'y' (Range 0 .. 65535) respectively";
                      }
                      description
                        " Autonomous system number in plain number or 'higher 16bits'.'Lower 16 bits' (asdot notation) format";
                    }
    
                    leaf address {
                      type jt:ipv4addr;
                      description
                        "Address of BGP system that formed the route";
                    }
                  }  // container as-path
    
                  list lsp-next-hop {
                    key "name";
                    ordered-by user;
                    description "LSP next hop";
                    uses lsp_nh_obj;
                  }  // list lsp-next-hop
    
                  list p2mp-lsp-next-hop {
                    key "name";
                    max-elements 1;
                    ordered-by user;
                    description
                      "Point-to-multipoint LSP next hop";
                    uses lsp_nh_obj;
                  }  // list p2mp-lsp-next-hop
    
                  container spring-te-lsp-next-hop {
                    junos:must "("protocols source-packet-routing tunnel-tracking")";
                    junos:must-message "Please enable the tunnel-tracking  under 'protocols source-packet-routing' hierarchy";
                    description
                      "SPRING-TE LSP next hop";
                    uses springte_lsp_nh_obj;
                  }  // container spring-te-lsp-next-hop
    
                  container p2mp-ldp-next-hop {
                    description
                      "Point-to-multipoint LDP LSP next hop";
                    uses p2mp_ldp_lsp_nh_obj;
                  }  // container p2mp-ldp-next-hop
    
                  list static-lsp-next-hop {
                    key "name";
                    ordered-by user;
                    description
                      "Static LSP next hop";
                    uses lsp_nh_obj;
                  }  // list static-lsp-next-hop
                }  // list route
    
                container static-route {
                  description
                    "Static route Status";
                  leaf bfd-admin-down {
                    type enumeration {
                      enum "active" {
                        value 0;
                        description
                          "Static route will be inactive on bfd-admin-down";
                      }
                      enum "passive" {
                        value 1;
                        description
                          "Static route will remain active on bfd-admin-down";
                      }
                    }
                    description
                      "Static route State on BFD ADMIN DOWN";
                  }
                }  // container static-route
    
                list route-target-filter {
                  key "name";
                  ordered-by user;
                  description
                    "Route-target-filter route";
                  leaf name {
                    type string {
                      junos:posix-pattern "^[0-9.]{1,15}L?:[0-9]{1,10}/([0-9]|[2-5][0-9]|6[0-4])$";
                      junos:pattern-message "Use format 'x:y/len' where 'x' is an AS number followed by an optional 'L' (To indicate 4 byte AS), or an IP address and 'y' is a number. e.g. 123456L:100 and len is a prefix length from 0 to 64";
                      length "1 .. 47";
                    }
                  }
    
                  uses apply-advanced;
    
                  leaf-list neighbor {
                    type jt:ipaddr-scoped;
                    ordered-by user;
                    description
                      "BGP peers for filter";
                  }
    
                  leaf-list group {
                    type string;
                    ordered-by user;
                    description
                      "BGP groups for filter";
                  }
    
                  leaf local {
                    type empty;
                    description
                      "Locally originated filter";
                  }
                }  // list route-target-filter
              }  // container static
    
              list martians {
                key "address choice-ident choice-value";
                ordered-by user;
                description "Invalid routes";
                uses martian_type;
              }  // list martians
    
              container aggregate {
                description "Coalesced routes";
                uses rib_aggregate_type;
              }  // container aggregate
    
              container generate {
                description
                  "Route of last resort";
                uses rib_aggregate_type;
              }  // container generate
    
              choice maximum-paths-type {
                container maximum-routes {
                  status deprecated;
                  description
                    "Maximum number of routes";
                  leaf limit {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 4294967295";
                      }
                    }
                    description
                      "Maximum number of routes";
                  }
    
                  choice log_type {
                    leaf threshold {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 100";
                        }
                      }
                      description
                        "Percentage of limit at which to start generating warnings";
                    }
                    leaf log-only {
                      type empty;
                      description
                        "Generate warning messages only";
                    }
                  }  // choice log_type
    
                  leaf log-interval {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "5 .. 86400";
                      }
                    }
                    units "seconds";
                    description
                      "Minimum interval between log messages";
                  }
                }  // container maximum-routes
                container maximum-paths {
                  description
                    "Maximum number of paths";
                  leaf limit {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 4294967295";
                      }
                    }
                    description
                      "Maximum number of paths";
                  }
    
                  choice log_type {
                    leaf threshold {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 100";
                        }
                      }
                      description
                        "Percentage of limit at which to start generating warnings";
                    }
                    leaf log-only {
                      type empty;
                      description
                        "Generate warning messages only";
                    }
                  }  // choice log_type
    
                  leaf log-interval {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "5 .. 86400";
                      }
                    }
                    units "seconds";
                    description
                      "Minimum interval between log messages";
                  }
                }  // container maximum-paths
              }  // choice maximum-paths-type
    
              container maximum-prefixes {
                description
                  "Maximum number of prefixes";
                leaf limit {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 4294967295";
                    }
                  }
                  description
                    "Maximum number of prefixes";
                }
    
                choice log_type {
                  leaf threshold {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 100";
                      }
                    }
                    description
                      "Percentage of limit at which to start generating warnings";
                  }
                  leaf log-only {
                    type empty;
                    description
                      "Generate warning messages only";
                  }
                }  // choice log_type
    
                leaf log-interval {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "5 .. 86400";
                    }
                  }
                  units "seconds";
                  description
                    "Minimum interval between log messages";
                }
              }  // container maximum-prefixes
    
              container multipath {
                presence "enable multipath";
                description
                  "Protocol-independent load balancing";
                uses apply-advanced;
    
                container vpn-unequal-cost {
                  presence
                    "enable vpn-unequal-cost";
                  description
                    "Include VPN routes with unequal IGP metrics";
                  leaf equal-external-internal {
                    type empty;
                    description
                      "Include external and internal VPN routes";
                  }
                }  // container vpn-unequal-cost
    
                leaf as-path-compare {
                  type empty;
                  description
                    "Compare AS path sequences in addition to AS path length";
                }
    
                leaf preserve-nexthop-hierarchy {
                  type empty;
                  description
                    "Force multipath to create List nexthop";
                }
              }  // container multipath
    
              container policy-multipath {
                description
                  "Policy based multipath";
                uses apply-advanced;
    
                leaf-list policy {
                  type jt:policy-algebra;
                  ordered-by user;
                  description
                    "Import policy to create policy based multipath";
                }
    
                container traceoptions {
                  description "Trace options";
                  uses apply-advanced;
    
                  container file {
                    description
                      "Trace file options";
                    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 replace {
                      type empty;
                      status deprecated;
                      description
                        "Replace trace file rather than appending to it";
                    }
    
                    leaf size {
                      type string;
                      description
                        "Maximum trace file size";
                    }
    
                    leaf files {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "2 .. 1000";
                        }
                      }
                      default "10";
                      description
                        "Maximum number of trace files";
                    }
    
                    leaf no-stamp {
                      type empty;
                      status deprecated;
                      description
                        "Do not timestamp trace file";
                    }
    
                    choice world-readable-choice {
                      leaf world-readable {
                        type empty;
                        description
                          "Allow any user to read the log file";
                      }
                      leaf no-world-readable {
                        type empty;
                        description
                          "Don't allow any user to read the log file";
                      }
                    }  // choice world-readable-choice
                  }  // container file
    
                  list flag {
                    key "name";
                    ordered-by user;
                    description
                      "Tracing parameters";
                    leaf name {
                      type enumeration {
                        enum "route" {
                          value 0;
                          description
                            "Policy-multipath route tracing.";
                        }
                      }
                    }
    
                    leaf send {
                      type empty;
                      description
                        "Trace transmitted packets";
                    }
    
                    leaf receive {
                      type empty;
                      description
                        "Trace received packets";
                    }
    
                    leaf detail {
                      type empty;
                      description
                        "Trace detailed information";
                    }
    
                    leaf disable {
                      type empty;
                      description
                        "Disable this trace flag";
                    }
                  }  // list flag
                }  // container traceoptions
              }  // container policy-multipath
    
              container protect {
                description
                  "Protocol-independent protection";
                leaf core {
                  type empty;
                  description
                    "Protect against unreachability to service-edge router";
                }
              }  // container protect
    
              container access {
                description "Access routes";
                uses apply-advanced;
    
                list route {
                  key "name";
                  ordered-by user;
                  description "Access route";
                  leaf name {
                    type jt:ipprefix;
                    description
                      "IP address of destination";
                  }
    
                  uses apply-advanced;
    
                  leaf-list next-hop {
                    type union {
                      type jt:ipaddr-or-interface;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    ordered-by user;
                    description
                      "Next hop to destination";
                  }
    
                  list qualified-next-hop {
                    key "name";
                    ordered-by user;
                    description
                      "Next hop with qualifiers";
                    uses qualified_nh_obj;
                  }  // list qualified-next-hop
    
                  leaf metric {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 255";
                      }
                    }
                    description "Metric value";
                  }
    
                  leaf preference {
                    type union {
                      type uint32;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description
                      "Preference value";
                  }
    
                  leaf tag {
                    type union {
                      type uint32;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description "Tag string";
                  }
    
                  leaf tag2 {
                    type union {
                      type uint32;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description "Tag2 string";
                  }
                }  // list route
              }  // container access
    
              container access-internal {
                description
                  "Access-internal routes";
                uses apply-advanced;
    
                list route {
                  key "name";
                  ordered-by user;
                  description
                    "Access-internal route";
                  leaf name {
                    type jt:ipprefix;
                    description
                      "IP address and optional prefix length of destination";
                  }
    
                  uses apply-advanced;
    
                  leaf-list next-hop {
                    type union {
                      type jt:ipaddr-or-interface;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    ordered-by user;
                    description
                      "Next hop to destination";
                  }
    
                  list qualified-next-hop {
                    key "name";
                    ordered-by user;
                    description
                      "Next hop with qualifiers";
                    uses qualified_nh_obj;
                  }  // list qualified-next-hop
                }  // list route
              }  // container access-internal
    
              container bgp-static {
                description
                  "Routes for BGP static advertisements";
                uses apply-advanced;
    
                list route {
                  key "name";
                  ordered-by user;
                  description "BGP-static route";
                  leaf name {
                    type jt:ipprefix;
                    description
                      "IP address and optional prefix length of destination";
                  }
    
                  uses apply-advanced;
    
                  container metric {
                    presence "enable metric";
                    description "Metric value";
                    uses rib_static_metric_type;
                  }  // container metric
    
                  container metric2 {
                    presence "enable metric2";
                    description "Metric value 2";
                    uses rib_static_metric_type;
                  }  // container metric2
    
                  container metric3 {
                    presence "enable metric3";
                    description "Metric value 3";
                    uses rib_static_metric_type;
                  }  // container metric3
    
                  container metric4 {
                    presence "enable metric4";
                    description "Metric value 4";
                    uses rib_static_metric_type;
                  }  // container metric4
    
                  container tag {
                    presence "enable tag";
                    description "Tag string";
                    uses rib_static_metric_type;
                  }  // container tag
    
                  container tag2 {
                    presence "enable tag2";
                    description "Tag string 2";
                    uses rib_static_metric_type;
                  }  // container tag2
    
                  container preference {
                    presence "enable preference";
                    description
                      "Preference value";
                    uses rib_static_metric_type;
                  }  // container preference
    
                  container preference2 {
                    presence
                      "enable preference2";
                    description
                      "Preference value 2";
                    uses rib_static_metric_type;
                  }  // container preference2
    
                  container color {
                    presence "enable color";
                    description
                      "Color (preference) value";
                    uses rib_static_metric_type;
                  }  // container color
    
                  container color2 {
                    presence "enable color2";
                    description
                      "Color (preference) value 2";
                    uses rib_static_metric_type;
                  }  // container color2
    
                  leaf-list community {
                    type jt:community;
                    ordered-by user;
                    description
                      "BGP community identifier";
                  }
    
                  container as-path {
                    description
                      "Autonomous system path";
                    uses apply-advanced;
    
                    leaf path {
                      type string;
                      description
                        "Autonomous system path";
                    }
    
                    leaf origin {
                      type enumeration {
                        enum "igp" {
                          value 0;
                          description
                            "Path originated in the local IGP";
                        }
                        enum "egp" {
                          value 1;
                          description
                            "Path originated in another AS";
                        }
                        enum "incomplete" {
                          value 2;
                          description
                            "Path was learned by some other means";
                        }
                      }
                    }
    
                    leaf atomic-aggregate {
                      type empty;
                      description
                        "Add ATOMIC_AGGREGATE path attribute to route";
                    }
    
                    container aggregator {
                      presence
                        "enable aggregator";
                      description
                        "Add AGGREGATOR path attribute to route";
                    }  // container aggregator
    
                    leaf as-number {
                      type string {
                        junos:posix-pattern "^[0-9]+(.[0-9]+)?$";
                        junos:pattern-message "Use format 'x' or 'x.y' to specify number 'x' (Range 1 .. 4294967295) or number with higher 2 bytes 'x' (Range 0 .. 65535) and lower 2 bytes 'y' (Range 0 .. 65535) respectively";
                      }
                      description
                        " Autonomous system number in plain number or 'higher 16bits'.'Lower 16 bits' (asdot notation) format";
                    }
    
                    leaf address {
                      type jt:ipv4addr;
                      description
                        "Address of BGP system that formed the route";
                    }
                  }  // container as-path
                }  // list route
              }  // container bgp-static
    
              container flow {
                description
                  "Locally defined flow routing information";
                uses apply-advanced;
    
                container validation {
                  presence "enable validation";
                  description
                    "Flow route validation options";
                  uses flow-validation;
                }  // container validation
    
                list route {
                  key "name";
                  ordered-by user;
                  description "Flow route";
                  uses flow-route-inet6;
                }  // list route
    
                container interface-group {
                  description
                    "Interface-group for applying flow-spec filter";
                  uses flow-interface-group;
                }  // container interface-group
    
                leaf discard-action-for-unresolved-redir-addr {
                  type empty;
                  description
                    "For action redirect IP if redirect address is unresolved install discard action filter";
                }
    
                choice per-route-accounting-choice {
                  leaf per-route-accounting {
                    type empty;
                    description
                      "Enable traffic accounting per flowspec route";
                  }
                  leaf no-per-route-accounting {
                    type empty;
                    description
                      "Don't enable traffic accounting per flowspec route";
                  }
                }  // choice per-route-accounting-choice
              }  // container flow
    
              container label {
                presence "enable label";
                description "Label processing";
                uses apply-advanced;
    
                leaf-list allocation {
                  junos:must "(".. .. .. instance-type vrf")";
                  junos:must-message "'allocation' policy is valid only for 'instance-type vrf'";
                  type jt:policy-algebra;
                  ordered-by user;
                  description
                    "Label allocation policy";
                }
    
                leaf-list substitution {
                  junos:must "(".. .. .. instance-type vrf")";
                  junos:must-message "'substitution' policy is valid only for 'instance-type vrf'";
                  type jt:policy-algebra;
                  ordered-by user;
                  description
                    "Label substitution policy";
                }
              }  // container label
            }  // list rib
    
            container access {
              description "Access routes";
              uses apply-advanced;
    
              list route {
                key "name";
                ordered-by user;
                description "Access route";
                leaf name {
                  type jt:ipprefix;
                  description
                    "IP address of destination";
                }
    
                uses apply-advanced;
    
                leaf-list next-hop {
                  type union {
                    type jt:ipaddr-or-interface;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  ordered-by user;
                  description
                    "Next hop to destination";
                }
    
                list qualified-next-hop {
                  key "name";
                  ordered-by user;
                  description
                    "Next hop with qualifiers";
                  uses qualified_nh_obj;
                }  // list qualified-next-hop
    
                leaf metric {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 255";
                    }
                  }
                  description "Metric value";
                }
    
                leaf preference {
                  type union {
                    type uint32;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description "Preference value";
                }
    
                leaf tag {
                  type union {
                    type uint32;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description "Tag string";
                }
    
                leaf tag2 {
                  type union {
                    type uint32;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description "Tag2 string";
                }
              }  // list route
            }  // container access
    
            container access-internal {
              description
                "Access-internal routes";
              uses apply-advanced;
    
              list route {
                key "name";
                ordered-by user;
                description
                  "Access-internal route";
                leaf name {
                  type jt:ipprefix;
                  description
                    "IP address and optional prefix length of destination";
                }
    
                uses apply-advanced;
    
                leaf-list next-hop {
                  type union {
                    type jt:ipaddr-or-interface;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  ordered-by user;
                  description
                    "Next hop to destination";
                }
    
                list qualified-next-hop {
                  key "name";
                  ordered-by user;
                  description
                    "Next hop with qualifiers";
                  uses qualified_nh_obj;
                }  // list qualified-next-hop
              }  // list route
            }  // container access-internal
    
            container multicast {
              description
                "Global multicast options";
              uses apply-advanced;
    
              container traceoptions {
                description
                  "Global multicast trace options";
                uses apply-advanced;
    
                container file {
                  description
                    "Trace file options";
                  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 replace {
                    type empty;
                    status deprecated;
                    description
                      "Replace trace file rather than appending to it";
                  }
    
                  leaf size {
                    type string;
                    description
                      "Maximum trace file size";
                  }
    
                  leaf files {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "2 .. 1000";
                      }
                    }
                    default "10";
                    description
                      "Maximum number of trace files";
                  }
    
                  leaf no-stamp {
                    type empty;
                    status deprecated;
                    description
                      "Do not timestamp trace file";
                  }
    
                  choice world-readable-choice {
                    leaf world-readable {
                      type empty;
                      description
                        "Allow any user to read the log file";
                    }
                    leaf no-world-readable {
                      type empty;
                      description
                        "Don't allow any user to read the log file";
                    }
                  }  // choice world-readable-choice
                }  // container file
    
                list flag {
                  key "name";
                  ordered-by user;
                  description
                    "Tracing parameters";
                  leaf name {
                    type enumeration {
                      enum "parse" {
                        value 0;
                        description
                          "Trace configuration parsing";
                      }
                      enum "config-internal" {
                        value 1;
                        description
                          "Trace configuration internals";
                      }
                      enum "route" {
                        value 2;
                        description
                          "Trace routing information";
                      }
                      enum "normal" {
                        value 3;
                        description
                          "Trace normal events";
                      }
                      enum "general" {
                        value 4;
                        description
                          "Trace general events";
                      }
                      enum "state" {
                        value 5;
                        description
                          "Trace state transitions";
                      }
                      enum "policy" {
                        value 6;
                        description
                          "Trace policy processing";
                      }
                      enum "task" {
                        value 7;
                        description
                          "Trace routing protocol task processing";
                      }
                      enum "timer" {
                        value 8;
                        description
                          "Trace routing protocol timer processing";
                      }
                      enum "all" {
                        value 9;
                        description
                          "Trace everything";
                      }
                    }
                  }
    
                  leaf disable {
                    type empty;
                    description
                      "Disable this trace flag";
                  }
                }  // list flag
              }  // container traceoptions
    
              leaf rpf {
                type string;
                status deprecated;
              }
    
              list scope {
                key "name";
                ordered-by user;
                description
                  "Multicast address scope";
                leaf name {
                  type string;
                  description
                    "Name to identify multicast address scope";
                }
    
                uses apply-advanced;
    
                leaf prefix {
                  type jt:ipprefix;
                  description
                    "Administratively scoped address";
                }
    
                leaf-list interface {
                  type union {
                    type jt:interface-name;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  ordered-by user;
                  description
                    "Interface on which to configure scoping";
                }
              }  // list scope
    
              leaf-list scope-policy {
                type jt:policy-algebra;
                ordered-by user;
                description "Scoping policy";
              }
    
              list flow-map {
                key "name";
                ordered-by user;
                description
                  "Multicast flow map configuration";
                leaf name {
                  type string;
                  description
                    "Name of the flow map";
                }
    
                uses apply-advanced;
    
                leaf-list policy {
                  type jt:policy-algebra;
                  ordered-by user;
                  description
                    "Policy for matched flows";
                }
    
                container bandwidth {
                  presence "enable bandwidth";
                  description
                    "Bandwidth properties for matched flows";
                  leaf bandwidth-value {
                    type string;
                    units "bps";
                    description
                      "Static or default bandwidth for the matched flows";
                  }
    
                  leaf adaptive {
                    type empty;
                    description
                      "Auto-sense bandwidth for matched flows";
                  }
                }  // container bandwidth
    
                leaf-list redundant-sources {
                  junos:must "(".. bandwidth adaptive")";
                  junos:must-message "redundant-sources can only be configured together with 'bandwidth adaptive'";
                  type jt:ipaddr;
                  ordered-by user;
                  description
                    "Redundant source addresses";
                }
    
                container forwarding-cache {
                  description
                    "Forwarding cache properties for matched flows";
                  uses apply-advanced;
    
                  container timeout {
                    description
                      "Timeout properties for matched flows";
                    choice timeout_choice {
                      leaf timeout-value {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 720";
                          }
                        }
                        units "minutes";
                        description
                          "Timeout for forwarding cache entry";
                      }
                      container never {
                        presence "enable never";
                        description
                          "Forwarding cache entries never time out";
                        uses apply-advanced;
    
                        leaf non-discard-entry-only {
                          type empty;
                          description
                            "Apply only to non-discard entries";
                        }
                      }  // container never
                    }  // choice timeout_choice
                  }  // container timeout
                }  // container forwarding-cache
              }  // list flow-map
    
              leaf-list resolve-filter {
                type jt:policy-algebra;
                ordered-by user;
                status deprecated;
                description
                  "Multicast resolve policy filter";
              }
    
              leaf-list ssm-groups {
                type jt:ipprefix;
                ordered-by user;
                description
                  "Source-specific multicast group ranges";
              }
    
              leaf cont-stats-collection-interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "60 .. 3600";
                  }
                }
                default "300";
                description
                  "IGMP/MLD continuous statistics collection interval";
              }
    
              leaf asm-override-ssm {
                type empty;
                description
                  "Allow ASM state for SSM group ranges";
              }
    
              leaf-list rpf-check-policy {
                type jt:policy-algebra;
                ordered-by user;
                description
                  "Disable RPF check for a source group pair";
              }
    
              container pim-to-igmp-proxy {
                description "PIM-to-IGMP proxy";
                uses apply-advanced;
    
                leaf-list upstream-interface {
                  type union {
                    type jt:interface-name;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  max-elements 2;
                  ordered-by user;
                  description
                    "Upstream interface list";
                }
              }  // container pim-to-igmp-proxy
    
              container pim-to-mld-proxy {
                description "PIM-to-MLD proxy";
                uses apply-advanced;
    
                leaf-list upstream-interface {
                  type union {
                    type jt:interface-name;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  max-elements 2;
                  ordered-by user;
                  description
                    "Upstream interface list";
                }
              }  // container pim-to-mld-proxy
    
              container forwarding-cache {
                description
                  "Multicast forwarding cache";
                uses apply-advanced;
    
                leaf allow-maximum {
                  type empty;
                  description
                    "Allow maximum of global and family level threshold values for suppress and reuse";
                }
    
                list family {
                  junos:must "((!(".. threshold") || ".. allow-maximum"))";
                  junos:must-message "Family threshold cannot be configured if global threshold is already configured";
                  key "name";
                  ordered-by user;
                  description "Protocol family";
                  leaf name {
                    type enumeration {
                      enum "inet" {
                        value 0;
                        description
                          "IPv4 family";
                      }
                      enum "inet6" {
                        value 1;
                        description
                          "IPv6 family";
                      }
                    }
                    description
                      "Protocol family";
                  }
    
                  uses apply-advanced;
    
                  container threshold {
                    presence "enable threshold";
                    description
                      "Multicast forwarding cache suppress threshold";
                    uses apply-advanced;
    
                    leaf suppress {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 200000";
                        }
                      }
                      description
                        "Suppress threshold";
                    }
    
                    leaf reuse {
                      junos:must "(".. suppress")";
                      junos:must-message "To configure reuse, suppress must be configured";
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 200000";
                        }
                      }
                      description
                        "Reuse threshold";
                    }
    
                    leaf mvpn-rpt-suppress {
                      junos:must "(".. suppress")";
                      junos:must-message "To configure mvpn-rpt-suppress, suppress must be configured";
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 200000";
                        }
                      }
                      description
                        "MVPN RP tree entry suppress threshold";
                    }
    
                    leaf mvpn-rpt-reuse {
                      junos:must "(".. mvpn-rpt-suppress")";
                      junos:must-message "To configure mvpn-rpt-reuse, mvpn-rpt-suppress must be configured";
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 200000";
                        }
                      }
                      description
                        "MVPN RP tree entry reuse threshold";
                    }
    
                    leaf log-warning {
                      junos:must "(".. suppress")";
                      junos:must-message "To configure log-warning, suppress must be configured";
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 100";
                        }
                      }
                      description
                        "Percentage at which to start generating warnings";
                    }
                  }  // container threshold
                }  // list family
    
                container threshold {
                  junos:must "((!(".. family") || ".. allow-maximum"))";
                  junos:must-message "Global threshold cannot be configured if family threshold is configured";
                  description "Threshold";
                  uses apply-advanced;
    
                  leaf suppress {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 200000";
                      }
                    }
                    description
                      "Suppress threshold";
                  }
    
                  leaf reuse {
                    junos:must "(".. suppress")";
                    junos:must-message "To configure reuse, suppress must be configured";
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 200000";
                      }
                    }
                    description
                      "Reuse threshold";
                  }
    
                  leaf mvpn-rpt-suppress {
                    junos:must "(".. suppress")";
                    junos:must-message "To configure mvpn-rpt-suppress, suppress must be configured";
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 200000";
                      }
                    }
                    description
                      "MVPN RP tree entry suppress threshold";
                  }
    
                  leaf mvpn-rpt-reuse {
                    junos:must "(".. mvpn-rpt-suppress")";
                    junos:must-message "To configure mvpn-rpt-reuse, mvpn-rpt-suppress must be configured";
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 200000";
                      }
                    }
                    description
                      "MVPN RP tree entry reuse threshold";
                  }
    
                  leaf log-warning {
                    junos:must "(".. suppress")";
                    junos:must-message "To configure log-warning, suppress must be configured";
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 100";
                      }
                    }
                    description
                      "Percentage at which to start generating warnings";
                  }
                }  // container threshold
    
                leaf timeout {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 720";
                    }
                  }
                  description
                    "Forwarding cache entry timeout in minutes";
                }
              }  // container forwarding-cache
    
              list interface {
                key "name";
                ordered-by user;
                description
                  "Multicast interface options";
                uses multicast_interface_options_type;
              }  // list interface
    
              list ssm-map {
                key "name";
                ordered-by user;
                description
                  "SSM map definitions";
                leaf name {
                  type string;
                  description "SSM map name";
                }
    
                uses apply-advanced;
    
                leaf-list policy {
                  type jt:policy-algebra;
                  ordered-by user;
                  description
                    "Policy for matching group";
                }
    
                leaf-list source {
                  type jt:ipaddr;
                  ordered-by user;
                  description
                    "One or more source addresses";
                }
              }  // list ssm-map
    
              list backup-pe-group {
                key "name";
                ordered-by user;
                description
                  "Backup PE group definitions";
                leaf name {
                  type string;
                  description "PE group name";
                }
    
                uses apply-advanced;
    
                leaf-list backups {
                  type jt:ipaddr;
                  max-elements 8;
                  ordered-by user;
                  description
                    "One or more IP addresses";
                }
    
                leaf local-address {
                  type jt:ipaddr;
                  description
                    "Address to be used as local-address for this group";
                }
              }  // list backup-pe-group
    
              leaf omit-wildcard-address {
                type empty;
                description
                  "Omit wildcard source/group fields in SPMSI AD NLRI";
              }
    
              leaf local-address {
                type jt:ipv4addr;
                description
                  "Local address for PIM and MVPN sessions";
              }
            }  // container multicast
          }  // container routing-options
    
          container firewall {
            description
              "Define a firewall configuration";
            uses apply-advanced;
    
            container family {
              description "Protocol family";
              container inet {
                description
                  "Protocol family IPv4 for firewall filter";
                uses apply-advanced;
    
                list prefix-action {
                  key "name";
                  ordered-by user;
                  description
                    "Define a prefix action";
                  uses prefix_action;
                }  // list prefix-action
    
                list filter {
                  key "name";
                  description
                    "Define an IPv4 firewall filter";
                  uses inet_filter;
                }  // list filter
    
                list service-filter {
                  key "name";
                  description
                    "One or more IPv4 service filters";
                  uses inet_service_filter;
                }  // list service-filter
    
                list fast-update-filter {
                  key "name";
                  ordered-by user;
                  description
                    "One or more fast update filters";
                  uses inet_fuf;
                }  // list fast-update-filter
              }  // container inet
    
              container inet6 {
                description
                  "Protocol family IPv6 for firewall filter";
                uses apply-advanced;
    
                list filter {
                  key "name";
                  description
                    "Define an IPv6 firewall filter";
                  uses inet6_filter;
                }  // list filter
    
                list service-filter {
                  key "name";
                  description
                    "One or more IPv6 service filters";
                  uses inet6_service_filter;
                }  // list service-filter
    
                list fast-update-filter {
                  key "name";
                  ordered-by user;
                  description
                    "One or more fast update filters";
                  uses inet6_fuf;
                }  // list fast-update-filter
              }  // container inet6
    
              container mpls {
                description
                  "Protocol family MPLS for firewall filter";
                uses apply-advanced;
    
                list filter {
                  key "name";
                  uses mpls_filter;
                }  // list filter
              }  // container mpls
    
              container vpls {
                description
                  "Protocol family VPLS for firewall filter";
                uses apply-advanced;
    
                list filter {
                  key "name";
                  uses vpls_filter;
                }  // list filter
              }  // container vpls
    
              container evpn {
                description
                  "Protocol family EVPN for firewall filter";
                uses apply-advanced;
    
                list filter {
                  key "name";
                  uses vpls_filter;
                }  // list filter
              }  // container evpn
    
              container bridge {
                description
                  "Protocol family BRIDGE for firewall filter";
                uses apply-advanced;
    
                list filter {
                  key "name";
                  uses bridge_filter;
                }  // list filter
              }  // container bridge
    
              container ccc {
                description
                  "Protocol family CCC for firewall filter";
                uses apply-advanced;
    
                list filter {
                  key "name";
                  uses ccc_filter;
                }  // list filter
              }  // container ccc
    
              container any {
                description
                  "Protocol-independent filter";
                uses apply-advanced;
    
                list filter {
                  key "name";
                  description
                    "Define a protocol independent filter";
                  uses any_filter;
                }  // list filter
              }  // container any
    
              container ethernet-switching {
                description
                  "Protocol family Ethernet Switching for firewall filter";
                uses apply-advanced;
    
                list filter {
                  key "name";
                  description
                    "Define an Ethernet Switching firewall filter";
                  uses es_filter;
                }  // list filter
              }  // container ethernet-switching
            }  // container family
    
            list policer {
              key "name";
              description
                "Policer template definition";
              uses firewall_policer;
            }  // list policer
    
            list flexible-match {
              key "name";
              description
                "Flexible packet match template definition";
              uses firewall_flexible_match;
            }  // list flexible-match
    
            list tunnel-end-point {
              key "name";
              description
                "Tunnel end-point template definition";
              uses tunnel_end_point;
            }  // list tunnel-end-point
    
            list hierarchical-policer {
              key "name";
              description
                "Hierarchical policer template definition";
              uses firewall_hierpolicer;
            }  // list hierarchical-policer
    
            list interface-set {
              key "name";
              description
                "Interface set definition";
              uses interface_set_type;
            }  // list interface-set
    
            list three-color-policer {
              key "name";
              description "Three-color policer";
              uses three-color-policer-type;
            }  // list three-color-policer
    
            list filter {
              key "name";
              description
                "Define an IPv4 firewall filter";
              uses inet_filter;
            }  // list filter
          }  // container firewall
    
          container services {
            description
              "Service PIC applications settings";
            uses apply-advanced;
          }  // container services
    
          list profile-variable-set {
            key "name";
            ordered-by user;
            description
              "Dynamic profiles variable configuration";
            uses juniper-dynamic-profile-varset-object;
          }  // list profile-variable-set
    
          container policy-options {
            description
              "Routing policy option configuration";
            uses apply-advanced;
    
            list prefix-list {
              key "name";
              ordered-by user;
              description
                "Define a named set of address prefixes";
              leaf name {
                type string;
                description "Prefix list name";
              }
    
              uses apply-advanced;
    
              list prefix-list-item {
                key "name";
                uses prefix_list_items;
              }  // list prefix-list-item
    
              leaf apply-path {
                type string;
                description
                  "Apply IP prefixes from a configuration statement";
              }
            }  // list prefix-list
          }  // container policy-options
    
          container extensible-subscriber-services {
            presence
              "enable extensible-subscriber-services";
            description
              "Extensible subscriber services";
            uses apply-advanced;
    
            leaf-list vsas {
              type string;
              ordered-by user;
              description "Service VSAs";
            }
          }  // container extensible-subscriber-services
    
          container access-cac {
            description
              "Access ucac configuration";
            uses apply-advanced;
    
            list interface {
              key "name";
              ordered-by user;
              description
                "Access ucac interface options";
              uses access_cac_interface_options;
            }  // list interface
          }  // container access-cac
    
          container profile-type {
            presence "enable profile-type";
            description "Profile type";
            uses apply-advanced;
    
            leaf remote-device-service {
              type empty;
              description
                "Service profile to be programmed on a remote device";
            }
          }  // container profile-type
        }  // grouping juniper-dynamic-profile-object
    
        grouping access_cac_interface_options {
          description
            "Access ucac interface options";
          leaf name {
            type union {
              type jt:interface-unit;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description "Interface name";
          }
    
          uses apply-advanced;
    
          container multicast-video-bandwidth {
            presence
              "enable multicast-video-bandwidth";
            description
              "Maximum multicast bandwidth for the interface";
            leaf access-cac-bandwidth {
              type string;
              units "bps";
              description
                "Bandwidth used in access cac configuration";
            }
          }  // container multicast-video-bandwidth
    
          container video-bandwidth {
            presence "enable video-bandwidth";
            description
              "Maximum video bandwidth for the interface";
            leaf access-cac-bandwidth {
              type string;
              units "bps";
              description
                "Bandwidth used in access cac configuration";
            }
          }  // container video-bandwidth
    
          choice isqos {
            leaf no-qos-adjust {
              type empty;
              description "No qos adjustment";
            }
            container qos-adjust-hierarchical {
              description
                "Ucac interface set configuration";
              uses apply-advanced;
    
              leaf interface-set {
                type empty;
                description
                  "Enable hierarchical adjust on iflset";
              }
            }  // container qos-adjust-hierarchical
          }  // choice isqos
    
          list multicast-video-policy {
            key "name";
            ordered-by user;
            description "Mcast video policy";
            leaf name {
              type string {
                length "1 .. 64";
              }
              description
                "Mcast video policy name";
            }
    
            uses apply-advanced;
    
            container family {
              presence "enable family";
              description
                "Access cac multicast policy family";
              uses apply-advanced;
    
              choice family_type {
                container inet {
                  presence "enable inet";
                  description "Family inet";
                  uses apply-advanced;
    
                  leaf-list source {
                    type jt:ipv4addr;
                    description
                      "One or more multicast source addresses";
                  }
    
                  leaf-list group {
                    type jt:ipv4addr;
                    ordered-by user;
                    description
                      "One or more multicast group addresses";
                  }
                }  // container inet
                container inet6 {
                  presence "enable inet6";
                  description "Family inet6";
                  uses apply-advanced;
    
                  leaf-list source {
                    type jt:ipv6addr;
                    description
                      "One or more multicast source addresses";
                  }
    
                  leaf-list group {
                    type jt:ipv6addr;
                    ordered-by user;
                    description
                      "One or more multicast group addresses";
                  }
                }  // container inet6
              }  // choice family_type
            }  // container family
    
            container bandwidth {
              presence "enable bandwidth";
              description
                "Maximum video bandwidth for the interface";
              uses apply-advanced;
    
              leaf access-cac-bandwidth {
                type string;
                units "bps";
                description
                  "Bandwidth used in access cac configuration";
              }
            }  // container bandwidth
    
            leaf adaptive {
              type empty;
              description
                "Use multicast real traffic rate";
            }
          }  // list multicast-video-policy
        }  // grouping access_cac_interface_options
    
        grouping aggregate-load-balance {
          description
            "Load balancing parameters";
          uses apply-advanced;
    
          choice adaptive_option {
            case case_1 {
            }  // case case_1
    
            case case_2 {
            }  // case case_2
    
            case case_3 {
            }  // case case_3
          }  // choice adaptive_option
        }  // grouping aggregate-load-balance
    
        grouping any_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 interface {
                key "name";
                ordered-by user;
                description
                  "Match interface name";
                uses match_interface_object_oam;
              }  // list interface
    
              list interface-set {
                key "name";
                ordered-by user;
                description
                  "Match interface in set";
                uses match_interface_set_object;
              }  // list interface-set
    
              choice packet-length_choice {
                leaf-list packet-length {
                  type string {
                    junos:posix-pattern "^([0-9]{1,4}|[1-5][0-9][0-9][0-9][0-9]|[6][0-4][0-9][0-9][0-9]|65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5]|0x[0-f][0-f][0-f][0-f]|0x[0-f]|0x[0-f][0-f]|0x[0-f][0-f][0-f])(-([0-9]{1,4}|[1-5][0-9][0-9][0-9][0-9]|[6][0-4][0-9][0-9][0-9]|65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5]|0x[0-f][0-f][0-f][0-f]|0x[0-f]|0x[0-f][0-f]|0x[0-f][0-f][0-f]))?$";
                    junos:pattern-message "Must be a numeric value or a range between 0-65535";
                  }
                  ordered-by user;
                  description "Range of values";
                }
                leaf-list packet-length-except {
                  type string {
                    junos:posix-pattern "^([0-9]{1,4}|[1-5][0-9][0-9][0-9][0-9]|[6][0-4][0-9][0-9][0-9]|65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5]|0x[0-f][0-f][0-f][0-f]|0x[0-f]|0x[0-f][0-f]|0x[0-f][0-f][0-f])(-([0-9]{1,4}|[1-5][0-9][0-9][0-9][0-9]|[6][0-4][0-9][0-9][0-9]|65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5]|0x[0-f][0-f][0-f][0-f]|0x[0-f]|0x[0-f][0-f]|0x[0-f][0-f][0-f]))?$";
                    junos:pattern-message "Must be a numeric value or a range between 0-65535";
                  }
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice packet-length_choice
    
              choice forwarding-class_choice {
                leaf-list forwarding-class {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  ordered-by user;
                  description "String name";
                }
                leaf-list forwarding-class-except {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  ordered-by user;
                  description "String name";
                }
              }  // choice forwarding-class_choice
    
              choice loss-priority_choice {
                case case_1 {
                }  // case case_1
                leaf-list loss-priority-except {
                  type enumeration {
                    enum "low" {
                      value 0;
                      description
                        "Loss priority low";
                    }
                    enum "high" {
                      value 1;
                      description
                        "Loss priority high";
                    }
                    enum "medium-low" {
                      value 2;
                      description
                        "Loss priority medium-low";
                    }
                    enum "medium-high" {
                      value 3;
                      description
                        "Loss priority medium-high";
                    }
                  }
                  ordered-by user;
                }
              }  // choice loss-priority_choice
    
              choice policy-map_choice {
                leaf-list policy-map {
                  junos:must "("class-of-service policy-map $$")";
                  junos:must-message "Undefined policy-map instance";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                    length "1 .. 64";
                  }
                  ordered-by user;
                  description "String name";
                }
                leaf-list policy-map-except {
                  junos:must "("class-of-service policy-map $$")";
                  junos:must-message "Undefined policy-map instance";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                    length "1 .. 64";
                  }
                  ordered-by user;
                  description "String name";
                }
              }  // choice policy-map_choice
    
              choice learn-vlan-1p-priority_choice {
                case case_1 {
                }  // case case_1
                leaf-list learn-vlan-1p-priority-except {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 7";
                    }
                  }
                  ordered-by user;
                  description
                    "802.1p priority value 0-7";
                }
              }  // choice learn-vlan-1p-priority_choice
    
              choice user-vlan-1p-priority_choice {
                case case_1 {
                }  // case case_1
                leaf-list user-vlan-1p-priority-except {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 7";
                    }
                  }
                  ordered-by user;
                  description
                    "802.1p priority value 0-7";
                }
              }  // choice user-vlan-1p-priority_choice
    
              choice user-vlan-id_choice {
                case case_1 {
                }  // case case_1
                leaf-list user-vlan-id-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice user-vlan-id_choice
    
              choice learn-vlan-id_choice {
                case case_1 {
                }  // case case_1
                leaf-list learn-vlan-id-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice learn-vlan-id_choice
    
              choice ether-type_choice {
                case case_1 {
                }  // case case_1
                leaf-list ether-type-except {
                  type string;
                  ordered-by user;
                }
              }  // choice ether-type_choice
            }  // container from
    
            container then {
              description
                "Action to take if the 'from' condition is matched";
              uses apply-advanced;
    
              choice policer-choice {
                leaf policer {
                  junos:must "(!("firewall policer $$ aggregate"))";
                  junos:must-message "Cannot attach a aggregate policer to filter";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Name of policer to use to rate-limit traffic";
                }
                container three-color-policer {
                  description
                    "Police the packet using a three-color-policer";
                  uses apply-advanced;
    
                  choice type-choice {
                    leaf single-rate {
                      junos:must "("firewall three-color-policer $$ single-rate")";
                      junos:must-message "Referenced single-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of single-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf single-packet-rate {
                      junos:must "("firewall three-color-policer $$ single-packet-rate")";
                      junos:must-message "Referenced single-packet-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of single-packet-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf two-rate {
                      junos:must "("firewall three-color-policer $$ two-rate")";
                      junos:must-message "Referenced two-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of two-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf two-packet-rate {
                      junos:must "("firewall three-color-policer $$ two-packet-rate")";
                      junos:must-message "Referenced two-packet-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of two-packet-rate three-color policer to use to rate-limit traffic";
                    }
                  }  // choice type-choice
                }  // container three-color-policer
                leaf hierarchical-policer {
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Name of hierarchical policer to use to rate-limit traffic";
                }
              }  // choice policer-choice
    
              choice policy-map-choice {
                leaf clear-policy-map {
                  type empty;
                  description
                    "Clear the policy marking";
                }
                leaf policy-map {
                  junos:must "("class-of-service policy-map $$")";
                  junos:must-message "referenced policy map must be defined";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Policy map action";
                }
              }  // choice policy-map-choice
    
              leaf count {
                type string {
                  junos:posix-pattern "!^((__.*)|(.{65,}))$";
                  junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                }
                description
                  "Count the packet in the named counter";
              }
    
              leaf service-accounting {
                junos:must "(!(".. service-accounting-deferred"))";
                junos:must-message "'service-accounting-deferred' and 'service-accounting' cannot coexist";
                junos:must "(!(".. count"))";
                junos:must-message "'count' and 'service-accounting' cannot coexist";
                type empty;
                description
                  "Count the packets for service accounting";
              }
    
              leaf service-accounting-deferred {
                junos:must "(!(".. service-accounting"))";
                junos:must-message "Cannot be both 'service-accounting' and 'service-accounting-deferred'";
                junos:must "(!(".. count"))";
                junos:must-message "'count' and 'service-accounting-deferred' cannot coexist";
                type empty;
                description
                  "Count the packets for deferred service accounting";
              }
    
              leaf loss-priority {
                type enumeration {
                  enum "low" {
                    value 0;
                    description
                      "Loss priority low";
                  }
                  enum "high" {
                    value 1;
                    description
                      "Loss priority high";
                  }
                  enum "medium-low" {
                    value 2;
                    description
                      "Loss priority medium-low";
                  }
                  enum "medium-high" {
                    value 3;
                    description
                      "Loss priority medium-high";
                  }
                }
                description
                  "Classify packet to loss-priority";
              }
    
              leaf forwarding-class {
                type string {
                  junos:posix-pattern "^.{1,64}$";
                  junos:pattern-message "Must be string of 64 characters or less";
                }
                description
                  "Classify packet to forwarding class";
              }
    
              choice designation {
                case case_1 {
                }  // case case_1
                leaf accept {
                  type empty;
                  description
                    "Accept the packet";
                }
                leaf discard {
                  type empty;
                  description
                    "Discard the packet";
                }
                leaf next {
                  type enumeration {
                    enum "term" {
                      value 0;
                      description
                        "Continue to next term in a filter";
                    }
                  }
                  description
                    "Continue to next term in a filter";
                }
              }  // choice designation
            }  // container then
          }  // list term
        }  // grouping any_filter
    
        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 aps_type {
          uses apply-advanced;
    
          choice aps_mode {
            leaf working-circuit {
              type string;
              description
                "Working circuit group name";
            }
            leaf protect-circuit {
              type string;
              description
                "Protect circuit group name";
            }
          }  // choice aps_mode
    
          leaf annex-b {
            junos:must "(!(".. paired-group"))";
            junos:must-message "paired-group configuration not supported in annex-b mode";
            junos:must "(!(".. exercise"))";
            junos:must-message "exercise request not supported in annex-b mode";
            junos:must "(!(".. request"))";
            junos:must-message "manual request not supported in annex-b mode";
            junos:must "(!(".. revert-time"))";
            junos:must-message "revert-time not supported in annex-b mode";
            junos:must "(!(".. switching-mode unidirectional"))";
            junos:must-message "unidirectional mode not supported in annex-b mode";
            type empty;
            description "Annex-b mode";
          }
    
          leaf wait-to-restore-time {
            junos:must "(".. annex-b")";
            junos:must-message "wait-to-restore-time only supported for annex-b mode";
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 4294967295";
              }
            }
            units "seconds";
            description
              "Circuit wait-to-restore time for annex-b";
          }
    
          leaf preserve-interface {
            junos:must "(!(".. paired-group"))";
            junos:must-message "preserve-interface and paired-group cannot co-exist";
            type empty;
            description
              "Preserve interface state for fast failover";
          }
    
          leaf neighbor {
            type jt:ipv4addr;
            description "Neighbor address";
          }
    
          leaf paired-group {
            type string;
            description
              "Name of paired APS group";
          }
    
          container authentication-key {
            presence "enable authentication-key";
            description
              "Authentication parameters";
            leaf auth_key {
              type jt:unreadable;
              description "Authentication key";
            }
          }  // container authentication-key
    
          leaf switching-mode {
            type enumeration {
              enum "bidirectional" {
                value 0;
                description "Bidirectional";
              }
              enum "unidirectional" {
                value 1;
                description "Unidirectional";
              }
            }
            description "APS switching mode";
          }
    
          leaf advertise-interval {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 65534";
              }
            }
            units "milliseconds";
            description "Advertise interval";
          }
    
          leaf hold-time {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 65534";
              }
            }
            units "milliseconds";
            description "Hold time";
          }
    
          leaf revert-time {
            junos:must "(!(".. switching-mode unidirectional"))";
            junos:must-message "revert-time not supported in unidirectional mode";
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 65534";
              }
            }
            units "seconds";
            description "Circuit revert time";
          }
    
          choice break-before-make-choice {
            leaf break-before-make {
              type empty;
              description
                "Ensure only one interface is active at a time";
            }
            leaf no-break-before-make {
              type empty;
              description
                "Don't ensure only one interface is active at a time";
            }
          }  // choice break-before-make-choice
    
          choice manual_mode {
            leaf request {
              type enumeration {
                enum "protect" {
                  value 0;
                  description
                    "Request protect circuit";
                }
                enum "working" {
                  value 1;
                  description
                    "Request working circuit";
                }
              }
              description
                "Request circuit state";
            }
            leaf force {
              type enumeration {
                enum "protect" {
                  value 0;
                  description
                    "Force protect circuit";
                }
                enum "working" {
                  value 1;
                  description
                    "Force working circuit";
                }
              }
              description "Force circuit state";
            }
            leaf lockout {
              type empty;
              description "Lockout protection";
            }
          }  // choice manual_mode
    
          leaf fast-aps-switch {
            type empty;
            description "Fast aps switch";
          }
        }  // grouping aps_type
    
        grouping base-default-variable-object {
          leaf name {
            type enumeration {
              enum "igmp-enable" {
                value 0;
                description
                  "Default for junos-igmp-enable";
              }
              enum "igmp-access-group-name" {
                value 1;
                description
                  "Default for junos-igmp-access-group-name";
              }
              enum
                "igmp-access-source-group-name" {
                value 2;
                description
                  "Default for junos-igmp-access-group-name";
              }
              enum "igmp-version" {
                value 3;
                description
                  "Default for junos-igmp-version";
              }
              enum "igmp-immediate-leave" {
                value 4;
                description
                  "Default for junos-igmp-immediate-leave";
              }
              enum "mld-access-group-name" {
                value 5;
                description
                  "Default for junos-mld-access-group-name";
              }
              enum
                "mld-access-source-group-name" {
                value 6;
                description
                  "Default for junos-mld-access-source-group-name";
              }
              enum "mld-immediate-leave" {
                value 7;
                description
                  "Default for junos-mld-immediate-leave";
              }
              enum "input-filter" {
                value 8;
                description
                  "Default for junos-input-filter";
              }
              enum "output-filter" {
                value 9;
                description
                  "Default for junos-output-filter";
              }
              enum "input-interface-filter" {
                value 10;
                description
                  "Default for junos-input-interface-filter";
              }
              enum "output-interface-filter" {
                value 11;
                description
                  "Default for junos-output-interface-filter";
              }
              enum "input-ipv6-filter" {
                value 12;
                description
                  "Default for junos-input-ipv6-filter";
              }
              enum "output-ipv6-filter" {
                value 13;
                description
                  "Default for junos-output-ipv6-filter";
              }
              enum "adf-rule-v4" {
                value 14;
                description
                  "Default for junos-adf-rule-v4";
              }
              enum "adf-rule-v6" {
                value 15;
                description
                  "Default for junos-adf-rule-v6";
              }
              enum "cos-scheduler-map" {
                value 16;
                description
                  "Default for junos-cos-scheduler-map";
              }
              enum "cos-shaping-rate" {
                value 17;
                description
                  "Default for junos-cos-shaping-rate";
              }
              enum "cos-guaranteed-rate" {
                value 18;
                description
                  "Default for junos-cos-guaranteed-rate";
              }
              enum "cos-delay-buffer-rate" {
                value 19;
                description
                  "Default for junos-cos-delay-buffer-rate";
              }
              enum "cos-traffic-control-profile" {
                value 20;
                description
                  "Default for junos-cos-traffic-control-profile";
              }
              enum "cos-shaping-mode" {
                value 21;
                description
                  "Default for junos-cos-shaping-mode";
              }
              enum "cos-byte-adjust" {
                value 22;
                description
                  "Default for junos-cos-byte-adjust";
              }
              enum "cos-scheduler" {
                value 23;
                description
                  "Default for junos-cos-scheduler";
              }
              enum "cos-scheduler-pri" {
                value 24;
                description
                  "Default for junos-cos-scheduler-pri";
              }
              enum "cos-scheduler-dropfile-low" {
                value 25;
                description
                  "Default for junos-cos-scheduler-dropfile-low";
              }
              enum
                "cos-scheduler-dropfile-medium-low" {
                value 26;
                description
                  "Default for junos-cos-scheduler-dropfile-medium-low";
              }
              enum
                "cos-scheduler-dropfile-medium-high" {
                value 27;
                description
                  "Default for junos-cos-scheduler-dropfile-medium-high";
              }
              enum "cos-scheduler-dropfile-high" {
                value 28;
                description
                  "Default for junos-cos-scheduler-dropfile-high";
              }
              enum "cos-scheduler-dropfile-any" {
                value 29;
                description
                  "Default for junos-cos-scheduler-dropfile-any";
              }
              enum "cos-scheduler-excess-rate" {
                value 30;
                description
                  "Default for junos-cos-scheduler-excess-rate";
              }
              enum
                "cos-scheduler-explicit-congestion-notification" {
                value 31;
                description
                  "Default for junos-cos-scheduler-explicit-congestion-notification";
              }
              enum
                "cos-scheduler-excess-priority" {
                value 32;
                description
                  "Default for junos-cos-scheduler-excess-priority";
              }
              enum "cos-adjust-minimum" {
                value 33;
                description
                  "Default for junos-cos-adjust-minimum";
              }
              enum "cos-excess-rate-high" {
                value 34;
                description
                  "Default for junos-cos-excess-rate-high";
              }
              enum "cos-excess-rate-low" {
                value 35;
                description
                  "Default for junos-cos-excess-rate-low";
              }
              enum "cos-shaping-rate-burst" {
                value 36;
                description
                  "Default for junos-cos-shaping-rate-burst";
              }
              enum "cos-byte-adjust-frame" {
                value 37;
                description
                  "Default for junos-cos-byte-adjust-frame";
              }
              enum "cos-byte-adjust-cell" {
                value 38;
                description
                  "Default for junos-cos-byte-adjust-cell";
              }
              enum
                "cos-shaping-rate-priority-high" {
                value 39;
                description
                  "Default for junos-cos-shaping-rate-priority-high";
              }
              enum
                "cos-shaping-rate-priority-high-burst" {
                value 40;
                description
                  "Default for junos-cos-shaping-rate-priority-high-burst";
              }
              enum
                "cos-shaping-rate-priority-medium" {
                value 41;
                description
                  "Default for junos-cos-shaping-rate-priority-medium";
              }
              enum
                "cos-shaping-rate-priority-medium-burst" {
                value 42;
                description
                  "Default for junos-cos-shaping-rate-priority-medium-burst";
              }
              enum
                "cos-shaping-rate-priority-low" {
                value 43;
                description
                  "Default for junos-cos-shaping-rate-priority-low";
              }
              enum
                "cos-shaping-rate-priority-low-burst" {
                value 44;
                description
                  "Default for junos-cos-shaping-rate-priority-low-burst";
              }
              enum
                "cos-shaping-rate-excess-high" {
                value 45;
                description
                  "Default for junos-cos-shaping-rate-excess-high";
              }
              enum
                "cos-shaping-rate-excess-high-burst" {
                value 46;
                description
                  "Default for junos-cos-shaping-rate-excess-high-burst";
              }
              enum "cos-shaping-rate-excess-low" {
                value 47;
                description
                  "Default for junos-cos-shaping-rate-excess-low";
              }
              enum
                "cos-shaping-rate-excess-low-burst" {
                value 48;
                description
                  "Default for junos-cos-shaping-rate-excess-low-burst";
              }
              enum "cos-guaranteed-rate-burst" {
                value 49;
                description
                  "Default for junos-cos-guaranteed-rate-burst";
              }
              enum
                "cos-traffic-control-profile-remaining" {
                value 50;
                description
                  "Default for junos-cos-traffic-control-profile-remaining";
              }
              enum "routing-instances" {
                value 51;
                description
                  "Default for junos-routing-instance";
              }
              enum "pim-enable" {
                value 52;
                description
                  "Default for junos-pim-enable";
              }
              enum "interface-mtu" {
                value 53;
                description
                  "Default for junos-interface-mtu";
              }
              enum "inner-vlan-tag-protocol-id" {
                value 54;
                description
                  "Default for junos-inner-vlan-tag-protocol-id";
              }
              enum "routing-services" {
                value 55;
                description
                  "Default for junos-routing-services";
              }
              enum
                "aggregation-interface-set-name" {
                value 56;
                description
                  "Default for junos-aggregation-interface-set-name";
              }
              enum "interface-set-name" {
                value 57;
                description
                  "Default for junos-interface-set-name";
              }
              enum "default-interface-set-name" {
                value 58;
                description
                  "Default for junos-default-interface-set-name";
              }
              enum "phy-ifd-interface-set-name" {
                value 59;
                description
                  "Default for junos-phy-ifd-interface-set-name";
              }
              enum
                "phy-ifd-underlying-intf-set-name" {
                value 60;
                description
                  "Default for junos-phy-ifd-underlying-intf-set-name";
              }
            }
            description
              "Name of predefined variable";
          }
    
          uses apply-advanced;
    
          leaf default-value {
            type string;
            description
              "Default value for predefined variable";
          }
        }  // grouping base-default-variable-object
    
        grouping bridge_filter {
          description
            "Define a BRIDGE firewall 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;
    
          leaf-list accounting-profile {
            junos:must "("accounting-options filter-profile")";
            junos:must-message "referenced accounting profile must be defined";
            type string;
            ordered-by user;
            description
              "Accounting profile name";
          }
    
          leaf interface-specific {
            type empty;
            description
              "Defined counters are interface specific";
          }
    
          leaf physical-interface-filter {
            type empty;
            description
              "Filter is physical interface filter";
          }
    
          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;
    
            leaf filter {
              junos:must "("firewall family bridge filter $$")";
              junos:must-message "Referenced filter is not defined";
              junos:must "((!(".. from") && !(".. then")))";
              junos:must-message "Not compatible with 'from or then'";
              type string {
                junos:posix-pattern "!^((__.*)|(.{65,}))$";
                junos:pattern-message "Must be a non-reserved string of 64 characters or less";
              }
              description "Filter to include";
            }
    
            container from {
              description
                "Define match criteria";
              uses apply-advanced;
    
              choice interface-group_choice {
                leaf-list interface-group {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
                leaf-list interface-group-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice interface-group_choice
    
              choice ether-type_choice {
                leaf-list ether-type {
                  type string;
                  ordered-by user;
                }
                leaf-list ether-type-except {
                  type string;
                  ordered-by user;
                }
              }  // choice ether-type_choice
    
              choice vlan-ether-type_choice {
                leaf-list vlan-ether-type {
                  type string;
                  ordered-by user;
                }
                leaf-list vlan-ether-type-except {
                  type string;
                  ordered-by user;
                }
              }  // choice vlan-ether-type_choice
    
              list destination-mac-address {
                key "name";
                ordered-by user;
                description
                  "Destination MAC address";
                uses firewall_mac_addr_object;
              }  // list destination-mac-address
    
              list source-mac-address {
                key "name";
                ordered-by user;
                description "Source MAC address";
                uses firewall_mac_addr_object;
              }  // list source-mac-address
    
              choice forwarding-class_choice {
                leaf-list forwarding-class {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  ordered-by user;
                  description "String name";
                }
                leaf-list forwarding-class-except {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  ordered-by user;
                  description "String name";
                }
              }  // choice forwarding-class_choice
    
              choice loss-priority_choice {
                case case_1 {
                }  // case case_1
                leaf-list loss-priority-except {
                  type enumeration {
                    enum "low" {
                      value 0;
                      description
                        "Loss priority low";
                    }
                    enum "high" {
                      value 1;
                      description
                        "Loss priority high";
                    }
                    enum "medium-low" {
                      value 2;
                      description
                        "Loss priority medium-low";
                    }
                    enum "medium-high" {
                      value 3;
                      description
                        "Loss priority medium-high";
                    }
                  }
                  ordered-by user;
                }
              }  // choice loss-priority_choice
    
              choice learn-vlan-id_choice {
                case case_1 {
                }  // case case_1
                leaf-list learn-vlan-id-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice learn-vlan-id_choice
    
              choice learn-vlan-1p-priority_choice {
                case case_1 {
                }  // case case_1
                leaf-list learn-vlan-1p-priority-except {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 7";
                    }
                  }
                  ordered-by user;
                  description
                    "802.1p priority value 0-7";
                }
              }  // choice learn-vlan-1p-priority_choice
    
              choice user-vlan-id_choice {
                case case_1 {
                }  // case case_1
                leaf-list user-vlan-id-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice user-vlan-id_choice
    
              choice user-vlan-1p-priority_choice {
                case case_1 {
                }  // case case_1
                leaf-list user-vlan-1p-priority-except {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 7";
                    }
                  }
                  ordered-by user;
                  description
                    "802.1p priority value 0-7";
                }
              }  // choice user-vlan-1p-priority_choice
    
              choice learn-vlan-dei_choice {
                case case_1 {
                }  // case case_1
                leaf-list learn-vlan-dei-except {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 1";
                    }
                  }
                  ordered-by user;
                  description "DEI value 0-1";
                }
              }  // choice learn-vlan-dei_choice
    
              choice traffic-type_choice {
                case case_1 {
                }  // case case_1
                leaf-list traffic-type-except {
                  type enumeration {
                    enum "broadcast" {
                      value 0;
                      description
                        "Packets with broadcast ethernet address";
                    }
                    enum "multicast" {
                      value 1;
                      description
                        "Packets with multicast ethernet address";
                    }
                    enum "unknown-unicast" {
                      value 2;
                      description
                        "Packets for which destination ethernet address has not been learnt";
                    }
                    enum "known-unicast" {
                      value 3;
                      description
                        "Packets for which destination ethernet address has been learnt";
                    }
                  }
                  ordered-by user;
                }
              }  // choice traffic-type_choice
    
              choice ip-protocol_choice {
                case case_1 {
                }  // case case_1
                leaf-list ip-protocol-except {
                  type string;
                  ordered-by user;
                }
              }  // choice ip-protocol_choice
    
              choice dscp_choice {
                case case_1 {
                }  // case case_1
                leaf-list dscp-except {
                  type string;
                  ordered-by user;
                }
              }  // choice dscp_choice
    
              choice ip-precedence_choice {
                case case_1 {
                }  // case case_1
                leaf-list ip-precedence-except {
                  type string;
                  ordered-by user;
                }
              }  // choice ip-precedence_choice
    
              choice source-port_choice {
                case case_1 {
                }  // case case_1
                leaf-list source-port-except {
                  type string;
                  ordered-by user;
                }
              }  // choice source-port_choice
    
              choice destination-port_choice {
                case case_1 {
                }  // case case_1
                leaf-list destination-port-except {
                  type string;
                  ordered-by user;
                }
              }  // choice destination-port_choice
    
              choice port_choice {
                case case_1 {
                }  // case case_1
                leaf-list port-except {
                  type string;
                  ordered-by user;
                }
              }  // choice port_choice
    
              choice icmp-code_choice {
                case case_1 {
                }  // case case_1
                leaf-list icmp-code-except {
                  type string;
                  ordered-by user;
                }
              }  // choice icmp-code_choice
    
              choice icmp-type_choice {
                case case_1 {
                }  // case case_1
                leaf-list icmp-type-except {
                  type string;
                  ordered-by user;
                }
              }  // choice icmp-type_choice
    
              list interface {
                key "name";
                ordered-by user;
                description
                  "Match interface name";
                uses match_interface_object;
              }  // list interface
    
              list interface-set {
                key "name";
                ordered-by user;
                description
                  "Match interface in set";
                uses match_interface_set_object;
              }  // list interface-set
    
              choice ipv6-next-header_choice {
                case case_1 {
                }  // case case_1
                leaf-list ipv6-next-header-except {
                  type string;
                  ordered-by user;
                }
              }  // choice ipv6-next-header_choice
    
              choice ipv6-payload-protocol_choice {
                case case_1 {
                }  // case case_1
                leaf-list ipv6-payload-protocol-except {
                  type string;
                  ordered-by user;
                }
              }  // choice ipv6-payload-protocol_choice
    
              choice ipv6-traffic-class_choice {
                case case_1 {
                }  // case case_1
                leaf-list ipv6-traffic-class-except {
                  type string;
                  ordered-by user;
                }
              }  // choice ipv6-traffic-class_choice
    
              choice policy-map_choice {
                leaf-list policy-map {
                  junos:must "("class-of-service policy-map $$")";
                  junos:must-message "Undefined policy-map instance";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                    length "1 .. 64";
                  }
                  ordered-by user;
                  description "String name";
                }
                leaf-list policy-map-except {
                  junos:must "("class-of-service policy-map $$")";
                  junos:must-message "Undefined policy-map instance";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                    length "1 .. 64";
                  }
                  ordered-by user;
                  description "String name";
                }
              }  // choice policy-map_choice
    
              choice isid_choice {
                case case_1 {
                }  // case case_1
                leaf-list isid-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice isid_choice
    
              choice isid-priority-code-point_choice {
                case case_1 {
                }  // case case_1
                leaf-list isid-priority-code-point-except {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 7";
                    }
                  }
                  ordered-by user;
                  description
                    "802.1p priority value 0-7";
                }
              }  // choice isid-priority-code-point_choice
    
              choice isid-dei_choice {
                case case_1 {
                }  // case case_1
                leaf-list isid-dei-except {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 1";
                    }
                  }
                  ordered-by user;
                  description "DEI value 0-1";
                }
              }  // choice isid-dei_choice
            }  // container from
    
            container then {
              description
                "Action to take if the 'from' condition is matched";
              uses apply-advanced;
    
              choice policer-choice {
                leaf policer {
                  junos:must "(!("firewall policer $$ aggregate"))";
                  junos:must-message "Cannot attach a aggregate policer to filter";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Name of policer to use to rate-limit traffic";
                }
                container three-color-policer {
                  description
                    "Police the packet using a three-color-policer";
                  uses apply-advanced;
    
                  choice type-choice {
                    leaf single-rate {
                      junos:must "("firewall three-color-policer $$ single-rate")";
                      junos:must-message "Referenced single-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of single-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf single-packet-rate {
                      junos:must "("firewall three-color-policer $$ single-packet-rate")";
                      junos:must-message "Referenced single-packet-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of single-packet-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf two-rate {
                      junos:must "("firewall three-color-policer $$ two-rate")";
                      junos:must-message "Referenced two-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of two-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf two-packet-rate {
                      junos:must "("firewall three-color-policer $$ two-packet-rate")";
                      junos:must-message "Referenced two-packet-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of two-packet-rate three-color policer to use to rate-limit traffic";
                    }
                  }  // choice type-choice
                }  // container three-color-policer
                leaf hierarchical-policer {
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Name of hierarchical policer to use to rate-limit traffic";
                }
              }  // choice policer-choice
    
              choice policy-map-choice {
                leaf clear-policy-map {
                  type empty;
                  description
                    "Clear the policy marking";
                }
                leaf policy-map {
                  junos:must "("class-of-service policy-map $$")";
                  junos:must-message "referenced policy map must be defined";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Policy map action";
                }
              }  // choice policy-map-choice
    
              leaf count {
                type string {
                  junos:posix-pattern "!^((__.*)|(.{65,}))$";
                  junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                }
                description
                  "Count the packet in the named counter";
              }
    
              leaf loss-priority {
                type enumeration {
                  enum "low" {
                    value 0;
                    description
                      "Loss priority low";
                  }
                  enum "high" {
                    value 1;
                    description
                      "Loss priority high";
                  }
                  enum "medium-low" {
                    value 2;
                    description
                      "Loss priority medium-low";
                  }
                  enum "medium-high" {
                    value 3;
                    description
                      "Loss priority medium-high";
                  }
                }
                description
                  "Packet's loss priority";
              }
    
              leaf forwarding-class {
                type string {
                  junos:posix-pattern "^.{1,64}$";
                  junos:pattern-message "Must be string of 64 characters or less";
                }
                description
                  "Classify packet to forwarding class";
              }
    
              leaf port-mirror-instance {
                junos:must "("forwarding-options port-mirroring instance $$")";
                junos:must-message "Referenced port-mirroring instance does not exist";
                type string {
                  junos:posix-pattern "!^((__.*)|(.{65,}))$";
                  junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                }
                description
                  "Port-mirror the packet to specified instance";
              }
    
              leaf port-mirror {
                junos:must "(!(".. port-mirror-instance"))";
                junos:must-message "'port-mirror' and 'port-mirror-instance' are mutually exclusive";
                junos:must "("forwarding-options port-mirroring")";
                junos:must-message "Configure 'port-mirroring' under 'forwarding-options'";
                type empty;
                description
                  "Port-mirror the packet";
              }
    
              choice designation {
                leaf accept {
                  type empty;
                  description
                    "Accept the packet";
                }
                leaf discard {
                  type empty;
                  description
                    "Discard the packet";
                }
                leaf next {
                  type enumeration {
                    enum "term" {
                      value 0;
                      description
                        "Continue to next term in a filter";
                    }
                  }
                  description
                    "Continue to next term in a filter";
                }
              }  // choice designation
    
              container forwarding-policy {
                description
                  "Specify forwarding policy for extended port";
                uses apply-advanced;
    
                leaf uplink-select {
                  type string;
                  description
                    "Specify port group for uplink selection";
                }
              }  // container forwarding-policy
            }  // container then
          }  // list term
        }  // grouping bridge_filter
    
        grouping ccc_filter {
          description
            "Define a CCC firewall 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;
    
          leaf-list accounting-profile {
            junos:must "("accounting-options filter-profile")";
            junos:must-message "referenced accounting profile must be defined";
            type string;
            ordered-by user;
            description
              "Accounting profile name";
          }
    
          leaf interface-specific {
            type empty;
            description
              "Any counters defined will be interface specific";
          }
    
          leaf physical-interface-filter {
            type empty;
            description
              "Filter is physical interface filter";
          }
    
          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;
    
            leaf filter {
              junos:must "("firewall family ccc filter $$")";
              junos:must-message "Referenced filter is not defined";
              junos:must "((!(".. from") && !(".. then")))";
              junos:must-message "Not compatible with 'from or then'";
              type string {
                junos:posix-pattern "!^((__.*)|(.{65,}))$";
                junos:pattern-message "Must be a non-reserved string of 64 characters or less";
              }
              description "Filter to include";
            }
    
            container from {
              description
                "Define match criteria";
              uses apply-advanced;
    
              choice interface-group_choice {
                leaf-list interface-group {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
                leaf-list interface-group-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice interface-group_choice
    
              choice packet-length_choice {
                case case_1 {
                }  // case case_1
                leaf-list packet-length-except {
                  type string {
                    junos:posix-pattern "^([0-9]{1,4}|[1-5][0-9][0-9][0-9][0-9]|[6][0-4][0-9][0-9][0-9]|65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5]|0x[0-f][0-f][0-f][0-f]|0x[0-f]|0x[0-f][0-f]|0x[0-f][0-f][0-f])(-([0-9]{1,4}|[1-5][0-9][0-9][0-9][0-9]|[6][0-4][0-9][0-9][0-9]|65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5]|0x[0-f][0-f][0-f][0-f]|0x[0-f]|0x[0-f][0-f]|0x[0-f][0-f][0-f]))?$";
                    junos:pattern-message "Must be a numeric value or a range between 0-65535";
                  }
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice packet-length_choice
    
              choice forwarding-class_choice {
                leaf-list forwarding-class {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  ordered-by user;
                  description "String name";
                }
                leaf-list forwarding-class-except {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  ordered-by user;
                  description "String name";
                }
              }  // choice forwarding-class_choice
    
              choice loss-priority_choice {
                case case_1 {
                }  // case case_1
                leaf-list loss-priority-except {
                  type enumeration {
                    enum "low" {
                      value 0;
                      description
                        "Loss priority low";
                    }
                    enum "high" {
                      value 1;
                      description
                        "Loss priority high";
                    }
                    enum "medium-low" {
                      value 2;
                      description
                        "Loss priority medium-low";
                    }
                    enum "medium-high" {
                      value 3;
                      description
                        "Loss priority medium-high";
                    }
                  }
                  ordered-by user;
                }
              }  // choice loss-priority_choice
    
              choice learn-vlan-1p-priority_choice {
                case case_1 {
                }  // case case_1
                leaf-list learn-vlan-1p-priority-except {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 7";
                    }
                  }
                  ordered-by user;
                  description
                    "802.1p priority value 0-7";
                }
              }  // choice learn-vlan-1p-priority_choice
    
              choice user-vlan-1p-priority_choice {
                case case_1 {
                }  // case case_1
                leaf-list user-vlan-1p-priority-except {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 7";
                    }
                  }
                  ordered-by user;
                  description
                    "802.1p priority value 0-7";
                }
              }  // choice user-vlan-1p-priority_choice
    
              choice dscp_choice {
                case case_1 {
                }  // case case_1
                leaf-list dscp-except {
                  type string;
                  ordered-by user;
                }
              }  // choice dscp_choice
    
              choice ip-precedence_choice {
                case case_1 {
                }  // case case_1
                leaf-list ip-precedence-except {
                  type string;
                  ordered-by user;
                }
              }  // choice ip-precedence_choice
    
              choice ip-protocol_choice {
                case case_1 {
                }  // case case_1
                leaf-list ip-protocol-except {
                  type string;
                  ordered-by user;
                }
              }  // choice ip-protocol_choice
    
              choice icmp-type_choice {
                case case_1 {
                }  // case case_1
                leaf-list icmp-type-except {
                  type string;
                  ordered-by user;
                }
              }  // choice icmp-type_choice
    
              choice icmp-code_choice {
                case case_1 {
                }  // case case_1
                leaf-list icmp-code-except {
                  type string;
                  ordered-by user;
                }
              }  // choice icmp-code_choice
    
              choice source-port_choice {
                case case_1 {
                }  // case case_1
                leaf-list source-port-except {
                  type string;
                  ordered-by user;
                }
              }  // choice source-port_choice
    
              choice destination-port_choice {
                case case_1 {
                }  // case case_1
                leaf-list destination-port-except {
                  type string;
                  ordered-by user;
                }
              }  // choice destination-port_choice
    
              choice policy-map_choice {
                leaf-list policy-map {
                  junos:must "("class-of-service policy-map $$")";
                  junos:must-message "Undefined policy-map instance";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                    length "1 .. 64";
                  }
                  ordered-by user;
                  description "String name";
                }
                leaf-list policy-map-except {
                  junos:must "("class-of-service policy-map $$")";
                  junos:must-message "Undefined policy-map instance";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                    length "1 .. 64";
                  }
                  ordered-by user;
                  description "String name";
                }
              }  // choice policy-map_choice
    
              choice user-vlan-id_choice {
                case case_1 {
                }  // case case_1
                leaf-list user-vlan-id-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice user-vlan-id_choice
    
              choice ether-type_choice {
                case case_1 {
                }  // case case_1
                leaf-list ether-type-except {
                  type string;
                  ordered-by user;
                }
              }  // choice ether-type_choice
    
              choice learn-vlan-id_choice {
                case case_1 {
                }  // case case_1
                leaf-list learn-vlan-id-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice learn-vlan-id_choice
            }  // container from
    
            container then {
              description
                "Action to take if the 'from' condition is matched";
              uses apply-advanced;
    
              choice policer-choice {
                leaf policer {
                  junos:must "(!("firewall policer $$ aggregate"))";
                  junos:must-message "Cannot attach a aggregate policer to filter";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Name of policer to use to rate-limit traffic";
                }
                container three-color-policer {
                  description
                    "Police the packet using a three-color-policer";
                  uses apply-advanced;
    
                  choice type-choice {
                    leaf single-rate {
                      junos:must "("firewall three-color-policer $$ single-rate")";
                      junos:must-message "Referenced single-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of single-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf single-packet-rate {
                      junos:must "("firewall three-color-policer $$ single-packet-rate")";
                      junos:must-message "Referenced single-packet-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of single-packet-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf two-rate {
                      junos:must "("firewall three-color-policer $$ two-rate")";
                      junos:must-message "Referenced two-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of two-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf two-packet-rate {
                      junos:must "("firewall three-color-policer $$ two-packet-rate")";
                      junos:must-message "Referenced two-packet-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of two-packet-rate three-color policer to use to rate-limit traffic";
                    }
                  }  // choice type-choice
                }  // container three-color-policer
                leaf hierarchical-policer {
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Name of hierarchical policer to use to rate-limit traffic";
                }
              }  // choice policer-choice
    
              choice policy-map-choice {
                leaf clear-policy-map {
                  type empty;
                  description
                    "Clear the policy marking";
                }
                leaf policy-map {
                  junos:must "("class-of-service policy-map $$")";
                  junos:must-message "referenced policy map must be defined";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Policy map action";
                }
              }  // choice policy-map-choice
    
              leaf count {
                type string {
                  junos:posix-pattern "!^((__.*)|(.{65,}))$";
                  junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                }
                description
                  "Count the packet in the named counter";
              }
    
              leaf loss-priority {
                type enumeration {
                  enum "low" {
                    value 0;
                    description
                      "Loss priority low";
                  }
                  enum "high" {
                    value 1;
                    description
                      "Loss priority high";
                  }
                  enum "medium-low" {
                    value 2;
                    description
                      "Loss priority medium-low";
                  }
                  enum "medium-high" {
                    value 3;
                    description
                      "Loss priority medium-high";
                  }
                }
                description
                  "Packet's loss priority";
              }
    
              leaf forwarding-class {
                type string {
                  junos:posix-pattern "^.{1,64}$";
                  junos:pattern-message "Must be string of 64 characters or less";
                }
                description
                  "Classify packet to forwarding class";
              }
    
              leaf port-mirror-instance {
                junos:must "("forwarding-options port-mirroring instance $$")";
                junos:must-message "Referenced port-mirroring instance does not exist";
                type string {
                  junos:posix-pattern "!^((__.*)|(.{65,}))$";
                  junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                }
                description
                  "Port-mirror the packet to the specified instance";
              }
    
              leaf port-mirror {
                junos:must "(!(".. port-mirror-instance"))";
                junos:must-message "'port-mirror' and 'port-mirror-instance' are mutually exclusive";
                junos:must "("forwarding-options port-mirroring")";
                junos:must-message "Configure 'port-mirroring' under 'forwarding-options'";
                type empty;
                description
                  "Port-mirror the packet";
              }
    
              choice designation {
                case case_1 {
                }  // case case_1
                leaf accept {
                  type empty;
                  description
                    "Accept the packet";
                }
                leaf discard {
                  type empty;
                  description
                    "Discard the packet";
                }
                leaf next {
                  type enumeration {
                    enum "term" {
                      value 0;
                      description
                        "Continue to next term in a filter";
                    }
                  }
                  description
                    "Continue to next term in a filter";
                }
              }  // choice designation
            }  // container then
          }  // list term
        }  // grouping ccc_filter
    
        grouping cfm-traceoptions {
          description
            "Trace options for connectivity fault management";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
    
            leaf match {
              type jt:regular-expression;
              description
                "Regular expression for lines to be logged";
            }
          }  // container file
    
          list flag {
            key "name";
            ordered-by user;
            description "Tracing parameters";
            leaf name {
              type enumeration {
                enum "configuration" {
                  value 0;
                  description
                    "Trace configuration events";
                }
                enum "routing-socket" {
                  value 1;
                  description
                    "Trace routing socket events";
                }
                enum "protocol" {
                  value 2;
                  description
                    "Trace protocol processing events";
                }
                enum "init" {
                  value 3;
                  description
                    "Trace events related to protocol daemon start-up";
                }
                enum "error" {
                  value 4;
                  description
                    "Trace events related to catestrophic errors in daemon";
                }
                enum "issu" {
                  value 5;
                  description
                    "Trace ISSU related events";
                }
                enum "all" {
                  value 6;
                  description "Trace everything";
                }
              }
            }
          }  // list flag
        }  // grouping cfm-traceoptions
    
        grouping cos_policer {
          description
            "Define a CoS based policer";
          leaf name {
            type string {
              junos:posix-pattern "^.{1,64}$";
              junos:pattern-message "Must be a string of 64 characters or less";
            }
            description "Policer name";
          }
    
          uses apply-advanced;
    
          container premium {
            presence "enable premium";
            description
              "Policer to apply to premium traffic";
            uses ethernet_policer;
          }  // container premium
    
          container aggregate {
            presence "enable aggregate";
            description
              "Policer to apply to aggregate traffic";
            uses ethernet_policer;
          }  // container aggregate
        }  // grouping cos_policer
    
        grouping cos_policer_input_priority_map {
          description
            "Input policer priority map";
          uses apply-advanced;
    
          container ieee-802.1p {
            description
              "Use IEEE 802.1p to determine policer priority map";
            uses apply-advanced;
    
            leaf-list premium {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 7";
                }
              }
              ordered-by user;
              description
                "Input traffic's IEEE 802.1p value to which premium policer is applied";
            }
          }  // container ieee-802.1p
        }  // grouping cos_policer_input_priority_map
    
        grouping cos_policer_output_priority_map {
          description
            "Output policer priority map";
          uses apply-advanced;
    
          container classifier {
            description
              "Use classifier as policer priority map";
            uses apply-advanced;
    
            container premium {
              description
                "Output traffic classifier to which premium policer is applied";
              uses apply-advanced;
    
              list forwarding-class {
                key "name";
                ordered-by user;
                description
                  "Select a classification for this priority map";
                leaf name {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  description
                    "Forwarding class name";
                }
    
                uses apply-advanced;
    
                list loss-priority {
                  key "name";
                  ordered-by user;
                  description
                    "Select a loss priority";
                  leaf name {
                    type enumeration {
                      enum "low" {
                        value 0;
                        description
                          "Select low loss priority as premium policer";
                      }
                      enum "high" {
                        value 1;
                        description
                          "Select high loss priority as premium policer";
                      }
                    }
                  }
                }  // list loss-priority
              }  // list forwarding-class
            }  // container premium
          }  // container classifier
        }  // grouping cos_policer_output_priority_map
    
        grouping dcd_rx_bucket_config {
          uses apply-advanced;
    
          leaf overflow {
            type enumeration {
              enum "tag" {
                value 0;
                description
                  "Tag and count overflow packets";
              }
              enum "discard" {
                value 1;
                description
                  "Discard overflow packets";
              }
            }
            description "Overflow behavior";
          }
    
          leaf rate {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 100";
              }
            }
            description "Bucket rate";
          }
    
          leaf threshold {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 65535";
              }
            }
            description "Bucket threshold";
          }
        }  // grouping dcd_rx_bucket_config
    
        grouping dcd_shaping_config {
          description "Traffic-shaping profile";
          uses apply-advanced;
    
          choice useless_shaping_choice {
            container cbr {
              presence "enable cbr";
              description
                "Constant bandwidth utilization";
              leaf cbr-value {
                type string;
                description
                  "Constant bandwidth utilization";
              }
            }  // container cbr
            container vbr {
              description
                "Variable bandwidth utilization";
              leaf peak {
                type string;
                description "Peak rate";
              }
    
              leaf sustained {
                type string;
                description "Sustained rate";
              }
    
              leaf burst {
                type string;
                description "Burst size";
              }
            }  // container vbr
            container rtvbr {
              description
                "ATM2 real-time variable bandwidth utilization";
              leaf peak {
                type string;
                description "Peak rate";
              }
    
              leaf sustained {
                type string;
                description "Sustained rate";
              }
    
              leaf burst {
                type string;
                description "Burst size";
              }
            }  // container rtvbr
          }  // choice useless_shaping_choice
    
          leaf queue-length {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 16383";
              }
            }
            description "Queue length";
          }
        }  // grouping dcd_shaping_config
    
        grouping dcd_tx_bucket_config {
          uses apply-advanced;
    
          leaf overflow {
            type enumeration {
              enum "discard" {
                value 0;
                description
                  "Discard overflow packets";
              }
            }
            description "Overflow behavior";
          }
    
          leaf rate {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 100";
              }
            }
            description "Bucket rate";
          }
    
          leaf threshold {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 65535";
              }
            }
            description "Bucket threshold";
          }
        }  // grouping dcd_tx_bucket_config
    
        grouping dhcp-client-type {
          description
            "Dynamic Host Configuration Protocol client configuration";
          uses apply-advanced;
    
          container client-identifier {
            description
              "DHCP server identifies a client by client-identifier value ";
            uses apply-advanced;
    
            choice client-identifier-choice {
              leaf ascii {
                type string;
                description
                  "Client identifier as an ASCII string";
              }
              leaf hexadecimal {
                type string {
                  junos:posix-pattern "^[[:xdigit:]]+$";
                  junos:pattern-message "Must be hexadecimal digits (0-9, a-f, A-F)";
                }
                description
                  "Client identifier as a hexadecimal string";
              }
            }  // choice client-identifier-choice
    
            container user-id {
              description
                "Add user id to client-id option ";
              choice user-id-choice {
                leaf ascii {
                  type string;
                  description
                    "Client identifier as an ASCII string";
                }
                leaf hexadecimal {
                  type string {
                    junos:posix-pattern "^[[:xdigit:]]+$";
                    junos:pattern-message "Must be hexadecimal digits (0-9, a-f, A-F)";
                  }
                  description
                    "Client identifier as a hexadecimal string";
                }
              }  // choice user-id-choice
            }  // container user-id
    
            container prefix {
              description
                "Add prefix to client-id option";
              uses apply-advanced;
    
              leaf host-name {
                type empty;
                description
                  "Add router host name to client-id option";
              }
    
              leaf logical-system-name {
                type empty;
                description
                  "Add logical system name to client-id option";
              }
    
              leaf routing-instance-name {
                type empty;
                description
                  "Add routing instance name to client-id option";
              }
            }  // container prefix
    
            leaf use-interface-description {
              type enumeration {
                enum "logical" {
                  value 0;
                  description
                    "Use the logical interface description";
                }
                enum "device" {
                  value 1;
                  description
                    "Use the device interface description";
                }
              }
              description
                "Use the interface description";
            }
    
            leaf hardware-type {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint8 {
                  range "0 .. 255";
                }
              }
              default "0";
              description "Hardware type";
            }
          }  // container client-identifier
    
          container no-dns-install {
            presence "enable no-dns-install";
            description
              "Do not install DNS information learned from DHCP server";
          }  // container no-dns-install
    
          leaf lease-time {
            type string;
            units "seconds";
            description
              "Lease time in seconds requested in DHCP client protocol packet";
          }
    
          leaf retransmission-attempt {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 50000";
              }
            }
            default "4";
            description
              "Number of attempts to retransmit the DHCP client protocol packet";
          }
    
          leaf retransmission-interval {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "4 .. 64";
              }
            }
            units "seconds";
            default "4";
            description
              "Number of seconds between successive retransmission";
          }
    
          leaf metric {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 255";
              }
            }
            default "0";
            description
              "Client initiated default-route metric";
          }
    
          leaf server-address {
            type jt:ipv4addr;
            description "DHCP Server-address";
          }
    
          leaf update-server {
            type empty;
            description
              "Propagate TCP/IP settings to DHCP server";
          }
    
          leaf vendor-id {
            type string {
              length "1 .. 60";
            }
            description
              "Vendor class id for the DHCP Client";
          }
    
          leaf force-discover {
            type empty;
            description
              "Send DHCPDISCOVER after DHCPREQUEST retransmission failure";
          }
    
          container options {
            description "DHCP options";
            uses apply-advanced;
    
            list number {
              key "name";
              description "DHCP option code";
              leaf name {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 254";
                  }
                }
                description
                  "DHCP option identifier code";
              }
    
              choice option-type-choice {
                leaf hex-string {
                  type string {
                    junos:posix-pattern "^[[:xdigit:]]+$";
                    junos:pattern-message "Must be hexadecimal digits (0-9, a-f, A-F)";
                    length "1 .. 510";
                  }
                  description
                    "Hexadecimal string";
                }
              }  // choice option-type-choice
            }  // list number
    
            leaf no-hostname {
              type empty;
              description
                "Do not carry hostname (RFC option code is 12) in packet";
            }
          }  // container options
    
          list requested-options {
            key "name";
            description "DHCP options";
            leaf name {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 254";
                }
              }
              description
                "DHCP option identifier code";
            }
          }  // list requested-options
        }  // grouping dhcp-client-type
    
        grouping epd_threshold_config {
          uses apply-advanced;
    
          leaf epd-threshold-plp0 {
            type string;
            units "cells";
            description
              "Early packet discard threshold value";
          }
    
          leaf plp1 {
            type string;
            units "cells";
            description
              "Early packet drop threshold value for PLP 1";
          }
        }  // grouping epd_threshold_config
    
        grouping es_filter {
          leaf name {
            junos:must "(!("firewall family ethernet-switching filter JNPR_RSVD_FILTER_CWA "))";
            junos:must-message "This filter is reserved for Central Web Authentication";
            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;
    
          leaf interface-specific {
            type empty;
            description
              "Defined counters are interface specific";
          }
    
          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 interface {
                key "name";
                ordered-by user;
                description
                  "Match interface name";
                uses match_interface_object;
              }  // list interface
    
              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
    
              choice ether-type_choice {
                leaf-list ether-type {
                  type string;
                  ordered-by user;
                }
                leaf-list ether-type-except {
                  type string;
                  ordered-by user;
                }
              }  // choice ether-type_choice
    
              choice l2-encap-type_choice {
                leaf-list l2-encap-type {
                  type string;
                  ordered-by user;
                }
                leaf-list l2-encap-type-except {
                  type string;
                  ordered-by user;
                }
              }  // choice l2-encap-type_choice
    
              choice vlan_choice {
                leaf-list vlan {
                  type string;
                  ordered-by user;
                  description "VLAN name or ID";
                }
                leaf-list vlan-except {
                  type string;
                  ordered-by user;
                  description "VLAN name or ID";
                }
              }  // choice vlan_choice
    
              choice dot1q-tag_choice {
                leaf-list dot1q-tag {
                  type string {
                    junos:posix-pattern "^([0-9]{1,3}|[1-3][0-9][0-9][0-9]|40[0-8][0-9]|409[0-5])(-([0-9]{1,3}|[1-3][0-9][0-9][0-9]|40[0-8][0-9]|409[0-5]))?$";
                    junos:pattern-message "Must be a numerical value or range between 0-4095";
                  }
                  ordered-by user;
                  description "Range of values";
                }
                leaf-list dot1q-tag-except {
                  type string {
                    junos:posix-pattern "^([0-9]{1,3}|[1-3][0-9][0-9][0-9]|40[0-8][0-9]|409[0-5])(-([0-9]{1,3}|[1-3][0-9][0-9][0-9]|40[0-8][0-9]|409[0-5]))?$";
                    junos:pattern-message "Must be a numerical value or range between 0-4095";
                  }
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice dot1q-tag_choice
    
              choice dot1q-user-priority_choice {
                leaf-list dot1q-user-priority {
                  type string;
                  ordered-by user;
                }
                leaf-list dot1q-user-priority-except {
                  type string;
                  ordered-by user;
                }
              }  // choice dot1q-user-priority_choice
    
              list address {
                key "name";
                ordered-by user;
                description
                  "Match IP source or destination address";
                uses firewall_addr_object;
              }  // list address
    
              list source-address {
                key "name";
                ordered-by user;
                description
                  "Match IP source address";
                uses firewall_addr_object;
              }  // list source-address
    
              list destination-address {
                key "name";
                ordered-by user;
                description
                  "Match IP destination address";
                uses firewall_addr_object;
              }  // list destination-address
    
              choice dscp_choice {
                leaf-list dscp {
                  type string;
                  ordered-by user;
                }
                leaf-list dscp-except {
                  type string;
                  ordered-by user;
                }
              }  // choice dscp_choice
    
              choice precedence_choice {
                leaf-list precedence {
                  type string;
                  ordered-by user;
                }
                leaf-list precedence-except {
                  type string;
                  ordered-by user;
                }
              }  // choice precedence_choice
    
              choice ip-options_choice {
                leaf-list ip-options {
                  type enumeration {
                    enum "any" {
                      value 0;
                      description
                        "Any IP option";
                    }
                  }
                  ordered-by user;
                }
                leaf-list ip-options-except {
                  type enumeration {
                    enum "any" {
                      value 0;
                      description
                        "Any IP option";
                    }
                  }
                  ordered-by user;
                }
              }  // choice ip-options_choice
    
              leaf fragment-flags {
                type string {
                  junos:posix-pattern "^(0x4000|0x2000|dont-fragment|more-fragments)$";
                  junos:pattern-message "fragment-flags must be either dont-fragment(0x4000) or more-fragments(0x2000)";
                }
                description
                  "Match fragment flags (in symbolic or hex formats) - (Ingress only)";
              }
    
              leaf is-fragment {
                type empty;
                description
                  "Match if packet is a fragment";
              }
    
              choice protocol_choice {
                leaf-list protocol {
                  type string;
                  ordered-by user;
                }
                leaf-list protocol-except {
                  type string;
                  ordered-by user;
                }
              }  // choice 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 port_choice {
                leaf-list port {
                  type string;
                  ordered-by user;
                }
                leaf-list port-except {
                  type string;
                  ordered-by user;
                }
              }  // choice port_choice
    
              leaf tcp-flags {
                type string;
                description
                  "Match TCP flags (in symbolic or hex formats)";
              }
    
              leaf tcp-initial {
                type empty;
                description
                  "Match initial packet of a TCP connection";
              }
    
              leaf tcp-established {
                type empty;
                description
                  "Match packet of an established TCP connection";
              }
    
              choice icmp-type_choice {
                leaf-list icmp-type {
                  type string;
                  ordered-by user;
                }
                leaf-list icmp-type-except {
                  type string;
                  ordered-by user;
                }
              }  // choice icmp-type_choice
    
              choice icmp-code_choice {
                leaf-list icmp-code {
                  type string;
                  ordered-by user;
                }
                leaf-list icmp-code-except {
                  type string;
                  ordered-by user;
                }
              }  // choice icmp-code_choice
    
              list source-prefix-list {
                key "name";
                ordered-by user;
                description
                  "Match IP source prefixes in named list";
                uses firewall_prefix_list;
              }  // list source-prefix-list
    
              list destination-prefix-list {
                key "name";
                ordered-by user;
                description
                  "Match IP destination prefixes in named list";
                uses firewall_prefix_list;
              }  // list destination-prefix-list
    
              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 ip-precedence_choice {
                leaf-list ip-precedence {
                  type string;
                  ordered-by user;
                }
                leaf-list ip-precedence-except {
                  type string;
                  ordered-by user;
                }
              }  // choice ip-precedence_choice
    
              choice ipv6-next-header_choice {
                case case_1 {
                }  // case case_1
                leaf-list ipv6-next-header-except {
                  type string;
                  ordered-by user;
                }
              }  // choice ipv6-next-header_choice
    
              choice ipv6-payload-protocol_choice {
                case case_1 {
                }  // case case_1
                leaf-list ipv6-payload-protocol-except {
                  type string;
                  ordered-by user;
                }
              }  // choice ipv6-payload-protocol_choice
    
              choice ipv6-traffic-class_choice {
                case case_1 {
                }  // case case_1
                leaf-list ipv6-traffic-class-except {
                  type string;
                  ordered-by user;
                }
              }  // choice ipv6-traffic-class_choice
    
              choice interface-group_choice {
                leaf-list interface-group {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
                leaf-list interface-group-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice interface-group_choice
    
              choice vlan-ether-type_choice {
                leaf-list vlan-ether-type {
                  type string;
                  ordered-by user;
                }
                leaf-list vlan-ether-type-except {
                  type string;
                  ordered-by user;
                }
              }  // choice vlan-ether-type_choice
    
              choice loss-priority_choice {
                leaf-list loss-priority {
                  type enumeration {
                    enum "low" {
                      value 0;
                      description
                        "Loss priority low";
                    }
                    enum "high" {
                      value 1;
                      description
                        "Loss priority high";
                    }
                    enum "medium-low" {
                      value 2;
                      description
                        "Loss priority medium-low";
                    }
                    enum "medium-high" {
                      value 3;
                      description
                        "Loss priority medium-high";
                    }
                  }
                  ordered-by user;
                }
                leaf-list loss-priority-except {
                  type enumeration {
                    enum "low" {
                      value 0;
                      description
                        "Loss priority low";
                    }
                    enum "high" {
                      value 1;
                      description
                        "Loss priority high";
                    }
                    enum "medium-low" {
                      value 2;
                      description
                        "Loss priority medium-low";
                    }
                    enum "medium-high" {
                      value 3;
                      description
                        "Loss priority medium-high";
                    }
                  }
                  ordered-by user;
                }
              }  // choice loss-priority_choice
    
              choice learn-vlan-id_choice {
                leaf-list learn-vlan-id {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
                leaf-list learn-vlan-id-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice learn-vlan-id_choice
    
              choice learn-vlan-1p-priority_choice {
                leaf-list learn-vlan-1p-priority {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 7";
                    }
                  }
                  ordered-by user;
                  description
                    "802.1p priority value 0-7";
                }
                leaf-list learn-vlan-1p-priority-except {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 7";
                    }
                  }
                  ordered-by user;
                  description
                    "802.1p priority value 0-7";
                }
              }  // choice learn-vlan-1p-priority_choice
    
              choice learn-vlan-dei_choice {
                leaf-list learn-vlan-dei {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 1";
                    }
                  }
                  ordered-by user;
                  description "DEI value 0-1";
                }
                leaf-list learn-vlan-dei-except {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 1";
                    }
                  }
                  ordered-by user;
                  description "DEI value 0-1";
                }
              }  // choice learn-vlan-dei_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
    
              choice user-vlan-1p-priority_choice {
                leaf-list user-vlan-1p-priority {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 7";
                    }
                  }
                  ordered-by user;
                  description
                    "802.1p priority value 0-7";
                }
                leaf-list user-vlan-1p-priority-except {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 7";
                    }
                  }
                  ordered-by user;
                  description
                    "802.1p priority value 0-7";
                }
              }  // choice user-vlan-1p-priority_choice
    
              choice traffic-type_choice {
                leaf-list traffic-type {
                  type enumeration {
                    enum "broadcast" {
                      value 0;
                      description
                        "Packets with broadcast ethernet address";
                    }
                    enum "multicast" {
                      value 1;
                      description
                        "Packets with multicast ethernet address";
                    }
                    enum "unknown-unicast" {
                      value 2;
                      description
                        "Packets for which destination ethernet address has not been learnt";
                    }
                    enum "known-unicast" {
                      value 3;
                      description
                        "Packets for which destination ethernet address has been learnt";
                    }
                  }
                  ordered-by user;
                }
                leaf-list traffic-type-except {
                  type enumeration {
                    enum "broadcast" {
                      value 0;
                      description
                        "Packets with broadcast ethernet address";
                    }
                    enum "multicast" {
                      value 1;
                      description
                        "Packets with multicast ethernet address";
                    }
                    enum "unknown-unicast" {
                      value 2;
                      description
                        "Packets for which destination ethernet address has not been learnt";
                    }
                    enum "known-unicast" {
                      value 3;
                      description
                        "Packets for which destination ethernet address has been learnt";
                    }
                  }
                  ordered-by user;
                }
              }  // choice traffic-type_choice
    
              list ip-address {
                key "name";
                ordered-by user;
                description
                  "Match IP source or destination address";
                uses firewall_addr_object;
              }  // list ip-address
    
              list interface-set {
                key "name";
                ordered-by user;
                description
                  "Match interface in set";
                uses match_interface_set_object;
              }  // list interface-set
    
              list prefix-list {
                key "name";
                ordered-by user;
                description
                  "Match IP source or destination prefixes in named list";
                uses firewall_prefix_list;
              }  // list prefix-list
    
              choice isid_choice {
                leaf-list isid {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
                leaf-list isid-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice isid_choice
    
              choice isid-priority-code-point_choice {
                leaf-list isid-priority-code-point {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 7";
                    }
                  }
                  ordered-by user;
                  description
                    "802.1p priority value 0-7";
                }
                leaf-list isid-priority-code-point-except {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 7";
                    }
                  }
                  ordered-by user;
                  description
                    "802.1p priority value 0-7";
                }
              }  // choice isid-priority-code-point_choice
    
              choice isid-dei_choice {
                leaf-list isid-dei {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 1";
                    }
                  }
                  ordered-by user;
                  description "DEI value 0-1";
                }
                leaf-list isid-dei-except {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 1";
                    }
                  }
                  ordered-by user;
                  description "DEI value 0-1";
                }
              }  // choice isid-dei_choice
    
              choice forwarding-class_choice {
                leaf-list forwarding-class {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  ordered-by user;
                  description "String name";
                }
                leaf-list forwarding-class-except {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  ordered-by user;
                  description "String name";
                }
              }  // choice forwarding-class_choice
    
              choice arp-type_choice {
                case case_1 {
                }  // case case_1
              }  // choice arp-type_choice
    
              container ip-version {
                description "Define IP version";
                uses apply-advanced;
    
                container ipv4 {
                  junos:must "(!(".. ipv6"))";
                  junos:must-message "Same term cannot have both IPv4 & IPv6 IP version";
                  description
                    "Define L3/L4 match items to match IPv4 packets";
                  uses apply-advanced;
    
                  list source-address {
                    key "name";
                    ordered-by user;
                    description
                      "Match IP source address";
                    uses firewall_addr_object;
                  }  // list source-address
    
                  list destination-address {
                    key "name";
                    ordered-by user;
                    description
                      "Match IP destination address";
                    uses firewall_addr_object;
                  }  // list destination-address
    
                  choice dscp_choice {
                    leaf-list dscp {
                      type string;
                      ordered-by user;
                    }
                    leaf-list dscp-except {
                      type string;
                      ordered-by user;
                    }
                  }  // choice dscp_choice
    
                  choice precedence_choice {
                    leaf-list precedence {
                      type string;
                      ordered-by user;
                    }
                    leaf-list precedence-except {
                      type string;
                      ordered-by user;
                    }
                  }  // choice precedence_choice
    
                  choice ip-options_choice {
                    case case_1 {
                    }  // case case_1
                    leaf-list ip-options-except {
                      type enumeration {
                        enum "any" {
                          value 0;
                          description
                            "Any IP option";
                        }
                      }
                      ordered-by user;
                    }
                  }  // choice ip-options_choice
    
                  leaf fragment-flags {
                    type string;
                    description
                      "Match fragment flags (in symbolic or hex formats) - (Ingress only)";
                  }
    
                  leaf is-fragment {
                    type empty;
                    description
                      "Match if packet is a fragment";
                  }
    
                  choice protocol_choice {
                    leaf-list protocol {
                      type string;
                      ordered-by user;
                    }
                    leaf-list protocol-except {
                      type string;
                      ordered-by user;
                    }
                  }  // choice 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 port_choice {
                    case case_1 {
                    }  // case case_1
                    leaf-list port-except {
                      type string;
                      ordered-by user;
                    }
                  }  // choice port_choice
    
                  leaf tcp-flags {
                    type string;
                    description
                      "Match TCP flags (in symbolic or hex formats) - (Ingress only)";
                  }
    
                  leaf tcp-initial {
                    type empty;
                    description
                      "Match initial packet of a TCP connection - (Ingress only)";
                  }
    
                  leaf tcp-established {
                    type empty;
                    description
                      "Match packet of an established TCP connection";
                  }
    
                  choice icmp-type_choice {
                    leaf-list icmp-type {
                      type string;
                      ordered-by user;
                    }
                    leaf-list icmp-type-except {
                      type string;
                      ordered-by user;
                    }
                  }  // choice icmp-type_choice
    
                  choice icmp-code_choice {
                    leaf-list icmp-code {
                      type string;
                      ordered-by user;
                    }
                    leaf-list icmp-code-except {
                      type string;
                      ordered-by user;
                    }
                  }  // choice icmp-code_choice
    
                  list source-prefix-list {
                    key "name";
                    ordered-by user;
                    description
                      "Match IP source prefixes in named list";
                    uses firewall_prefix_list;
                  }  // list source-prefix-list
    
                  list destination-prefix-list {
                    key "name";
                    ordered-by user;
                    description
                      "Match IP destination prefixes in named list";
                    uses firewall_prefix_list;
                  }  // list destination-prefix-list
    
                  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 ip-precedence_choice {
                    leaf-list ip-precedence {
                      type string;
                      ordered-by user;
                    }
                    leaf-list ip-precedence-except {
                      type string;
                      ordered-by user;
                    }
                  }  // choice ip-precedence_choice
                }  // container ipv4
    
                container ipv6 {
                  junos:must "(!(".. ipv4"))";
                  junos:must-message "Same term cannot have both IPv4 & IPv6 IP version";
                  description
                    "Define L3/L4 match items to match IPv6 packets";
                  uses apply-advanced;
    
                  list source-address {
                    key "name";
                    ordered-by user;
                    description
                      "Match source address";
                    uses firewall_addr6_object;
                  }  // list source-address
    
                  list destination-address {
                    key "name";
                    ordered-by user;
                    description
                      "Match destination address";
                    uses firewall_addr6_object;
                  }  // list destination-address
    
                  choice traffic-class_choice {
                    leaf-list traffic-class {
                      type string;
                      ordered-by user;
                    }
                    leaf-list traffic-class-except {
                      type string;
                      ordered-by user;
                    }
                  }  // choice traffic-class_choice
    
                  choice next-header_choice {
                    leaf-list next-header {
                      type string;
                      ordered-by user;
                    }
                    leaf-list next-header-except {
                      type string;
                      ordered-by user;
                    }
                  }  // choice next-header_choice
    
                  choice payload-protocol_choice {
                    case case_1 {
                    }  // case case_1
                    leaf-list payload-protocol-except {
                      type string;
                      ordered-by user;
                    }
                  }  // choice payload-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 port_choice {
                    case case_1 {
                    }  // case case_1
                    leaf-list port-except {
                      type string;
                      ordered-by user;
                    }
                  }  // choice port_choice
    
                  choice extension-header_choice {
                    case case_1 {
                    }  // case case_1
                    leaf-list extension-header-except {
                      type string;
                      ordered-by user;
                    }
                  }  // choice extension-header_choice
    
                  leaf tcp-flags {
                    junos:must "((".. next-header tcp" || (".. next-header 6" || ".. payload-protocol tcp")))";
                    junos:must-message "next-header tcp or next-header 6 or payload-protocol tcp must be defined in the same clause";
                    type string;
                    description
                      "Match TCP flags (in symbolic or hex formats)";
                  }
    
                  leaf tcp-initial {
                    junos:must "((".. next-header tcp" || (".. next-header 6" || ".. payload-protocol tcp")))";
                    junos:must-message "next-header tcp or next-header 6 or payload-protocol tcp must be defined in the same clause";
                    type empty;
                    description
                      "Match initial packet of a TCP connection";
                  }
    
                  leaf tcp-established {
                    junos:must "((".. next-header tcp" || (".. next-header 6" || ".. payload-protocol tcp")))";
                    junos:must-message "next-header tcp or next-header 6 or payload-protocol tcp must be defined in the same clause";
                    type empty;
                    description
                      "Match packet of an established TCP connection";
                  }
    
                  choice icmp-type_choice {
                    leaf-list icmp-type {
                      type string;
                      ordered-by user;
                    }
                    leaf-list icmp-type-except {
                      type string;
                      ordered-by user;
                    }
                  }  // choice icmp-type_choice
    
                  choice icmp-code_choice {
                    leaf-list icmp-code {
                      type string;
                      ordered-by user;
                    }
                    leaf-list icmp-code-except {
                      type string;
                      ordered-by user;
                    }
                  }  // choice icmp-code_choice
    
                  list source-prefix-list {
                    key "name";
                    ordered-by user;
                    description
                      "Match IP source prefixes in named list";
                    uses firewall_prefix_list;
                  }  // list source-prefix-list
    
                  list destination-prefix-list {
                    key "name";
                    ordered-by user;
                    description
                      "Match IP destination prefixes in named list";
                    uses firewall_prefix_list;
                  }  // list destination-prefix-list
    
                  list ip6-source-address {
                    key "name";
                    ordered-by user;
                    description
                      "Match source address";
                    uses firewall_addr6_object;
                  }  // list ip6-source-address
    
                  list ip6-destination-address {
                    key "name";
                    ordered-by user;
                    description
                      "Match destination address";
                    uses firewall_addr6_object;
                  }  // list ip6-destination-address
                }  // container ipv6
              }  // container ip-version
    
              choice gbp-src-tag_choice {
                leaf-list gbp-src-tag {
                  type string {
                    junos:posix-pattern "^([0-9]{1,4}|[1-5][0-9][0-9][0-9][0-9]|[6][0-4][0-9][0-9][0-9]|65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5]|0x[0-f][0-f][0-f][0-f]|0x[0-f]|0x[0-f][0-f]|0x[0-f][0-f][0-f])(-([0-9]{1,4}|[1-5][0-9][0-9][0-9][0-9]|[6][0-4][0-9][0-9][0-9]|65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5]|0x[0-f][0-f][0-f][0-f]|0x[0-f]|0x[0-f][0-f]|0x[0-f][0-f][0-f]))?$";
                    junos:pattern-message "Must be a numeric value or a range between 0-65535";
                  }
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice gbp-src-tag_choice
    
              choice gbp-dst-tag_choice {
                leaf-list gbp-dst-tag {
                  type string {
                    junos:posix-pattern "^([0-9]{1,4}|[1-5][0-9][0-9][0-9][0-9]|[6][0-4][0-9][0-9][0-9]|65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5]|0x[0-f][0-f][0-f][0-f]|0x[0-f]|0x[0-f][0-f]|0x[0-f][0-f][0-f])(-([0-9]{1,4}|[1-5][0-9][0-9][0-9][0-9]|[6][0-4][0-9][0-9][0-9]|65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5]|0x[0-f][0-f][0-f][0-f]|0x[0-f]|0x[0-f][0-f]|0x[0-f][0-f][0-f]))?$";
                    junos:pattern-message "Must be a numeric value or a range between 0-65535";
                  }
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice gbp-dst-tag_choice
    
              choice packet-length_choice {
                case case_1 {
                }  // case case_1
                leaf-list packet-length-except {
                  type string {
                    junos:posix-pattern "^([0-9]{1,4}|[1-5][0-9][0-9][0-9][0-9]|[6][0-4][0-9][0-9][0-9]|65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5]|0x[0-f][0-f][0-f][0-f]|0x[0-f]|0x[0-f][0-f]|0x[0-f][0-f][0-f])(-([0-9]{1,4}|[1-5][0-9][0-9][0-9][0-9]|[6][0-4][0-9][0-9][0-9]|65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5]|0x[0-f][0-f][0-f][0-f]|0x[0-f]|0x[0-f][0-f]|0x[0-f][0-f][0-f]))?$";
                    junos:pattern-message "Must be a numeric value or a range between 0-65535";
                  }
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice packet-length_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 packet";
                }
                leaf next {
                  type enumeration {
                    enum "term" {
                      value 0;
                      description
                        "Continue to next term in a filter";
                    }
                  }
                  description
                    "Continue to next term in a filter";
                }
              }  // choice designation
    
              leaf log {
                type empty;
                description "Log the packet";
              }
    
              leaf pkt-trace {
                type empty;
                description "Trace the packet";
              }
    
              leaf flood {
                type empty;
                description "Flood the packet";
              }
    
              leaf syslog {
                type empty;
                description
                  "System log (syslog) information about the packet";
              }
    
              leaf packet-capture {
                type empty;
                description
                  "Enable packet capture for telemetry";
              }
    
              leaf forwarding-class {
                type string {
                  junos:posix-pattern "^.{1,64}$";
                  junos:pattern-message "Must be string of 64 characters or less";
                }
                description
                  "Classify packet to forwarding class";
              }
    
              leaf analyzer {
                junos:must "("ethernet-switching-options analyzer $$")";
                junos:must-message "Named Analyzer must be set";
                type string {
                  junos:posix-pattern "!^((__.*)|(.{65,}))$";
                  junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                }
                description
                  "Name of analyzer - (Ingress only)";
              }
    
              leaf port-mirror-instance {
                junos:must "("forwarding-options port-mirroring instance $$")";
                junos:must-message "Referenced port-mirroring instance does not exist";
                type string {
                  junos:posix-pattern "!^((__.*)|(.{65,}))$";
                  junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                }
                description
                  "Port-mirror the packet to specified instance";
              }
    
              leaf port-mirror {
                junos:must "(!(".. port-mirror-instance"))";
                junos:must-message "'port-mirror' and 'port-mirror-instance' are mutually exclusive";
                junos:must "("forwarding-options port-mirroring")";
                junos:must-message "Configure 'port-mirroring' under 'forwarding-options'";
                type empty;
                description
                  "Port-mirror the packet";
              }
    
              leaf next-hop-group {
                junos:must "("forwarding-options next-hop-group $$")";
                junos:must-message "Referenced next-hop group is not defined";
                type string;
                description
                  "Use specified next-hop group";
              }
    
              leaf loss-priority {
                type enumeration {
                  enum "low" {
                    value 0;
                    description
                      "Loss priority low";
                  }
                  enum "high" {
                    value 1;
                    description
                      "Loss priority high";
                  }
                  enum "medium-low" {
                    value 2;
                    description
                      "Loss priority medium-low";
                  }
                  enum "medium-high" {
                    value 3;
                    description
                      "Loss priority medium-high";
                  }
                }
                description
                  "Packet's loss priority";
              }
    
              leaf count {
                type string {
                  junos:posix-pattern "!^((__.*)|(.{65,}))$";
                  junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                }
                description
                  "Count the packet in the named counter";
              }
    
              choice policer-choice {
                leaf policer {
                  junos:must "(!("firewall policer $$ aggregate"))";
                  junos:must-message "Cannot attach a aggregate policer to filter";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Name of policer to use to rate-limit traffic";
                }
                container three-color-policer {
                  description
                    "Police the packet using a three-color-policer";
                  uses apply-advanced;
    
                  choice type-choice {
                    leaf single-rate {
                      junos:must "("firewall three-color-policer $$ single-rate")";
                      junos:must-message "Referenced single-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of single-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf single-packet-rate {
                      junos:must "("firewall three-color-policer $$ single-packet-rate")";
                      junos:must-message "Referenced single-packet-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of single-packet-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf two-rate {
                      junos:must "("firewall three-color-policer $$ two-rate")";
                      junos:must-message "Referenced two-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of two-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf two-packet-rate {
                      junos:must "("firewall three-color-policer $$ two-packet-rate")";
                      junos:must-message "Referenced two-packet-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of two-packet-rate three-color policer to use to rate-limit traffic";
                    }
                  }  // choice type-choice
                }  // container three-color-policer
                leaf hierarchical-policer {
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Name of hierarchical policer to use to rate-limit traffic";
                }
              }  // choice policer-choice
    
              leaf vlan {
                junos:must "(("vlans $$" && !("vlans $$ vlan-range")))";
                junos:must-message "Named or Non-range vlan must be set";
                junos:must "(!("vlans $$ vlan-id-list"))";
                junos:must-message "Named or Non-vlan-id-list vlan must be set";
                type string;
                description
                  "Name of VLAN - (Ingress only)";
              }
    
              leaf interface {
                type union {
                  type jt:interface-unit;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Switch traffic to the specified interface by-passing switching lookup - (Ingress only)";
              }
    
              leaf gbp-src-tag {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 65535";
                  }
                }
                description "Set GBP source tag";
              }
            }  // container then
          }  // list term
        }  // grouping es_filter
    
        grouping ethernet-switching-type {
          description
            "Ethernet switching family";
          uses apply-advanced;
    
          leaf port-mode {
            type enumeration {
              enum "access" {
                value 0;
                description
                  "Interface mode is access";
              }
              enum "tagged-access" {
                value 1;
                description
                  "Interface mode is tagged-access";
              }
              enum "trunk" {
                value 2;
                description
                  "Interface mode is trunk";
              }
            }
            description "Type of port mode";
          }
    
          leaf interface-mode {
            type enumeration {
              enum "access" {
                junos:must "((!("interfaces ${interface} vlan-tagging") && (!("interfaces ${interface} flexible-vlan-tagging") && (!("interfaces ${interface} stacked-vlan-tagging") && !("interfaces ${interface} encapsulation extended-vlan-bridge")))))";
                junos:must-message "interface-mode access is allowed only for untagged interfaces, also not allowed with flexible-vlan-tagging and extended-vlan-bridge";
                value 0;
                description
                  "Interface mode is access";
              }
              enum "trunk" {
                junos:must "((!(("protocols dot1x authenticator interface ${interface}.${unit}" || "protocols dot1x supplicant interface ${interface}.${unit}")) || ("interfaces ${interface} native-vlan-id" && !("interfaces ${interface} flexible-vlan-tagging"))))";
                junos:must-message "Must configure native-vlan-id but no flexible-vlan-tagging for dot1x enabled port";
                junos:must "(!("interfaces ${interface} encapsulation extended-vlan-bridge"))";
                junos:must-message "interface-mode is not allowed for extended-vlan-bridge";
                value 1;
                description
                  "Interface mode is trunk";
              }
            }
            default "access";
            description "Type of interface mode";
          }
    
          leaf inter-switch-link {
            junos:must "(".. interface-mode trunk")";
            junos:must-message "'Inter switch link' is supported only under trunk interface mode";
            type empty;
            description
              "PVLAN inter switch link";
          }
    
          leaf reflective-relay {
            junos:must "(".. port-mode tagged-access")";
            junos:must-message "Reflective relay is supported only on tagged-access port";
            type empty;
            description
              "Reflective-relay mode for this interface";
          }
    
          choice vlan_choice_list {
            container vlan {
              description
                "Virtual LAN parameters";
              uses apply-advanced;
    
              leaf-list members {
                type string;
                ordered-by user;
                description
                  "Membership for this interface (name or id)";
              }
            }  // container vlan
            container inner-vlan {
              description
                "Trunk mode vlan membership for this interface";
              uses apply-advanced;
    
              leaf-list members {
                type string;
                ordered-by user;
                description
                  "Membership for this interface (name or id)";
              }
            }  // container inner-vlan
            leaf-list inner-vlan-id-list {
              junos:must "((!(".. .. .. vlan-tags inner") && !(".. .. .. vlan-tags inner-range")))";
              junos:must-message "'inner-vlan-id-list' cannot be used on interface with vlan-tags inner or inner-range configured";
              junos:must "((".. .. .. vlan-id" || ".. .. .. vlan-tags"))";
              junos:must-message "'inner-vlan-id-list' can be used only on interface with vlan-id/vlan-tags";
              junos:must "("interfaces ${interface} flexible-vlan-tagging")";
              junos:must-message "'inner-vlan-id-list' is supported only on flexible-vlan-tagging mode";
              junos:must "(".. interface-mode trunk")";
              junos:must-message "'inner-vlan-id-list' statement supported only under trunk interface mode";
              type jt:vlan-range;
              description
                "Trunk mode VLAN membership for this interface based on inner VLAN tag";
            }
          }  // choice vlan_choice_list
    
          leaf vlan-auto-sense {
            junos:must "(".. interface-mode trunk")";
            junos:must-message "vlan-auto-sense can be enabled only on trunk ports";
            type empty;
            description
              "Enable VLAN auto sense on this interface";
          }
    
          leaf bridge-domain-type {
            type enumeration {
              enum "svlan" {
                junos:must "(".. isid-list all-service-groups")";
                junos:must-message "bridge-domain-type SVLAN is allowed only for ISID tagged interfaces";
                junos:must "(".. interface-mode trunk")";
                junos:must-message "bridge-domain-type SVLAN is allowed only for trunk interfaces";
                value 0;
                description
                  "Bridge domain type SVLAN";
              }
              enum "bvlan" {
                junos:must "(".. isid-list all")";
                junos:must-message "bridge-domain-type BVLAN is allowed only for ISID tagged interfaces";
                junos:must "(".. interface-mode trunk")";
                junos:must-message "bridge-domain-type BVLAN is allowed only for trunk interfaces";
                value 1;
                description
                  "Bridge domain type BVLAN";
              }
            }
            description "Bridge domain type";
          }
    
          container vlan-rewrite {
            junos:must "((".. inner-vlan-id-list" || ".. vlan members"))";
            junos:must-message "'vlan-rewrite' statement can be used only with 'vlan members' or inner-vlan-id-list configured";
            junos:must "(".. interface-mode trunk")";
            junos:must-message "'vlan-rewrite' statement supported only under trunk interface mode";
            description
              "Specify VLAN translation";
            uses apply-advanced;
    
            list translate {
              key "name";
              ordered-by user;
              description
                "Translate incoming VLAN tag";
              leaf name {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 4094";
                  }
                }
                description
                  "Specify the incoming VLAN tag";
              }
    
              leaf to-vlan-id {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 4094";
                  }
                }
                description
                  "Specify the bridge-domain VLAN-ID";
              }
            }  // list translate
          }  // container vlan-rewrite
    
          leaf native-vlan-id {
            type string;
            description
              "Untagged packets on a trunk/tagged-access interface belong to this vlan";
          }
    
          choice isid_list {
            leaf isid-list {
              type enumeration {
                enum "all-service-groups" {
                  junos:must "(".. interface-mode trunk")";
                  junos:must-message "'all-service-groups' statement supported only under trunk interface mode";
                  value 0;
                  description
                    "Map all ISIDs specified under the service-groups";
                }
                enum "all" {
                  junos:must "(".. interface-mode trunk")";
                  junos:must-message "'all' statement supported only under trunk interface mode";
                  value 1;
                  description "Map all ISIDs";
                }
              }
              description
                "Specify the ISID list";
            }
          }  // choice isid_list
    
          leaf core-facing {
            type empty;
            description
              "Interface is core facing";
          }
    
          container filter {
            description "Packet filtering";
            uses apply-advanced;
    
            leaf input {
              type string;
              description
                "Name of filter applied to received packets";
            }
    
            leaf input-precedence {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 255";
                }
              }
              description
                "Precedence of the filter";
            }
    
            leaf-list input-list {
              type string;
              ordered-by user;
              description
                "List of filter modules applied to received packets ";
            }
    
            leaf output {
              type string;
              description
                "Name of filter applied to transmitted packets";
            }
    
            leaf output-precedence {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 255";
                }
              }
              description
                "Precedence of the filter";
            }
    
            leaf-list output-list {
              type string;
              ordered-by user;
              description
                "List of filter modules applied to transmitted packets ";
            }
    
            container adf {
              description
                "Ascend Data Filter definition";
              uses apply-advanced;
    
              list rule {
                key "name";
                ordered-by user;
                description "Set of ADF rules";
                leaf name {
                  type string;
                  description
                    "Value for a single rule";
                }
    
                uses apply-advanced;
              }  // list rule
    
              leaf counter {
                type empty;
                description
                  "Add a counter to each rule";
              }
    
              leaf input-precedence {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 255";
                  }
                }
                description
                  "Precedence of the input rules";
              }
    
              leaf not-mandatory {
                type empty;
                description
                  "No errors will be reported if no rules are present";
              }
    
              leaf output-precedence {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 255";
                  }
                }
                description
                  "Precedence of the output rules";
              }
            }  // container adf
    
            leaf group {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 255";
                }
              }
              description
                "Group to which interface belongs";
            }
          }  // container filter
    
          container storm-control {
            description
              "Storm control profile name to bind";
            uses apply-advanced;
    
            leaf profile-name {
              junos:must "("forwarding-options storm-control-profiles $$")";
              junos:must-message "Storm profile name must be defined in the [edit forwarding-options storm-control-profiles] hierarchy";
              type string;
              description "Profile name";
            }
          }  // container storm-control
    
          container recovery-timeout {
            description
              "Recovery timeout for this interface";
            leaf time-in-seconds {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "10 .. 3600";
                }
              }
              units "seconds";
            }
          }  // container recovery-timeout
        }  // grouping ethernet-switching-type
    
        grouping ethernet_policer {
          description "Define a policer";
          uses apply-advanced;
    
          choice bandwidth {
            leaf bandwidth-limit {
              type string;
              units "bits per second";
              description "Bandwidth limit";
            }
          }  // choice bandwidth
    
          leaf burst-size-limit {
            type string;
            units "bytes";
            description "Burst size limit";
          }
        }  // grouping ethernet_policer
    
        grouping ett-attributes {
          description
            "Transport ethernet configuration attributes";
          uses apply-advanced;
    
          leaf rate {
            type enumeration {
              enum "100ge" {
                value 0;
                description
                  "100 gigabit ethernet";
              }
            }
            description
              "Ethernet client signal rate";
          }
        }  // grouping ett-attributes
    
        grouping fibre-channel-type {
          description
            "Fibre Channel switching family";
          uses apply-advanced;
    
          leaf port-mode {
            type enumeration {
              enum "f-port" {
                value 0;
                description "Fabric port";
              }
              enum "e-port" {
                value 1;
                description "Inter-switch port";
              }
              enum "np-port" {
                value 2;
                description "Proxy node port";
              }
              enum "auto" {
                value 3;
                description
                  "Interface mode (F/E) is determined at runtime";
              }
            }
            description "Port mode";
          }
    
          leaf no-npiv {
            junos:must "((".. port-mode f-port" || (".. port-mode auto" || !(".. port-mode"))))";
            junos:must-message "Interface must be f-port or auto to disable NPIV";
            type empty;
            description "Disable NPIV";
          }
    
          container fc-fabric {
            description
              "Virtual fabric parameters";
            uses apply-advanced;
    
            leaf-list members {
              type string;
              ordered-by user;
              description
                "Virtual Fabric Membership for this interface (name or id)";
            }
          }  // container fc-fabric
    
          leaf native-fabric {
            type string {
              junos:posix-pattern "^([[:alpha:]][[:alnum:]_.-]+)|^([1-9][0-9]{0,2}|[1-3][0-9]{3}|40[0-8][0-9]|409[0-4])$";
              junos:pattern-message "Must be a valid FC fabric name or ID";
            }
            description
              "FC frames with no virtual fabric header on a interface belong to this fabric";
          }
        }  // grouping fibre-channel-type
    
        grouping firewall_addr6_object {
          leaf name {
            type jt:ipv6prefix;
            description "Prefix to match";
          }
    
          leaf except {
            type empty;
            description
              "Match address not in this prefix";
          }
        }  // grouping firewall_addr6_object
    
        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_flexible_match {
          description "Define a flexible match";
          leaf name {
            type string {
              junos:posix-pattern "!^((__.*)|(.{65,}))$";
              junos:pattern-message "Must be a non-reserved string of 64 characters or less";
            }
            description
              "Flex match template name";
          }
    
          uses apply-advanced;
    
          leaf match-start {
            type enumeration {
              enum "layer-2" {
                value 0;
                description
                  "Layer-2 match start";
              }
              enum "layer-3" {
                value 1;
                description
                  "Layer-3 match start";
              }
              enum "layer-4" {
                value 2;
                description
                  "Layer-4 match start";
              }
              enum "payload" {
                value 3;
                description
                  "Payload match start";
              }
            }
            description
              "Start point to match in packet";
          }
    
          leaf byte-offset {
            type union {
              type uint32;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description
              "Byte offset after the match start point";
          }
    
          leaf bit-offset {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 7";
              }
            }
            description
              "Bit offset after the (match-start + byte) offset";
          }
    
          leaf bit-length {
            type union {
              type uint32;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description
              "Length of integer input (1..32 bits), Optional length of string input (1..128 bits)";
          }
        }  // grouping firewall_flexible_match
    
        grouping firewall_hierpolicer {
          description
            "Define a hierarchical policer";
          leaf name {
            type string {
              junos:posix-pattern "!^((__.*)|(.{65,}))$";
              junos:pattern-message "Must be a non-reserved string of 64 characters or less";
            }
            description
              "Hierarchical Policer name";
          }
    
          choice sharing {
            leaf logical-interface-policer {
              type empty;
              description
                "Hierarchical policer is a logical interface policer";
            }
            leaf physical-interface-policer {
              type empty;
              description
                "Hierarchical policer is a physical interface policer";
            }
          }  // choice sharing
    
          leaf shared-bandwidth-policer {
            type empty;
            description
              "Share policer bandwidth among bundle links";
          }
    
          leaf filter-specific {
            type empty;
            description
              "Hierarchical policer is filter-specific";
          }
    
          container aggregate {
            presence "enable aggregate";
            description "Aggregate definition";
            uses hierarchical-policer-aggregate-bucket;
          }  // container aggregate
    
          container premium {
            presence "enable premium";
            description "Premium definition";
            uses hierarchical-policer-premium-bucket;
          }  // container premium
        }  // grouping firewall_hierpolicer
    
        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 firewall_policer {
          description "Define a policer";
          leaf name {
            type string {
              junos:posix-pattern "!^((__.*)|(.{65,}))$";
              junos:pattern-message "Must be a non-reserved string of 64 characters or less";
            }
            description "Policer name";
          }
    
          uses apply-advanced;
    
          leaf filter-specific {
            type empty;
            description
              "Policer is filter-specific";
          }
    
          leaf logical-interface-policer {
            type empty;
            description
              "Policer is logical interface policer";
          }
    
          leaf physical-interface-policer {
            type empty;
            description
              "Policer is physical interface policer";
          }
    
          leaf logical-bandwidth-policer {
            type empty;
            description
              "Policer uses logical interface bandwidth";
          }
    
          leaf shared-bandwidth-policer {
            type empty;
            description
              "Share policer bandwidth among bundle links";
          }
    
          choice exceeding {
            container if-exceeding {
              presence "enable if-exceeding";
              description "Define rate limits";
              uses apply-advanced;
    
              choice bandwidth {
                leaf bandwidth-limit {
                  type string;
                  units "bits per second";
                  description "Bandwidth limit";
                }
                leaf bandwidth-percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  units "percent";
                  description
                    "Bandwidth limit in percentage";
                }
              }  // choice bandwidth
    
              leaf burst-size-limit {
                type string;
                units "bytes";
                description "Burst size limit";
              }
            }  // container if-exceeding
    
            case case_2 {
            }  // case case_2
          }  // choice exceeding
    
          container counter {
            description
              "Define policer counter configuration";
            uses apply-advanced;
    
            leaf counter-id {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 2";
                }
              }
              description "Counter Index";
            }
          }  // container counter
    
          container then {
            description
              "Action to take if the rate limits are exceeded";
            uses apply-advanced;
    
            leaf discard {
              type empty;
              description "Discard the packet";
            }
    
            leaf loss-priority {
              type enumeration {
                enum "low" {
                  value 0;
                  description
                    "Loss priority low";
                }
                enum "high" {
                  value 1;
                  description
                    "Loss priority high";
                }
                enum "medium-low" {
                  value 2;
                  description
                    "Loss priority medium-low";
                }
                enum "medium-high" {
                  value 3;
                  description
                    "Loss priority medium-high";
                }
              }
              description
                "Packet's loss priority";
            }
    
            leaf forwarding-class {
              type string {
                junos:posix-pattern "^.{1,64}$";
                junos:pattern-message "Must be string of 64 characters or less";
              }
              description
                "Classify packet to forwarding class";
            }
          }  // container then
        }  // grouping firewall_policer
    
        grouping firewall_prefix_list {
          leaf name {
            type string;
            description "Prefix list to match";
          }
    
          leaf except {
            type empty;
            description
              "Match addresses not in this prefix list";
          }
        }  // grouping firewall_prefix_list
    
        grouping flow-interface-group {
          leaf group {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 255";
              }
            }
            description
              "Interface group ID to match traffic";
          }
    
          leaf exclude {
            type empty;
            description
              "Don't apply flow-spec filter to traffic on this group";
          }
        }  // grouping flow-interface-group
    
        grouping flow-route-inet6 {
          leaf name {
            type string;
          }
    
          uses apply-advanced;
    
          leaf no-install {
            type empty;
            description
              "Don't install firewall filter in forwarding";
          }
    
          container match {
            description "Flow definition";
            uses flow-route-qualifier-inet6;
          }  // container match
    
          container then {
            description
              "Actions to take for this flow";
            uses flow-route-op;
          }  // container then
        }  // grouping flow-route-inet6
    
        grouping flow-route-op {
          uses apply-advanced;
    
          leaf community {
            type string;
            description "Name of BGP community";
          }
    
          choice flow_op_action {
            leaf accept {
              type empty;
              description
                "Allow traffic through";
            }
            leaf discard {
              type empty;
              description
                "Discard all traffic for this flow";
            }
            leaf rate-limit {
              type string;
              description
                "Rate in bits/sec to limit the flow traffic";
            }
          }  // choice flow_op_action
    
          leaf routing-instance {
            type string {
              junos:posix-pattern "^[a-z]+:[0-9.]+L?:[0-9]+$";
              junos:pattern-message "Use format 'target:x:y' where 'x' is an AS number followed by an optional 'L' (To indicate 4 byte AS), or an IP address and 'y' is a number. e.g. target:123456L:100";
            }
            description
              "Redirect to instance identified via Route Target community";
          }
    
          leaf sample {
            type empty;
            description
              "Sample traffic that matches this flow";
          }
    
          leaf mark {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 63";
              }
            }
            description
              "Set DSCP value for traffic that matches this flow";
          }
    
          leaf next-term {
            type empty;
            description
              "Continue the filter evaluation after matching this flow";
          }
    
          choice redirect_op_action {
            leaf-list redirect {
              type jt:ipaddr;
              ordered-by user;
              description
                "Redirect(Tunnel) this flow's traffic to given next-hop address";
            }
          }  // choice redirect_op_action
        }  // grouping flow-route-op
    
        grouping flow-route-qualifier-inet6 {
          uses apply-advanced;
    
          leaf-list protocol {
            type string;
            ordered-by user;
            description "IP protocol value";
          }
    
          leaf-list port {
            type string;
            ordered-by user;
          }
    
          leaf-list destination-port {
            type string;
            ordered-by user;
          }
    
          leaf-list source-port {
            type string;
            ordered-by user;
          }
    
          leaf-list tcp-flags {
            type string;
            ordered-by user;
            description "TCP flags";
          }
    
          leaf-list packet-length {
            type jt:policy-algebra;
            ordered-by user;
            description
              "Packet length (0-65535)";
          }
    
          leaf-list dscp {
            type jt:policy-algebra;
            ordered-by user;
            description
              "Differentiated Services (DiffServ) code point (DSCP) (0-63)";
          }
    
          leaf-list fragment {
            type enumeration {
              enum "dont-fragment" {
                value 0;
                description
                  "Don't Fragment flag is set";
              }
              enum "not-a-fragment" {
                value 1;
                description "Not a fragment";
              }
              enum "is-fragment" {
                value 2;
                description "Fragmented packet";
              }
              enum "first-fragment" {
                value 3;
                description "First fragment";
              }
              enum "last-fragment" {
                value 4;
                description "Last fragment";
              }
            }
            ordered-by user;
          }
    
          container destination {
            presence "enable destination";
            description
              "Destination prefix for this traffic flow";
            uses flow-prefix-with-offset;
          }  // container destination
    
          container source {
            presence "enable source";
            description
              "Source prefix for this traffic flow";
            uses flow-prefix-with-offset;
          }  // container source
    
          leaf-list icmp6-type {
            type string;
            ordered-by user;
            description "ICMP message type";
          }
    
          leaf-list icmp6-code {
            type string;
            ordered-by user;
            description "ICMP message code";
          }
    
          leaf-list flow-label {
            type jt:policy-algebra;
            ordered-by user;
            description "Flow-label (0-1048575)";
          }
        }  // grouping flow-route-qualifier-inet6
    
        grouping flow-prefix-with-offset {
          leaf prefix {
            type jt:ipv6prefix;
          }
    
          leaf prefix-offset {
            type union {
              type uint32;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description
              "Offset from where prefix match will start";
          }
        }  // grouping flow-prefix-with-offset
    
        grouping flow-validation {
          uses apply-advanced;
    
          container traceoptions {
            description "Trace options";
            uses flow-dep-traceoptions;
          }  // container traceoptions
        }  // grouping flow-validation
    
        grouping flow-dep-traceoptions {
          uses apply-advanced;
    
          container file {
            description "Trace file options";
            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 replace {
              type empty;
              status deprecated;
              description
                "Replace trace file rather than appending to it";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "10";
              description
                "Maximum number of trace files";
            }
    
            leaf no-stamp {
              type empty;
              status deprecated;
              description
                "Do not timestamp trace file";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
          }  // container file
    
          list flag {
            key "name";
            ordered-by user;
            description "Tracing parameters";
            leaf name {
              type enumeration {
                enum "resolution" {
                  value 0;
                  description
                    "Trace flow to unicast route resolution";
                }
                enum "flash" {
                  value 1;
                  description
                    "Trace flash processing";
                }
                enum "route" {
                  value 2;
                  description
                    "Trace routing information";
                }
                enum "normal" {
                  value 3;
                  description
                    "Trace normal events";
                }
                enum "general" {
                  value 4;
                  description
                    "Trace general events";
                }
                enum "state" {
                  value 5;
                  description
                    "Trace state transitions";
                }
                enum "policy" {
                  value 6;
                  description
                    "Trace policy processing";
                }
                enum "task" {
                  value 7;
                  description
                    "Trace routing protocol task processing";
                }
                enum "timer" {
                  value 8;
                  description
                    "Trace routing protocol timer processing";
                }
                enum "all" {
                  value 9;
                  description "Trace everything";
                }
              }
            }
    
            leaf send {
              type empty;
              description
                "Trace transmitted packets";
            }
    
            leaf receive {
              type empty;
              description
                "Trace received packets";
            }
    
            leaf detail {
              type empty;
              description
                "Trace detailed information";
            }
    
            leaf disable {
              type empty;
              description
                "Disable this trace flag";
            }
    
            container filter {
              presence "enable filter";
              description
                "Filter to apply to tracing";
              leaf match-on {
                type enumeration {
                  enum "prefix" {
                    value 0;
                    description
                      "Filter based on prefix";
                  }
                  enum "route-attribute" {
                    value 1;
                    description
                      "Filter based on route attributes";
                  }
                }
                description
                  "Argument on which to match";
              }
    
              leaf-list policy {
                type jt:policy-algebra;
                ordered-by user;
                description "Filter policy";
              }
            }  // container filter
          }  // list flag
        }  // grouping flow-dep-traceoptions
    
        grouping hierarchical-policer-aggregate-bucket {
          uses apply-advanced;
    
          choice hp-aggregate-exceeding {
            container if-exceeding {
              presence "enable if-exceeding";
              description "Define rate limits";
              uses apply-advanced;
    
              choice bandwidth {
                leaf bandwidth-limit {
                  type string;
                  units "bits per second";
                  description "Bandwidth limit";
                }
              }  // choice bandwidth
    
              leaf burst-size-limit {
                type string;
                units "bytes";
                description "Burst size limit";
              }
            }  // container if-exceeding
    
            case case_2 {
            }  // case case_2
          }  // choice hp-aggregate-exceeding
    
          container then {
            description
              "Action to take if the rate limits are exceeded";
            uses apply-advanced;
    
            choice hierarchical-policer-action {
              leaf discard {
                type empty;
                description "Discard the packet";
              }
    
              case case_2 {
              }  // case case_2
    
              case case_3 {
              }  // case case_3
            }  // choice hierarchical-policer-action
          }  // container then
        }  // grouping hierarchical-policer-aggregate-bucket
    
        grouping hierarchical-policer-premium-bucket {
          uses apply-advanced;
    
          choice hp-premium-exceeding {
            container if-exceeding {
              presence "enable if-exceeding";
              description "Define rate limits";
              uses apply-advanced;
    
              choice bandwidth {
                leaf bandwidth-limit {
                  type string;
                  units "bits per second";
                  description "Bandwidth limit";
                }
              }  // choice bandwidth
    
              leaf burst-size-limit {
                type string;
                units "bytes";
                description "Burst size limit";
              }
            }  // container if-exceeding
    
            case case_2 {
            }  // case case_2
          }  // choice hp-premium-exceeding
    
          container then {
            description
              "Action to take if the rate limits are exceeded";
            uses apply-advanced;
    
            choice hierarchical-policer-action {
              leaf discard {
                type empty;
                description "Discard the packet";
              }
            }  // choice hierarchical-policer-action
          }  // container then
        }  // grouping hierarchical-policer-premium-bucket
    
        grouping inet6_filter {
          description
            "Define an IPv6 firewall 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;
    
          leaf-list accounting-profile {
            junos:must "("accounting-options filter-profile")";
            junos:must-message "referenced accounting profile must be defined";
            type string;
            ordered-by user;
            description
              "Accounting profile name";
          }
    
          leaf interface-specific {
            type empty;
            description
              "Defined counters are interface specific";
          }
    
          leaf enhanced-mode {
            junos:must "(!(".. enhanced-mode-override"))";
            junos:must-message "Cannot configure filter for both enhanced-mode and enhanced-mode-override";
            type empty;
            description
              "Define filter for chassis network-services enhanced mode";
          }
    
          leaf physical-interface-filter {
            type empty;
            description
              "Filter is physical interface filter";
          }
    
          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;
    
            leaf filter {
              junos:must "("firewall family inet6 filter $$")";
              junos:must-message "Referenced filter is not defined";
              junos:must "((!(".. from") && !(".. then")))";
              junos:must-message "Not compatible with 'from or then'";
              type string {
                junos:posix-pattern "!^((__.*)|(.{65,}))$";
                junos:pattern-message "Must be a non-reserved string of 64 characters or less";
              }
              description "Filter to include";
            }
    
            container from {
              description
                "Define match criteria";
              uses apply-advanced;
    
              choice destination-class_choice {
                leaf-list destination-class {
                  type string;
                  ordered-by user;
                  description "String name";
                }
                leaf-list destination-class-except {
                  type string;
                  ordered-by user;
                  description "String name";
                }
              }  // choice destination-class_choice
    
              choice source-class_choice {
                leaf-list source-class {
                  type string;
                  ordered-by user;
                  description "String name";
                }
                leaf-list source-class-except {
                  type string;
                  ordered-by user;
                  description "String name";
                }
              }  // choice source-class_choice
    
              choice interface-group_choice {
                leaf-list interface-group {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
                leaf-list interface-group-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice interface-group_choice
    
              list source-address {
                key "name";
                ordered-by user;
                description
                  "Match  source address";
                uses firewall_addr6_object;
              }  // list source-address
    
              list destination-address {
                key "name";
                ordered-by user;
                description
                  "Match destination address";
                uses firewall_addr6_object;
              }  // list destination-address
    
              list address {
                key "name";
                ordered-by user;
                description
                  "Match source or destination address";
                uses firewall_addr6_object;
              }  // list address
    
              list source-prefix-list {
                key "name";
                ordered-by user;
                description
                  "Match source prefixes in named list";
                uses firewall_prefix_list;
              }  // list source-prefix-list
    
              list destination-prefix-list {
                key "name";
                ordered-by user;
                description
                  "Match destination prefixes in named list";
                uses firewall_prefix_list;
              }  // list destination-prefix-list
    
              list prefix-list {
                key "name";
                ordered-by user;
                description
                  "Match source or destination prefixes in named list";
                uses firewall_prefix_list;
              }  // list prefix-list
    
              choice next-header_choice {
                leaf-list next-header {
                  type string;
                  ordered-by user;
                }
                leaf-list next-header-except {
                  type string;
                  ordered-by user;
                }
              }  // choice next-header_choice
    
              choice payload-protocol_choice {
                case case_1 {
                }  // case case_1
                leaf-list payload-protocol-except {
                  type string;
                  ordered-by user;
                }
              }  // choice payload-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 port_choice {
                leaf-list port {
                  type string;
                  ordered-by user;
                }
                leaf-list port-except {
                  type string;
                  ordered-by user;
                }
              }  // choice port_choice
    
              choice extension-header_choice {
                case case_1 {
                }  // case case_1
                leaf-list extension-header-except {
                  type string;
                  ordered-by user;
                }
              }  // choice extension-header_choice
    
              choice packet-length_choice {
                leaf-list packet-length {
                  type string {
                    junos:posix-pattern "^([0-9]{1,4}|[1-5][0-9][0-9][0-9][0-9]|[6][0-4][0-9][0-9][0-9]|65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5]|0x[0-f][0-f][0-f][0-f]|0x[0-f]|0x[0-f][0-f]|0x[0-f][0-f][0-f])(-([0-9]{1,4}|[1-5][0-9][0-9][0-9][0-9]|[6][0-4][0-9][0-9][0-9]|65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5]|0x[0-f][0-f][0-f][0-f]|0x[0-f]|0x[0-f][0-f]|0x[0-f][0-f][0-f]))?$";
                    junos:pattern-message "Must be a numeric value or a range between 0-65535";
                  }
                  ordered-by user;
                  description "Range of values";
                }
                leaf-list packet-length-except {
                  type string {
                    junos:posix-pattern "^([0-9]{1,4}|[1-5][0-9][0-9][0-9][0-9]|[6][0-4][0-9][0-9][0-9]|65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5]|0x[0-f][0-f][0-f][0-f]|0x[0-f]|0x[0-f][0-f]|0x[0-f][0-f][0-f])(-([0-9]{1,4}|[1-5][0-9][0-9][0-9][0-9]|[6][0-4][0-9][0-9][0-9]|65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5]|0x[0-f][0-f][0-f][0-f]|0x[0-f]|0x[0-f][0-f]|0x[0-f][0-f][0-f]))?$";
                    junos:pattern-message "Must be a numeric value or a range between 0-65535";
                  }
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice packet-length_choice
    
              choice traffic-class_choice {
                leaf-list traffic-class {
                  type string;
                  ordered-by user;
                }
                leaf-list traffic-class-except {
                  type string;
                  ordered-by user;
                }
              }  // choice traffic-class_choice
    
              choice icmp-type_choice {
                leaf-list icmp-type {
                  type string;
                  ordered-by user;
                }
                leaf-list icmp-type-except {
                  type string;
                  ordered-by user;
                }
              }  // choice icmp-type_choice
    
              choice icmp-code_choice {
                leaf-list icmp-code {
                  type string;
                  ordered-by user;
                }
                leaf-list icmp-code-except {
                  type string;
                  ordered-by user;
                }
              }  // choice icmp-code_choice
    
              leaf tcp-initial {
                junos:must "((".. next-header tcp" || (".. next-header 6" || ".. payload-protocol tcp")))";
                junos:must-message "next-header tcp or next-header 6 or payload-protocol tcp must be defined in the same clause";
                type empty;
                description
                  "Match initial packet of a TCP connection";
              }
    
              leaf tcp-established {
                junos:must "((".. next-header tcp" || (".. next-header 6" || ".. payload-protocol tcp")))";
                junos:must-message "next-header tcp or next-header 6 or payload-protocol tcp must be defined in the same clause";
                type empty;
                description
                  "Match packet of an established TCP connection";
              }
    
              leaf tcp-flags {
                junos:must "((".. next-header tcp" || (".. next-header 6" || ".. payload-protocol tcp")))";
                junos:must-message "next-header tcp or next-header 6 or payload-protocol tcp must be defined in the same clause";
                type string;
                description
                  "Match TCP flags (in symbolic or hex formats)";
              }
    
              list interface {
                key "name";
                ordered-by user;
                description
                  "Match interface name";
                uses match_interface_object;
              }  // list interface
    
              choice forwarding-class_choice {
                leaf-list forwarding-class {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  ordered-by user;
                  description "String name";
                }
                leaf-list forwarding-class-except {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  ordered-by user;
                  description "String name";
                }
              }  // choice forwarding-class_choice
    
              choice loss-priority_choice {
                leaf-list loss-priority {
                  type enumeration {
                    enum "low" {
                      value 0;
                      description
                        "Loss priority low";
                    }
                    enum "high" {
                      value 1;
                      description
                        "Loss priority high";
                    }
                    enum "medium-low" {
                      value 2;
                      description
                        "Loss priority medium-low";
                    }
                    enum "medium-high" {
                      value 3;
                      description
                        "Loss priority medium-high";
                    }
                  }
                  ordered-by user;
                }
                leaf-list loss-priority-except {
                  type enumeration {
                    enum "low" {
                      value 0;
                      description
                        "Loss priority low";
                    }
                    enum "high" {
                      value 1;
                      description
                        "Loss priority high";
                    }
                    enum "medium-low" {
                      value 2;
                      description
                        "Loss priority medium-low";
                    }
                    enum "medium-high" {
                      value 3;
                      description
                        "Loss priority medium-high";
                    }
                  }
                  ordered-by user;
                }
              }  // choice loss-priority_choice
    
              choice hop-limit_choice {
                leaf-list hop-limit {
                  type string {
                    junos:posix-pattern "^([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]|0x[0-f]|0x[0-f][0-f])(-([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]|0x[0-f]|0x[0-f][0-f]))?$";
                    junos:pattern-message "Must be a numerical hop-limit value or range between 0-255";
                  }
                  ordered-by user;
                  description "Range of values";
                }
                leaf-list hop-limit-except {
                  type string {
                    junos:posix-pattern "^([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]|0x[0-f]|0x[0-f][0-f])(-([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]|0x[0-f]|0x[0-f][0-f]))?$";
                    junos:pattern-message "Must be a numerical hop-limit value or range between 0-255";
                  }
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice hop-limit_choice
    
              choice gre-key_choice {
                case case_1 {
                }  // case case_1
                leaf-list gre-key-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice gre-key_choice
    
              choice policy-map_choice {
                leaf-list policy-map {
                  junos:must "("class-of-service policy-map $$")";
                  junos:must-message "Undefined policy-map instance";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                    length "1 .. 64";
                  }
                  ordered-by user;
                  description "String name";
                }
                leaf-list policy-map-except {
                  junos:must "("class-of-service policy-map $$")";
                  junos:must-message "Undefined policy-map instance";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                    length "1 .. 64";
                  }
                  ordered-by user;
                  description "String name";
                }
              }  // choice policy-map_choice
            }  // container from
    
            container then {
              description
                "Action to take if the 'from' condition is matched";
              uses apply-advanced;
    
              choice policer-choice {
                leaf policer {
                  junos:must "(!("firewall policer $$ aggregate"))";
                  junos:must-message "Cannot attach a aggregate policer to filter";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Name of policer to use to rate-limit traffic";
                }
                container three-color-policer {
                  description
                    "Police the packet using a three-color-policer";
                  uses apply-advanced;
    
                  choice type-choice {
                    leaf single-rate {
                      junos:must "("firewall three-color-policer $$ single-rate")";
                      junos:must-message "Referenced single-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of single-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf single-packet-rate {
                      junos:must "("firewall three-color-policer $$ single-packet-rate")";
                      junos:must-message "Referenced single-packet-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of single-packet-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf two-rate {
                      junos:must "("firewall three-color-policer $$ two-rate")";
                      junos:must-message "Referenced two-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of two-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf two-packet-rate {
                      junos:must "("firewall three-color-policer $$ two-packet-rate")";
                      junos:must-message "Referenced two-packet-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of two-packet-rate three-color policer to use to rate-limit traffic";
                    }
                  }  // choice type-choice
                }  // container three-color-policer
                leaf hierarchical-policer {
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Name of hierarchical policer to use to rate-limit traffic";
                }
              }  // choice policer-choice
    
              choice policy-map-choice {
                leaf clear-policy-map {
                  type empty;
                  description
                    "Clear the policy marking";
                }
                leaf policy-map {
                  junos:must "("class-of-service policy-map $$")";
                  junos:must-message "referenced policy map must be defined";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Policy map action";
                }
              }  // choice policy-map-choice
    
              choice inet6cnt {
                case case_1 {
                }  // case case_1
                leaf count {
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Count the packet in the named counter";
                }
              }  // choice inet6cnt
    
              leaf service-accounting {
                junos:must "(!(".. service-accounting-deferred"))";
                junos:must-message "'service-accounting-deferred' and 'service-accounting' cannot coexist";
                junos:must "(!(".. count"))";
                junos:must-message "'count' and 'service-accounting' cannot coexist";
                type empty;
                description
                  "Count the packets for service accounting";
              }
    
              leaf service-accounting-deferred {
                junos:must "(!(".. service-accounting"))";
                junos:must-message "Cannot be both 'service-accounting' and 'service-accounting-deferred'";
                junos:must "(!(".. count"))";
                junos:must-message "'count' and 'service-accounting-deferred' cannot coexist";
                type empty;
                description
                  "Count the packets for deferred service accounting";
              }
    
              leaf log {
                type empty;
                description "Log the packet";
              }
    
              leaf syslog {
                type empty;
                description
                  "System log (syslog) information about the packet";
              }
    
              leaf packet-capture {
                type empty;
                description
                  "Enable packet capture for telemetry";
              }
    
              leaf port-mirror-instance {
                junos:must "("forwarding-options port-mirroring instance $$")";
                junos:must-message "Referenced port-mirroring instance does not exist";
                type string {
                  junos:posix-pattern "!^((__.*)|(.{65,}))$";
                  junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                }
                description
                  "Port-mirror the packet to specified instance";
              }
    
              leaf port-mirror {
                junos:must "(!(".. port-mirror-instance"))";
                junos:must-message "'port-mirror' and 'port-mirror-instance' are mutually exclusive";
                junos:must "("forwarding-options port-mirroring")";
                junos:must-message "Configure 'port-mirroring' under 'forwarding-options'";
                type empty;
                description
                  "Port-mirror the packet";
              }
    
              leaf analyzer {
                junos:must "("ethernet-switching-options analyzer $$")";
                junos:must-message "Named Analyzer must be set";
                type string {
                  junos:posix-pattern "!^((__.*)|(.{65,}))$";
                  junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                }
                description "Name of analyzer";
              }
    
              leaf loss-priority {
                type enumeration {
                  enum "low" {
                    value 0;
                    description
                      "Loss priority low";
                  }
                  enum "high" {
                    value 1;
                    description
                      "Loss priority high";
                  }
                  enum "medium-low" {
                    value 2;
                    description
                      "Loss priority medium-low";
                  }
                  enum "medium-high" {
                    value 3;
                    description
                      "Loss priority medium-high";
                  }
                }
                description
                  "Packet's loss priority";
              }
    
              leaf forwarding-class {
                type string {
                  junos:posix-pattern "^.{1,64}$";
                  junos:pattern-message "Must be string of 64 characters or less";
                }
                description
                  "Classify packet to forwarding class";
              }
    
              leaf traffic-class {
                type string;
                description
                  "Set traffic-class code point";
              }
    
              leaf skip-services {
                type empty;
                description "Skip the services";
              }
    
              leaf service-filter-hit {
                type empty;
                description
                  "Marked when packet processing by the current type of chained filters is done, the packet is directed to the next type of filters";
              }
    
              choice designation {
                case case_1 {
                }  // case case_1
    
                case case_2 {
                }  // case case_2
                leaf accept {
                  type empty;
                  description
                    "Accept the packet";
                }
                leaf discard {
                  type empty;
                  description
                    "Discard the packet";
                }
                leaf next {
                  type enumeration {
                    enum "term" {
                      value 0;
                      description
                        "Continue to next term in a filter";
                    }
                  }
                  description
                    "Continue to next term in a filter";
                }
    
                case case_6 {
                }  // case case_6
                list logical-system {
                  key "logical-system-name";
                  max-elements 1;
                  ordered-by user;
                  description
                    "Packets are directed to specified logical system";
                  leaf logical-system-name {
                    type string {
                      junos:posix-pattern "^[a-zA-Z0-9_-]{1,63}$";
                      junos:pattern-message "Logical-system name is a string consisting of up to 63 letters, numbers, dashes and underscores";
                    }
                    description
                      "Name of logical system";
                  }
    
                  container routing-instance {
                    description
                      "Packets are directed to specified routing instance";
                    leaf routing-instance-name {
                      type string {
                        junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
                        junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
                      }
                      description
                        "Name of routing instance";
                    }
    
                    leaf topology {
                      type string {
                        junos:posix-pattern "!^((.*:.*)|(.{129,}))$";
                        junos:pattern-message "Must be a non-reserved string of 128 characters or less";
                      }
                      description
                        "Packets are directed to specified topology";
                    }
                  }  // container routing-instance
    
                  leaf topology {
                    type string {
                      junos:posix-pattern "!^((.*:.*)|(.{129,}))$";
                      junos:pattern-message "Must be a non-reserved string of 128 characters or less";
                    }
                    description
                      "Packets are directed to specified topology";
                  }
                }  // list logical-system
                container routing-instance {
                  description
                    "Packets are directed to specified routing instance";
                  leaf topology {
                    type string {
                      junos:posix-pattern "!^((.*:.*)|(.{129,}))$";
                      junos:pattern-message "Must be a non-reserved string of 128 characters or less";
                    }
                    description
                      "Packets are directed to specified topology";
                  }
                }  // container routing-instance
                leaf topology {
                  type string {
                    junos:posix-pattern "!^((.*:.*)|(.{129,}))$";
                    junos:pattern-message "Must be a non-reserved string of 128 characters or less";
                  }
                  description
                    "Packets are directed to specified topology";
                }
    
                case case_10 {
                }  // case case_10
    
                case case_11 {
                }  // case case_11
                container reject {
                  presence "enable reject";
                  description
                    "Reject the packet";
                  choice style {
                    leaf no-route {
                      type empty;
                      description
                        "Send ICMPv6 No Route message";
                    }
                    leaf administratively-prohibited {
                      type empty;
                      description
                        "Send ICMPv6 Administratively Prohibited message";
                    }
                    leaf beyond-scope {
                      type empty;
                      description
                        "Send ICMPv6 Beyond Scope of Source Address message";
                    }
                    leaf address-unreachable {
                      type empty;
                      description
                        "Send ICMPv6 Address Unreachable message";
                    }
                    leaf port-unreachable {
                      type empty;
                      description
                        "Send ICMPv6 Port Unreachable message";
                    }
                    leaf policy-failed {
                      type empty;
                      description
                        "Source address failed ingress/egress policy";
                    }
                    leaf reject-route {
                      type empty;
                      description
                        "Reject route to destination";
                    }
                    leaf tcp-reset {
                      type empty;
                      description
                        "Send TCP Reset message";
                    }
                    leaf network-unreachable {
                      type empty;
                      status deprecated;
                      description
                        "Send ICMPv4 Network Unreachable message";
                    }
                    leaf host-unreachable {
                      type empty;
                      status deprecated;
                      description
                        "Send ICMPv4 Host Unreachable message";
                    }
                    leaf protocol-unreachable {
                      type empty;
                      status deprecated;
                      description
                        "Send ICMPv4 Protocol Unreachable message";
                    }
                    leaf source-route-failed {
                      type empty;
                      status deprecated;
                      description
                        "Send ICMPv4 Source Route Failed message";
                    }
                    leaf network-unknown {
                      type empty;
                      status deprecated;
                      description
                        "Send ICMPv4 Network Unknown message";
                    }
                    leaf host-unknown {
                      type empty;
                      status deprecated;
                      description
                        "Send ICMPv4 Host Unknown message";
                    }
                    leaf source-host-isolated {
                      type empty;
                      status deprecated;
                      description
                        "Send ICMPv4 Source Host Isolated message";
                    }
                    leaf network-prohibited {
                      type empty;
                      status deprecated;
                      description
                        "Send ICMPv4 Network Prohibited message";
                    }
                    leaf host-prohibited {
                      type empty;
                      status deprecated;
                      description
                        "Send ICMPv4 Host Prohibited message";
                    }
                    leaf bad-network-tos {
                      type empty;
                      status deprecated;
                      description
                        "Send ICMPv4 Bad Network ToS message";
                    }
                    leaf bad-host-tos {
                      type empty;
                      status deprecated;
                      description
                        "Send ICMPv4 Bad Host ToS message";
                    }
                    leaf precedence-violation {
                      type empty;
                      status deprecated;
                      description
                        "Send ICMPv4 Precedence Violation message";
                    }
                    leaf precedence-cutoff {
                      type empty;
                      status deprecated;
                      description
                        "Send ICMPv4 Precedence Cutoff message";
                    }
                  }  // choice style
                }  // container reject
              }  // choice designation
            }  // container then
          }  // list term
        }  // grouping inet6_filter
    
        grouping inet6_fuf {
          leaf name {
            junos:must "(unique "firewall family <*> filter $$")";
            junos:must-message "Fast update filter can not have the same name as firewall family filter";
            type string {
              junos:posix-pattern "!^((__.*)|(.{65,}))$";
              junos:pattern-message "Must be a non-reserved string of 64 characters or less";
            }
            description
              "Name of fast update filter";
          }
    
          uses apply-advanced;
    
          leaf interface-specific {
            type empty;
            description
              "Defined counters are interface specific";
          }
    
          leaf-list match-order {
            type enumeration {
              enum "next-header" {
                value 0;
                description
                  "Include next header protocol in match set";
              }
              enum "payload-protocol" {
                value 1;
                description
                  "Include payload protocol in match set";
              }
              enum "source-address" {
                value 2;
                description
                  "Include source-address in match set";
              }
              enum "destination-address" {
                value 3;
                description
                  "Include destination-address in match set";
              }
              enum "source-port" {
                value 4;
                description
                  "Include source-port in match set";
              }
              enum "destination-port" {
                value 5;
                description
                  "Include destination-port in match set";
              }
              enum "traffic-class" {
                value 6;
                description
                  "Include traffic-class (DSCP) in match set";
              }
            }
            ordered-by user;
          }
    
          list term {
            key "name";
            ordered-by user;
            description
              "One or more firewall terms";
            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;
    
            leaf only-at-create {
              type empty;
              description
                "Add term only when filter is first created.";
            }
    
            container from {
              description "Match criteria";
              uses apply-advanced;
    
              container source-address {
                description
                  "Match source IP address";
                uses firewall_addr6_simple_object;
              }  // container source-address
    
              container destination-address {
                description
                  "Match destination IP address";
                uses firewall_addr6_simple_object;
              }  // container destination-address
    
              choice source-port_choice {
                container source-port {
                  description
                    "Match TCP/UDP source port";
                  uses match_simple_port_value;
                }  // container source-port
              }  // choice source-port_choice
    
              choice destination-port_choice {
                container destination-port {
                  description
                    "Match TCP/UDP destination port";
                  uses match_simple_port_value;
                }  // container destination-port
              }  // choice destination-port_choice
    
              choice next-header_choice {
                container next-header {
                  description
                    "Match next header protocol type";
                  uses match_simple_protocol_value;
                }  // container next-header
              }  // choice next-header_choice
    
              choice traffic-class_choice {
                container traffic-class {
                  description
                    "Match Differentiated Services (DiffServ) code point";
                  uses match_simple_dscp_value;
                }  // container traffic-class
              }  // choice traffic-class_choice
    
              leaf match-terms {
                type string;
                description
                  "Dynamically supplied list of match criteria";
              }
            }  // container from
    
            container then {
              description
                "Action to take if the 'from' condition is matched";
              uses apply-advanced;
    
              choice policer-choice {
                leaf policer {
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Name of policer to use to rate-limit traffic";
                }
              }  // choice policer-choice
    
              leaf count {
                type string {
                  junos:posix-pattern "!^((__.*)|(.{65,}))$";
                  junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                }
                description
                  "Count the packet in the named counter";
              }
    
              leaf service-accounting {
                junos:must "(!(".. count"))";
                junos:must-message "'count' and 'service-accounting' cannot coexist";
                type empty;
                description
                  "Count the packets for service accounting";
              }
    
              leaf log {
                type empty;
                description "Log the packet";
              }
    
              leaf port-mirror {
                type empty;
                description
                  "Port-mirror the packet";
              }
    
              leaf loss-priority {
                junos:must "(!(".. three-color-policer"))";
                junos:must-message "Configuring loss-priority is incompatible with configuring three-color-policer";
                type enumeration {
                  enum "low" {
                    value 0;
                    description
                      "Loss priority low";
                  }
                  enum "high" {
                    value 1;
                    description
                      "Loss priority high";
                  }
                  enum "medium-low" {
                    value 2;
                    description
                      "Loss priority medium-low";
                  }
                  enum "medium-high" {
                    value 3;
                    description
                      "Loss priority medium-high";
                  }
                }
                description
                  "Packet's loss priority";
              }
    
              leaf forwarding-class {
                type string {
                  junos:posix-pattern "^.{1,64}$";
                  junos:pattern-message "Must be string of 64 characters or less";
                }
                description
                  "Classify packet to forwarding class";
              }
    
              leaf action-terms {
                type string;
                description
                  "Dynamically supplied list of actions";
              }
    
              choice designation {
                leaf accept {
                  type empty;
                  description
                    "Accept the packet";
                }
                leaf discard {
                  type empty;
                  description
                    "Discard the packet";
                }
                container routing-instance {
                  description
                    "Packets are directed to specified routing instance";
                  leaf routing-instance-name {
                    type string {
                      junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
                      junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
                    }
                    description
                      "Name of routing instance";
                  }
    
                  leaf topology {
                    type string {
                      junos:posix-pattern "!^((.*:.*)|(.{129,}))$";
                      junos:pattern-message "Must be a non-reserved string of 128 characters or less";
                    }
                    description
                      "Packets are directed to specified topology";
                  }
                }  // container routing-instance
              }  // choice designation
            }  // container then
          }  // list term
        }  // grouping inet6_fuf
    
        grouping firewall_addr6_simple_object {
          uses apply-advanced;
    
          leaf address {
            type jt:ipv6prefix;
            description "Prefix to match";
          }
        }  // grouping firewall_addr6_simple_object
    
        grouping inet6_service_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 "Service filter 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 "Match criteria";
              uses apply-advanced;
    
              choice interface-group_choice {
                leaf-list interface-group {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
                leaf-list interface-group-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice interface-group_choice
    
              list source-address {
                key "name";
                ordered-by user;
                description
                  "Match  source address";
                uses firewall_addr6_object;
              }  // list source-address
    
              list destination-address {
                key "name";
                ordered-by user;
                description
                  "Match destination address";
                uses firewall_addr6_object;
              }  // list destination-address
    
              list address {
                key "name";
                ordered-by user;
                description
                  "Match source or destination address";
                uses firewall_addr6_object;
              }  // list address
    
              list source-prefix-list {
                key "name";
                ordered-by user;
                description
                  "Match source prefixes in named list";
                uses firewall_prefix_list;
              }  // list source-prefix-list
    
              list destination-prefix-list {
                key "name";
                ordered-by user;
                description
                  "Match destination prefixes in named list";
                uses firewall_prefix_list;
              }  // list destination-prefix-list
    
              list prefix-list {
                key "name";
                ordered-by user;
                description
                  "Match source or destination prefixes in named list";
                uses firewall_prefix_list;
              }  // list prefix-list
    
              choice next-header_choice {
                leaf-list next-header {
                  type string;
                  ordered-by user;
                }
                leaf-list next-header-except {
                  type string;
                  ordered-by user;
                }
              }  // choice next-header_choice
    
              choice payload-protocol_choice {
                case case_1 {
                }  // case case_1
                leaf-list payload-protocol-except {
                  type string;
                  ordered-by user;
                }
              }  // choice payload-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 port_choice {
                leaf-list port {
                  type string;
                  ordered-by user;
                }
                leaf-list port-except {
                  type string;
                  ordered-by user;
                }
              }  // choice port_choice
    
              choice extension-header_choice {
                case case_1 {
                }  // case case_1
                leaf-list extension-header-except {
                  type string;
                  ordered-by user;
                }
              }  // choice extension-header_choice
    
              choice esp-spi_choice {
                leaf-list esp-spi {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
                leaf-list esp-spi-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice esp-spi_choice
    
              choice ah-spi_choice {
                case case_1 {
                }  // case case_1
                leaf-list ah-spi-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice ah-spi_choice
    
              leaf tcp-flags {
                type string;
                description
                  "Match TCP flags (in symbolic or hex formats)";
              }
    
              choice loss-priority_choice {
                case case_1 {
                }  // case case_1
                leaf-list loss-priority-except {
                  type enumeration {
                    enum "low" {
                      value 0;
                      description
                        "Loss priority low";
                    }
                    enum "high" {
                      value 1;
                      description
                        "Loss priority high";
                    }
                    enum "medium-low" {
                      value 2;
                      description
                        "Loss priority medium-low";
                    }
                    enum "medium-high" {
                      value 3;
                      description
                        "Loss priority medium-high";
                    }
                  }
                  ordered-by user;
                }
              }  // choice loss-priority_choice
    
              choice forwarding-class_choice {
                leaf-list forwarding-class {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  ordered-by user;
                  description "String name";
                }
                leaf-list forwarding-class-except {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  ordered-by user;
                  description "String name";
                }
              }  // choice forwarding-class_choice
            }  // container from
    
            container then {
              description
                "Action to take if the 'from' condition is matched";
              uses apply-advanced;
    
              leaf count {
                type string {
                  junos:posix-pattern "!^((__.*)|(.{65,}))$";
                  junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                }
                description
                  "Count the packet in the named counter";
              }
    
              leaf log {
                type empty;
                description "Log the packet";
              }
    
              leaf sample {
                type empty;
                description "Sample the packet";
              }
    
              leaf port-mirror {
                type empty;
                description
                  "Port-mirror the packet";
              }
    
              choice designation {
                leaf service {
                  type empty;
                  description
                    "Forward packets to service processing";
                }
                leaf skip {
                  type empty;
                  description
                    "Skip service processing";
                }
    
                case case_3 {
                }  // case case_3
              }  // choice designation
            }  // container then
          }  // list term
        }  // grouping inet6_service_filter
    
        grouping inet_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;
    
          leaf-list accounting-profile {
            junos:must "("accounting-options filter-profile")";
            junos:must-message "referenced accounting profile must be defined";
            type string;
            ordered-by user;
            description
              "Accounting profile name";
          }
    
          leaf interface-specific {
            type empty;
            description
              "Defined counters are interface specific";
          }
    
          leaf physical-interface-filter {
            type empty;
            description
              "Filter is physical interface filter";
          }
    
          leaf enhanced-mode {
            junos:must "(!(".. enhanced-mode-override"))";
            junos:must-message "Cannot configure filter for both enhanced-mode and enhanced-mode-override";
            type empty;
            description
              "Define filter for chassis network-services enhanced mode";
          }
    
          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;
    
            leaf filter {
              junos:must "(("firewall filter $$" || "firewall family inet filter $$"))";
              junos:must-message "Referenced filter is not defined";
              junos:must "((!(".. from") && !(".. then")))";
              junos:must-message "Not compatible with 'from or then'";
              type string {
                junos:posix-pattern "!^((__.*)|(.{65,}))$";
                junos:pattern-message "Must be a non-reserved string of 64 characters or less";
              }
              description "Filter to include";
            }
    
            container from {
              description
                "Define match criteria";
              uses apply-advanced;
    
              choice destination-class_choice {
                leaf-list destination-class {
                  type string;
                  ordered-by user;
                  description "String name";
                }
                leaf-list destination-class-except {
                  type string;
                  ordered-by user;
                  description "String name";
                }
              }  // choice destination-class_choice
    
              choice source-class_choice {
                leaf-list source-class {
                  type string;
                  ordered-by user;
                  description "String name";
                }
                leaf-list source-class-except {
                  type string;
                  ordered-by user;
                  description "String name";
                }
              }  // choice source-class_choice
    
              choice interface-group_choice {
                case case_1 {
                }  // case case_1
                leaf-list interface-group-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice interface-group_choice
    
              list source-address {
                key "name";
                ordered-by user;
                description
                  "Match IP source address";
                uses firewall_addr_object;
              }  // list source-address
    
              list destination-address {
                key "name";
                ordered-by user;
                description
                  "Match IP destination address";
                uses firewall_addr_object;
              }  // list destination-address
    
              list source-prefix-list {
                key "name";
                ordered-by user;
                description
                  "Match IP source prefixes in named list";
                uses firewall_prefix_list;
              }  // list source-prefix-list
    
              list destination-prefix-list {
                key "name";
                ordered-by user;
                description
                  "Match IP destination prefixes in named list";
                uses firewall_prefix_list;
              }  // list destination-prefix-list
    
              choice packet-length_choice {
                leaf-list packet-length {
                  type string {
                    junos:posix-pattern "^([0-9]{1,4}|[1-5][0-9][0-9][0-9][0-9]|[6][0-4][0-9][0-9][0-9]|65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5]|0x[0-f][0-f][0-f][0-f]|0x[0-f]|0x[0-f][0-f]|0x[0-f][0-f][0-f])(-([0-9]{1,4}|[1-5][0-9][0-9][0-9][0-9]|[6][0-4][0-9][0-9][0-9]|65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5]|0x[0-f][0-f][0-f][0-f]|0x[0-f]|0x[0-f][0-f]|0x[0-f][0-f][0-f]))?$";
                    junos:pattern-message "Must be a numeric value or a range between 0-65535";
                  }
                  ordered-by user;
                  description "Range of values";
                }
                leaf-list packet-length-except {
                  type string {
                    junos:posix-pattern "^([0-9]{1,4}|[1-5][0-9][0-9][0-9][0-9]|[6][0-4][0-9][0-9][0-9]|65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5]|0x[0-f][0-f][0-f][0-f]|0x[0-f]|0x[0-f][0-f]|0x[0-f][0-f][0-f])(-([0-9]{1,4}|[1-5][0-9][0-9][0-9][0-9]|[6][0-4][0-9][0-9][0-9]|65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5]|0x[0-f][0-f][0-f][0-f]|0x[0-f]|0x[0-f][0-f]|0x[0-f][0-f][0-f]))?$";
                    junos:pattern-message "Must be a numeric value or a range between 0-65535";
                  }
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice packet-length_choice
    
              choice dscp_choice {
                leaf-list dscp {
                  type string;
                  ordered-by user;
                }
                leaf-list dscp-except {
                  type string;
                  ordered-by user;
                }
              }  // choice dscp_choice
    
              choice precedence_choice {
                leaf-list precedence {
                  type string;
                  ordered-by user;
                }
                leaf-list precedence-except {
                  type string;
                  ordered-by user;
                }
              }  // choice precedence_choice
    
              choice ip-options_choice {
                leaf-list ip-options {
                  type string;
                  ordered-by user;
                }
                leaf-list ip-options-except {
                  type string;
                  ordered-by user;
                }
              }  // choice ip-options_choice
    
              leaf is-fragment {
                type empty;
                description
                  "Match if packet is a fragment";
              }
    
              choice fragment-offset_choice {
                leaf-list fragment-offset {
                  type string {
                    junos:posix-pattern "^[[:digit:]]+(-[[:digit:]]+)?$";
                    junos:pattern-message "Must be a in form of number or a range in the form '<minimum-value>-<maximum-value>'";
                  }
                  ordered-by user;
                  description "Range of values";
                }
                leaf-list fragment-offset-except {
                  type string {
                    junos:posix-pattern "^[[:digit:]]+(-[[:digit:]]+)?$";
                    junos:pattern-message "Must be a in form of number or a range in the form '<minimum-value>-<maximum-value>'";
                  }
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice fragment-offset_choice
    
              leaf fragment-flags {
                type string {
                  junos:posix-pattern "^(0x4000|0x2000|dont-fragment|more-fragments)$";
                  junos:pattern-message "fragment-flags must be either dont-fragment(0x4000) or more-fragments(0x2000)";
                }
                description
                  "Match fragment flags (in symbolic or hex formats) - (Ingress only)";
              }
    
              choice protocol_choice {
                leaf-list protocol {
                  type string;
                  ordered-by user;
                }
                leaf-list protocol-except {
                  type string;
                  ordered-by user;
                }
              }  // choice protocol_choice
    
              choice ttl_choice {
                leaf-list ttl {
                  type string {
                    junos:posix-pattern "^([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]|0x[0-f]|0x[0-f][0-f])(-([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]|0x[0-f]|0x[0-f][0-f]))?$";
                    junos:pattern-message "Must be a numerical TTL value or range between 0-255";
                  }
                  ordered-by user;
                  description "Range of values";
                }
                leaf-list ttl-except {
                  type string {
                    junos:posix-pattern "^([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]|0x[0-f]|0x[0-f][0-f])(-([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]|0x[0-f]|0x[0-f][0-f]))?$";
                    junos:pattern-message "Must be a numerical TTL value or range between 0-255";
                  }
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice ttl_choice
    
              choice icmp-type_choice {
                leaf-list icmp-type {
                  type string;
                  ordered-by user;
                }
                leaf-list icmp-type-except {
                  type string;
                  ordered-by user;
                }
              }  // choice icmp-type_choice
    
              choice icmp-code_choice {
                leaf-list icmp-code {
                  type string;
                  ordered-by user;
                }
                leaf-list icmp-code-except {
                  type string;
                  ordered-by user;
                }
              }  // choice icmp-code_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 port_choice {
                case case_1 {
                }  // case case_1
                leaf-list port-except {
                  type string;
                  ordered-by user;
                }
              }  // choice port_choice
    
              leaf tcp-initial {
                type empty;
                description
                  "Match initial packet of a TCP connection";
              }
    
              leaf tcp-established {
                type empty;
                description
                  "Match packet of an established TCP connection";
              }
    
              leaf tcp-flags {
                type string;
                description
                  "Match TCP flags (in symbolic or hex formats)";
              }
    
              choice esp-spi_choice {
                case case_1 {
                }  // case case_1
                leaf-list esp-spi-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice esp-spi_choice
    
              choice ah-spi_choice {
                case case_1 {
                }  // case case_1
                leaf-list ah-spi-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice ah-spi_choice
    
              list interface {
                key "name";
                ordered-by user;
                description
                  "Match interface name";
                uses match_interface_object;
              }  // list interface
    
              choice forwarding-class_choice {
                leaf-list forwarding-class {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  ordered-by user;
                  description "String name";
                }
                leaf-list forwarding-class-except {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  ordered-by user;
                  description "String name";
                }
              }  // choice forwarding-class_choice
    
              choice loss-priority_choice {
                leaf-list loss-priority {
                  type enumeration {
                    enum "low" {
                      value 0;
                      description
                        "Loss priority low";
                    }
                    enum "high" {
                      value 1;
                      description
                        "Loss priority high";
                    }
                    enum "medium-low" {
                      value 2;
                      description
                        "Loss priority medium-low";
                    }
                    enum "medium-high" {
                      value 3;
                      description
                        "Loss priority medium-high";
                    }
                  }
                  ordered-by user;
                }
                leaf-list loss-priority-except {
                  type enumeration {
                    enum "low" {
                      value 0;
                      description
                        "Loss priority low";
                    }
                    enum "high" {
                      value 1;
                      description
                        "Loss priority high";
                    }
                    enum "medium-low" {
                      value 2;
                      description
                        "Loss priority medium-low";
                    }
                    enum "medium-high" {
                      value 3;
                      description
                        "Loss priority medium-high";
                    }
                  }
                  ordered-by user;
                }
              }  // choice loss-priority_choice
    
              choice rat-type_choice {
                leaf-list rat-type {
                  type string;
                  ordered-by user;
                }
                leaf-list rat-type-except {
                  type string;
                  ordered-by user;
                }
              }  // choice rat-type_choice
    
              choice redirect-reason_choice {
                leaf-list redirect-reason {
                  type enumeration {
                    enum "aoc" {
                      value 0;
                      description
                        "Advice of Charge";
                    }
                    enum "aolb" {
                      value 1;
                      description
                        "Advice of Low Balance";
                    }
                    enum "dpi" {
                      value 2;
                      description
                        "Layer7 match required";
                    }
                  }
                  ordered-by user;
                }
                leaf-list redirect-reason-except {
                  type enumeration {
                    enum "aoc" {
                      value 0;
                      description
                        "Advice of Charge";
                    }
                    enum "aolb" {
                      value 1;
                      description
                        "Advice of Low Balance";
                    }
                    enum "dpi" {
                      value 2;
                      description
                        "Layer7 match required";
                    }
                  }
                  ordered-by user;
                }
              }  // choice redirect-reason_choice
    
              choice gre-key_choice {
                case case_1 {
                }  // case case_1
                leaf-list gre-key-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice gre-key_choice
    
              choice policy-map_choice {
                leaf-list policy-map {
                  junos:must "("class-of-service policy-map $$")";
                  junos:must-message "Undefined policy-map instance";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                    length "1 .. 64";
                  }
                  ordered-by user;
                  description "String name";
                }
                leaf-list policy-map-except {
                  junos:must "("class-of-service policy-map $$")";
                  junos:must-message "Undefined policy-map instance";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                    length "1 .. 64";
                  }
                  ordered-by user;
                  description "String name";
                }
              }  // choice policy-map_choice
            }  // container from
    
            container then {
              description
                "Action to take if the 'from' condition is matched";
              uses apply-advanced;
    
              choice policer-choice {
                leaf policer {
                  junos:must "(!("firewall policer $$ aggregate"))";
                  junos:must-message "Cannot attach a aggregate policer to filter";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Name of policer to use to rate-limit traffic";
                }
                container three-color-policer {
                  description
                    "Police the packet using a three-color-policer";
                  uses apply-advanced;
    
                  choice type-choice {
                    leaf single-rate {
                      junos:must "("firewall three-color-policer $$ single-rate")";
                      junos:must-message "Referenced single-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of single-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf single-packet-rate {
                      junos:must "("firewall three-color-policer $$ single-packet-rate")";
                      junos:must-message "Referenced single-packet-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of single-packet-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf two-rate {
                      junos:must "("firewall three-color-policer $$ two-rate")";
                      junos:must-message "Referenced two-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of two-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf two-packet-rate {
                      junos:must "("firewall three-color-policer $$ two-packet-rate")";
                      junos:must-message "Referenced two-packet-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of two-packet-rate three-color policer to use to rate-limit traffic";
                    }
                  }  // choice type-choice
                }  // container three-color-policer
                leaf hierarchical-policer {
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Name of hierarchical policer to use to rate-limit traffic";
                }
              }  // choice policer-choice
    
              choice policy-map-choice {
                leaf clear-policy-map {
                  type empty;
                  description
                    "Clear the policy marking";
                }
                leaf policy-map {
                  junos:must "("class-of-service policy-map $$")";
                  junos:must-message "referenced policy map must be defined";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Policy map action";
                }
              }  // choice policy-map-choice
    
              choice inetcnt {
                case case_1 {
                }  // case case_1
                leaf count {
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Count the packet in the named counter";
                }
              }  // choice inetcnt
    
              leaf service-accounting {
                junos:must "(!(".. service-accounting-deferred"))";
                junos:must-message "'service-accounting-deferred' and 'service-accounting' cannot coexist";
                junos:must "(!(".. count"))";
                junos:must-message "'count' and 'service-accounting' cannot coexist";
                type empty;
                description
                  "Count the packets for service accounting";
              }
    
              leaf skip-services {
                type empty;
                description "Skip the services";
              }
    
              leaf service-accounting-deferred {
                junos:must "(!(".. service-accounting"))";
                junos:must-message "Cannot be both 'service-accounting' and 'service-accounting-deferred'";
                junos:must "(!(".. count"))";
                junos:must-message "'count' and 'service-accounting-deferred' cannot coexist";
                type empty;
                description
                  "Count the packets for deferred service accounting";
              }
    
              leaf log {
                type empty;
                description "Log the packet";
              }
    
              leaf syslog {
                type empty;
                description
                  "System log (syslog) information about the packet";
              }
    
              leaf packet-capture {
                type empty;
                description
                  "Enable packet capture for telemetry";
              }
    
              leaf sample {
                junos:must "(!(".. sampling-instance"))";
                junos:must-message "'sampling' and 'sampling-instance' are mutually exclusive";
                junos:must "(("forwarding-options sampling family inet" || ("forwarding-options packet-capture" || any "forwarding-options sampling instance <*> family inet")))";
                junos:must-message "Requires forwarding-options sampling or packet-capture config";
                type empty;
                description "Sample the packet";
              }
    
              leaf port-mirror-instance {
                junos:must "("forwarding-options port-mirroring instance $$")";
                junos:must-message "Referenced port-mirroring instance does not exist";
                type string {
                  junos:posix-pattern "!^((__.*)|(.{65,}))$";
                  junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                }
                description
                  "Port-mirror the packet to specified instance";
              }
    
              leaf port-mirror {
                junos:must "(!(".. port-mirror-instance"))";
                junos:must-message "'port-mirror' and 'port-mirror-instance' are mutually exclusive";
                junos:must "("forwarding-options port-mirroring")";
                junos:must-message "Configure 'port-mirroring' under 'forwarding-options'";
                type empty;
                description
                  "Port-mirror the packet";
              }
    
              leaf analyzer {
                junos:must "("ethernet-switching-options analyzer $$")";
                junos:must-message "Named Analyzer must be set";
                type string {
                  junos:posix-pattern "!^((__.*)|(.{65,}))$";
                  junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                }
                description
                  "Name of analyzer - (Ingress only)";
              }
    
              leaf loss-priority {
                junos:must "(!(".. three-color-policer"))";
                junos:must-message "Configuring loss-priority is incompatible with configuring three-color-policer";
                type enumeration {
                  enum "low" {
                    value 0;
                    description
                      "Loss priority low";
                  }
                  enum "high" {
                    value 1;
                    description
                      "Loss priority high";
                  }
                  enum "medium-low" {
                    value 2;
                    description
                      "Loss priority medium-low";
                  }
                  enum "medium-high" {
                    value 3;
                    description
                      "Loss priority medium-high";
                  }
                }
                description
                  "Packet's loss priority";
              }
    
              leaf forwarding-class {
                type string {
                  junos:posix-pattern "^.{1,64}$";
                  junos:pattern-message "Must be string of 64 characters or less";
                }
                description
                  "Classify packet to forwarding class";
              }
    
              leaf service-filter-hit {
                type empty;
                description
                  "Marked when packet processing by the current type of chained filters is done, the packet is directed to the next type of filters";
              }
    
              choice designation {
                leaf accept {
                  type empty;
                  description
                    "Accept the packet";
                }
                container discard {
                  presence "enable discard";
                  description
                    "Discard the packet";
                  uses apply-advanced;
    
                  leaf accounting {
                    type string;
                    description
                      "Named discard collector for packet";
                  }
                }  // container discard
                leaf next {
                  type enumeration {
                    enum "term" {
                      value 0;
                      description
                        "Continue to next term in a filter";
                    }
                  }
                  description
                    "Continue to next term in a filter";
                }
                list logical-system {
                  key "logical-system-name";
                  max-elements 1;
                  ordered-by user;
                  description
                    "Packets are directed to specified logical system";
                  leaf logical-system-name {
                    type string {
                      junos:posix-pattern "^[a-zA-Z0-9_-]{1,63}$";
                      junos:pattern-message "Logical-system name is a string consisting of up to 63 letters, numbers, dashes and underscores";
                    }
                    description
                      "Name of logical system";
                  }
    
                  container routing-instance {
                    description
                      "Packets are directed to specified routing instance";
                    leaf routing-instance-name {
                      type string {
                        junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
                        junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
                      }
                      description
                        "Name of routing instance";
                    }
    
                    leaf topology {
                      type string {
                        junos:posix-pattern "!^((.*:.*)|(.{129,}))$";
                        junos:pattern-message "Must be a non-reserved string of 128 characters or less";
                      }
                      description
                        "Packets are directed to specified topology";
                    }
                  }  // container routing-instance
    
                  leaf topology {
                    type string {
                      junos:posix-pattern "!^((.*:.*)|(.{129,}))$";
                      junos:pattern-message "Must be a non-reserved string of 128 characters or less";
                    }
                    description
                      "Packets are directed to specified topology";
                  }
                }  // list logical-system
                container routing-instance {
                  description
                    "Packets are directed to specified routing instance";
                  leaf routing-instance-name {
                    type string {
                      junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
                      junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
                    }
                    description
                      "Name of routing instance";
                  }
    
                  leaf topology {
                    type string {
                      junos:posix-pattern "!^((.*:.*)|(.{129,}))$";
                      junos:pattern-message "Must be a non-reserved string of 128 characters or less";
                    }
                    description
                      "Packets are directed to specified topology";
                  }
                }  // container routing-instance
                leaf topology {
                  type string {
                    junos:posix-pattern "!^((.*:.*)|(.{129,}))$";
                    junos:pattern-message "Must be a non-reserved string of 128 characters or less";
                  }
                  description
                    "Packets are directed to specified topology";
                }
    
                case case_7 {
                }  // case case_7
    
                case case_8 {
                }  // case case_8
                leaf ipsec-sa {
                  type string;
                  description
                    "Use specified IPSec security association";
                }
                leaf next-hop-group {
                  type string;
                  description
                    "Use specified next-hop group";
                }
    
                case case_11 {
                }  // case case_11
    
                case case_12 {
                }  // case case_12
                container reject {
                  presence "enable reject";
                  description
                    "Reject the packet";
                  choice style {
                    leaf network-unreachable {
                      type empty;
                      description
                        "Send ICMP Network Unreachable message";
                    }
                    leaf host-unreachable {
                      type empty;
                      description
                        "Send ICMP Host Unreachable message";
                    }
                    leaf protocol-unreachable {
                      type empty;
                      description
                        "Send ICMP Protocol Unreachable message";
                    }
                    leaf port-unreachable {
                      type empty;
                      description
                        "Send ICMP Port Unreachable message";
                    }
                    leaf fragmentation-needed {
                      type empty;
                      description
                        "Send ICMP Fragmentation Needed message";
                    }
                    leaf source-route-failed {
                      type empty;
                      description
                        "Send ICMP Source Route Failed message";
                    }
                    leaf network-unknown {
                      type empty;
                      description
                        "Send ICMP Network Unknown message";
                    }
                    leaf host-unknown {
                      type empty;
                      description
                        "Send ICMP Host Unknown message";
                    }
                    leaf source-host-isolated {
                      type empty;
                      description
                        "Send ICMP Source Host Isolated message";
                    }
                    leaf network-prohibited {
                      type empty;
                      description
                        "Send ICMP Network Prohibited message";
                    }
                    leaf host-prohibited {
                      type empty;
                      description
                        "Send ICMP Host Prohibited message";
                    }
                    leaf bad-network-tos {
                      type empty;
                      description
                        "Send ICMP Bad Network ToS message";
                    }
                    leaf bad-host-tos {
                      type empty;
                      description
                        "Send ICMP Bad Host ToS message";
                    }
                    leaf administratively-prohibited {
                      type empty;
                      description
                        "Send ICMP Administratively Prohibited message";
                    }
                    leaf precedence-violation {
                      type empty;
                      description
                        "Send ICMP Precedence Violation message";
                    }
                    leaf precedence-cutoff {
                      type empty;
                      description
                        "Send ICMP Precedence Cutoff message";
                    }
                    leaf tcp-reset {
                      type empty;
                      description
                        "Send TCP Reset message";
                    }
                  }  // choice style
                }  // container reject
    
                case case_14 {
                }  // case case_14
              }  // choice designation
    
              leaf dscp {
                type string;
                description
                  "Set Differentiated Services (DiffServ) code point";
              }
    
              leaf prefix-action {
                type string {
                  junos:posix-pattern "!^((__.*)|(.{65,}))$";
                  junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                }
                description
                  "Police or count packets using named prefix action";
              }
            }  // container then
          }  // list term
        }  // grouping inet_filter
    
        grouping inet_fuf {
          leaf name {
            junos:must "(unique "firewall family <*> filter $$")";
            junos:must-message "Fast update filter can not have the same name as firewall family filter";
            type string {
              junos:posix-pattern "!^((__.*)|(.{65,}))$";
              junos:pattern-message "Must be a non-reserved string of 64 characters or less";
            }
            description
              "Name of fast update filter";
          }
    
          uses apply-advanced;
    
          leaf interface-specific {
            type empty;
            description
              "Defined counters are interface specific";
          }
    
          leaf-list match-order {
            type enumeration {
              enum "protocol" {
                value 0;
                description
                  "Include IP protocol in match set";
              }
              enum "source-address" {
                value 1;
                description
                  "Include source-address in match set";
              }
              enum "destination-address" {
                value 2;
                description
                  "Include destination-address in match set";
              }
              enum "source-port" {
                value 3;
                description
                  "Include source-port in match set";
              }
              enum "destination-port" {
                value 4;
                description
                  "Include destination-port in match set";
              }
              enum "dscp" {
                value 5;
                description
                  "Include Differentiated Services (DiffServ) code point in match set";
              }
            }
            ordered-by user;
          }
    
          list term {
            key "name";
            ordered-by user;
            description
              "One or more firewall terms";
            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;
    
            leaf only-at-create {
              type empty;
              description
                "Add term only when filter is first created.";
            }
    
            container from {
              description "Match criteria";
              uses apply-advanced;
    
              container source-address {
                description
                  "Match source IP address";
                uses firewall_addr_simple_object;
              }  // container source-address
    
              container destination-address {
                description
                  "Match destination IP address";
                uses firewall_addr_simple_object;
              }  // container destination-address
    
              choice source-port_choice {
                container source-port {
                  description
                    "Match TCP/UDP source port";
                  uses match_simple_port_value;
                }  // container source-port
              }  // choice source-port_choice
    
              choice destination-port_choice {
                container destination-port {
                  description
                    "Match TCP/UDP destination port";
                  uses match_simple_port_value;
                }  // container destination-port
              }  // choice destination-port_choice
    
              choice protocol_choice {
                container protocol {
                  description
                    "Match IP protocol type";
                  uses match_simple_protocol_value;
                }  // container protocol
              }  // choice protocol_choice
    
              choice dscp_choice {
                container dscp {
                  description
                    "Match Differentiated Services (DiffServ) code point";
                  uses match_simple_dscp_value;
                }  // container dscp
              }  // choice dscp_choice
    
              leaf match-terms {
                type string;
                description
                  "Dynamically supplied list of match criteria";
              }
            }  // container from
    
            container then {
              description
                "Action to take if the 'from' condition is matched";
              uses apply-advanced;
    
              choice policer-choice {
                leaf policer {
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Name of policer to use to rate-limit traffic";
                }
              }  // choice policer-choice
    
              leaf count {
                type string {
                  junos:posix-pattern "!^((__.*)|(.{65,}))$";
                  junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                }
                description
                  "Count the packet in the named counter";
              }
    
              leaf service-accounting {
                junos:must "(!(".. count"))";
                junos:must-message "'count' and 'service-accounting' cannot coexist";
                type empty;
                description
                  "Count the packets for service accounting";
              }
    
              leaf log {
                type empty;
                description "Log the packet";
              }
    
              leaf port-mirror {
                type empty;
                description
                  "Port-mirror the packet";
              }
    
              leaf loss-priority {
                junos:must "(!(".. three-color-policer"))";
                junos:must-message "Configuring loss-priority is incompatible with configuring three-color-policer";
                type enumeration {
                  enum "low" {
                    value 0;
                    description
                      "Loss priority low";
                  }
                  enum "high" {
                    value 1;
                    description
                      "Loss priority high";
                  }
                  enum "medium-low" {
                    value 2;
                    description
                      "Loss priority medium-low";
                  }
                  enum "medium-high" {
                    value 3;
                    description
                      "Loss priority medium-high";
                  }
                }
                description
                  "Packet's loss priority";
              }
    
              leaf forwarding-class {
                type string {
                  junos:posix-pattern "^.{1,64}$";
                  junos:pattern-message "Must be string of 64 characters or less";
                }
                description
                  "Classify packet to forwarding class";
              }
    
              leaf action-terms {
                type string;
                description
                  "Dynamically supplied list of actions";
              }
    
              choice designation {
                leaf accept {
                  type empty;
                  description
                    "Accept the packet";
                }
                leaf discard {
                  type empty;
                  description
                    "Discard the packet";
                }
                container routing-instance {
                  description
                    "Packets are directed to specified routing instance";
                  leaf routing-instance-name {
                    type string {
                      junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
                      junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
                    }
                    description
                      "Name of routing instance";
                  }
    
                  leaf topology {
                    type string {
                      junos:posix-pattern "!^((.*:.*)|(.{129,}))$";
                      junos:pattern-message "Must be a non-reserved string of 128 characters or less";
                    }
                    description
                      "Packets are directed to specified topology";
                  }
                }  // container routing-instance
              }  // choice designation
            }  // container then
          }  // list term
        }  // grouping inet_fuf
    
        grouping firewall_addr_simple_object {
          uses apply-advanced;
    
          leaf address {
            type jt:ipv4prefix;
            description "Prefix to match";
          }
        }  // grouping firewall_addr_simple_object
    
        grouping inet_service_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 "Service filter 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 "Match criteria";
              uses apply-advanced;
    
              choice interface-group_choice {
                leaf-list interface-group {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
                leaf-list interface-group-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice interface-group_choice
    
              list source-address {
                key "name";
                ordered-by user;
                description
                  "Match IP source address";
                uses firewall_addr_object;
              }  // list source-address
    
              list destination-address {
                key "name";
                ordered-by user;
                description
                  "Match IP destination address";
                uses firewall_addr_object;
              }  // list destination-address
    
              list address {
                key "name";
                ordered-by user;
                description
                  "Match IP source or destination address";
                uses firewall_addr_object;
              }  // list address
    
              list source-prefix-list {
                key "name";
                ordered-by user;
                description
                  "Match IP source prefixes in named list";
                uses firewall_prefix_list;
              }  // list source-prefix-list
    
              list destination-prefix-list {
                key "name";
                ordered-by user;
                description
                  "Match IP destination prefixes in named list";
                uses firewall_prefix_list;
              }  // list destination-prefix-list
    
              list prefix-list {
                key "name";
                ordered-by user;
                description
                  "Match IP source or destination prefixes in named list";
                uses firewall_prefix_list;
              }  // list prefix-list
    
              choice protocol_choice {
                leaf-list protocol {
                  type string;
                  ordered-by user;
                }
                leaf-list protocol-except {
                  type string;
                  ordered-by user;
                }
              }  // choice protocol_choice
    
              choice ip-options_choice {
                leaf-list ip-options {
                  type enumeration {
                    enum "any" {
                      value 0;
                      description
                        "Any IP option";
                    }
                  }
                  ordered-by user;
                }
                leaf-list ip-options-except {
                  type enumeration {
                    enum "any" {
                      value 0;
                      description
                        "Any IP option";
                    }
                  }
                  ordered-by user;
                }
              }  // choice ip-options_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 port_choice {
                leaf-list port {
                  type string;
                  ordered-by user;
                }
                leaf-list port-except {
                  type string;
                  ordered-by user;
                }
              }  // choice port_choice
    
              choice esp-spi_choice {
                leaf-list esp-spi {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
                leaf-list esp-spi-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice esp-spi_choice
    
              leaf is-fragment {
                type empty;
                description
                  "Match if packet is a fragment";
              }
    
              leaf first-fragment {
                type empty;
                description
                  "Match if packet is the first fragment";
              }
    
              choice fragment-offset_choice {
                leaf-list fragment-offset {
                  type string {
                    junos:posix-pattern "^[[:digit:]]+(-[[:digit:]]+)?$";
                    junos:pattern-message "Must be a in form of number or a range in the form '<minimum-value>-<maximum-value>'";
                  }
                  ordered-by user;
                  description "Range of values";
                }
                leaf-list fragment-offset-except {
                  type string {
                    junos:posix-pattern "^[[:digit:]]+(-[[:digit:]]+)?$";
                    junos:pattern-message "Must be a in form of number or a range in the form '<minimum-value>-<maximum-value>'";
                  }
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice fragment-offset_choice
    
              leaf fragment-flags {
                type string;
                description
                  "Match fragment flags";
              }
    
              leaf tcp-flags {
                type string;
                description
                  "Match TCP flags (in symbolic or hex formats)";
              }
    
              choice ah-spi_choice {
                case case_1 {
                }  // case case_1
                leaf-list ah-spi-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice ah-spi_choice
    
              choice loss-priority_choice {
                case case_1 {
                }  // case case_1
                leaf-list loss-priority-except {
                  type enumeration {
                    enum "low" {
                      value 0;
                      description
                        "Loss priority low";
                    }
                    enum "high" {
                      value 1;
                      description
                        "Loss priority high";
                    }
                    enum "medium-low" {
                      value 2;
                      description
                        "Loss priority medium-low";
                    }
                    enum "medium-high" {
                      value 3;
                      description
                        "Loss priority medium-high";
                    }
                  }
                  ordered-by user;
                }
              }  // choice loss-priority_choice
    
              choice forwarding-class_choice {
                leaf-list forwarding-class {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  ordered-by user;
                  description "String name";
                }
                leaf-list forwarding-class-except {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  ordered-by user;
                  description "String name";
                }
              }  // choice forwarding-class_choice
    
              choice redirect-reason_choice {
                leaf-list redirect-reason {
                  type enumeration {
                    enum "aoc" {
                      value 0;
                      description
                        "Advice of Charge";
                    }
                    enum "aolb" {
                      value 1;
                      description
                        "Advice of Low Balance";
                    }
                    enum "dpi" {
                      value 2;
                      description
                        "Layer7 match required";
                    }
                  }
                  ordered-by user;
                }
                leaf-list redirect-reason-except {
                  type enumeration {
                    enum "aoc" {
                      value 0;
                      description
                        "Advice of Charge";
                    }
                    enum "aolb" {
                      value 1;
                      description
                        "Advice of Low Balance";
                    }
                    enum "dpi" {
                      value 2;
                      description
                        "Layer7 match required";
                    }
                  }
                  ordered-by user;
                }
              }  // choice redirect-reason_choice
            }  // container from
    
            container then {
              description
                "Action to take if the 'from' condition is matched";
              uses apply-advanced;
    
              leaf count {
                type string {
                  junos:posix-pattern "!^((__.*)|(.{65,}))$";
                  junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                }
                description
                  "Count the packet in the named counter";
              }
    
              leaf log {
                type empty;
                description "Log the packet";
              }
    
              leaf sample {
                type empty;
                description "Sample the packet";
              }
    
              leaf port-mirror {
                type empty;
                description
                  "Port-mirror the packet";
              }
    
              choice designation {
                leaf service {
                  type empty;
                  description
                    "Forward packets to service processing";
                }
                leaf skip {
                  type empty;
                  description
                    "Skip service processing";
                }
    
                case case_3 {
                }  // case case_3
              }  // choice designation
            }  // container then
          }  // list term
        }  // grouping inet_service_filter
    
        grouping interface_set_type {
          leaf name {
            type string {
              junos:posix-pattern "!^((__.*)|(.{65,}))$";
              junos:pattern-message "Must be a non-reserved string of 64 characters or less";
            }
            description "Interface set name";
          }
    
          uses apply-advanced;
    
          list interface-list {
            key "name";
            ordered-by user;
            description "Interface list";
            leaf name {
              type union {
                type jt:interface-wildcard;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description "Interface name";
            }
    
            uses apply-advanced;
          }  // list interface-list
        }  // grouping interface_set_type
    
        grouping interfaces_type {
          description "Physical interface";
          leaf name {
            junos:must "(!(".. es-options backup-interface $$"))";
            junos:must-message "Primary and backup ES PIC interfaces must be different";
            type string;
          }
    
          uses apply-advanced;
    
          leaf description {
            type string;
            description
              "Text description of interface";
          }
    
          leaf external-model-name {
            type string;
            description
              "Name for interface as configured using 3rd-party model";
          }
    
          choice enable-disable {
            leaf disable {
              type empty;
              description
                "Disable this interface";
            }
          }  // choice enable-disable
    
          container traceoptions {
            presence "enable traceoptions";
            description
              "Interface trace options";
            uses apply-advanced;
    
            list flag {
              key "name";
              ordered-by user;
              description "Tracing parameters";
              leaf name {
                type enumeration {
                  enum "ipc" {
                    value 0;
                    description
                      "Trace interface IPC messages";
                  }
                  enum "event" {
                    value 1;
                    description
                      "Trace interface events";
                  }
                  enum "media" {
                    value 2;
                    description
                      "Trace interface media changes";
                  }
                  enum "all" {
                    value 3;
                    description
                      "Enable all interface trace flags";
                  }
                }
              }
            }  // list flag
          }  // container traceoptions
    
          leaf passive-monitor-mode {
            junos:must "(!(("services nat ipv6-multicast-interfaces $$={all}" || "services nat ipv6-multicast-interfaces ${interface}")))";
            junos:must-message "Can not configure 'services nat ipv6-multicast-interfaces' when passive montioring is enabled for the interface";
            junos:must "(!((".. encapsulation ethernet-ccc" || (".. encapsulation ethernet-tcc" || (".. encapsulation ethernet-bridge" || (".. encapsulation ethernet-vpls" || (".. encapsulation extended-vlan-ccc" || (".. encapsulation extended-vlan-tcc" || (".. encapsulation extended-vlan-vpls" || (".. encapsulation extended-vlan-bridge" || (".. encapsulation flexible-ethernet-services" || (".. encapsulation vlan-ccc" || (".. encapsulation vlan-vci-ccc" || ".. encapsulation vlan-vpls")))))))))))))";
            junos:must-message "Not compatible with specified 'encapsulation`";
            type empty;
            description
              "Use interface to tap packets from another router";
          }
    
          choice keepalive_choices {
            container keepalives {
              presence "enable keepalives";
              description
                "Send or demand keepalive messages";
              uses keepalives_type;
            }  // container keepalives
            leaf no-keepalives {
              type empty;
              description
                "Do not send keepalive messages";
            }
          }  // choice keepalive_choices
    
          choice traps-choice {
            leaf traps {
              type empty;
              description
                "Enable SNMP notifications on state changes";
            }
            leaf no-traps {
              type empty;
              description
                "Don't enable SNMP notifications on state changes";
            }
          }  // choice traps-choice
    
          choice interface-mib-choice {
            leaf interface-mib {
              type empty;
              description
                "Enable interface-related MIBs";
            }
            leaf no-interface-mib {
              type empty;
              description
                "Don't enable interface-related MIBs";
            }
          }  // choice interface-mib-choice
    
          leaf accounting-profile {
            junos:must "(("accounting-options interface-profile $$" || "accounting-options flat-file-profile $$"))";
            junos:must-message "referenced accounting profile must be defined";
            type string;
            description
              "Accounting profile name";
          }
    
          choice scheduler_type {
            choice per-unit-scheduler-choice {
              leaf per-unit-scheduler {
                type empty;
                description
                  "Enable subunit queuing on Frame Relay or VLAN IQ interface";
              }
              leaf no-per-unit-scheduler {
                type empty;
                description
                  "Don't enable subunit queuing on Frame Relay or VLAN IQ interface";
              }
            }  // choice per-unit-scheduler-choice
            leaf shared-scheduler {
              junos:must "((".. vlan-tagging" || (".. stacked-vlan-tagging" || (".. flexible-vlan-tagging" || ".. vlan-vci-tagging"))))";
              junos:must-message "vlan tagging needs to be enabled for shared scheduler";
              type empty;
              description
                "Enabled shared queuing on an IQ2 interface";
            }
            container hierarchical-scheduler {
              presence
                "enable hierarchical-scheduler";
              description
                "Enable hierarchical scheduling";
              leaf maximum-hierarchy-levels {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "2 .. 4";
                  }
                }
                description
                  "Maximum hierarchy levels";
              }
    
              leaf implicit-hierarchy {
                type empty;
                description
                  "Implicit hierarchy (follows interface hierarchy)";
              }
            }  // container hierarchical-scheduler
          }  // choice scheduler_type
    
          leaf l2tp-maximum-session {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 64000";
              }
            }
            description "Maximum L2TP session";
          }
    
          leaf schedulers {
            type union {
              type uint32;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description
              "Number of schedulers to allocate for interface";
          }
    
          leaf dce {
            type empty;
            description
              "Respond to Frame Relay status enquiry messages";
          }
    
          choice vlan_tag_mode {
            leaf vlan-tagging {
              junos:must "(!(("protocols dot1x authenticator interface ${interface}.0" || "protocols dot1x supplicant interface ${interface}.0")))";
              junos:must-message "Dot1x is not supported on vlan-tagged interface";
              type empty;
              description
                "802.1q VLAN tagging support";
            }
            leaf stacked-vlan-tagging {
              junos:must "(!(("protocols dot1x authenticator interface ${interface}.0" || "protocols dot1x supplicant interface ${interface}.0")))";
              junos:must-message "Dot1x is not supported on vlan-tagged interface";
              junos:must "(!((".. passive-monitor-mode" || ".. 802.3ad")))";
              junos:must-message "Not compatible with passive-monitor-mode statement";
              type empty;
              description
                "Stacked 802.1q VLAN tagging support";
            }
            leaf flexible-vlan-tagging {
              junos:must "(!(("protocols dot1x authenticator interface ${interface}.0" || "protocols dot1x supplicant interface ${interface}.0")))";
              junos:must-message "Dot1x is not supported on vlan-tagged interface";
              type empty;
              description
                "Support for no tagging, or single and double 802.1q VLAN tagging";
            }
            leaf vlan-vci-tagging {
              type empty;
              description
                "CCC for VLAN Q-in-Q and ATM VPI/VCI interworking";
            }
          }  // choice vlan_tag_mode
    
          leaf native-vlan-id {
            junos:must "((".. flexible-vlan-tagging" || (".. unit $$={0} family bridge interface-mode trunk" || (".. unit $$={0} family ethernet-switching interface-mode trunk" || (any "logical-systems <*> interfaces ${interface} unit <*> family bridge interface-mode trunk" || any "logical-systems <*> interfaces ${interface} unit <*> family ethernet-switching interface-mode trunk")))))";
            junos:must-message "native-vlan-id can be specified with flexible-vlan-tagging mode or with interface-mode trunk";
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 4094";
              }
            }
            description
              "Virtual LAN identifier for untagged frames";
          }
    
          leaf number-of-sub-ports {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 8";
              }
            }
            description
              "Number of channels to create for a port";
          }
    
          leaf speed {
            type enumeration {
              enum "auto" {
                junos:must "((!("interfaces ${interface} gigether-options 802.3ad") || !("interfaces ${interface} ether-options 802.3ad")))";
                junos:must-message "Auto speed cannot be configured for an aggregated ethernet member link";
                junos:must "(("interfaces ${interface} gigether-options auto-negotiation" || "interfaces ${interface} ether-options auto-negotiation"))";
                junos:must-message "gigether-options/ether-options auto-negotiation must be enabled";
                value 0;
                description
                  "Enable auto negotiation of interface speed";
              }
              enum "auto-10m-100m" {
                junos:must "((!("interfaces ${interface} gigether-options 802.3ad") || !("interfaces ${interface} ether-options 802.3ad")))";
                junos:must-message "Auto speed cannot be configured for an aggregated ethernet member link";
                junos:must "(("interfaces ${interface} gigether-options auto-negotiation" || "interfaces ${interface} ether-options auto-negotiation"))";
                junos:must-message "gigether-options/ether-options auto-negotiation must be enabled";
                value 1;
                description
                  "Enable auto negotiation of limiting interface speed to 10m/100m";
              }
              enum "10m" {
                value 2;
              }
              enum "100m" {
                value 3;
              }
              enum "1g" {
                value 4;
              }
              enum "2.5g" {
                value 5;
              }
              enum "5g" {
                value 6;
              }
              enum "10g" {
                value 7;
              }
              enum "25g" {
                value 8;
              }
              enum "40g" {
                value 9;
              }
              enum "50g" {
                value 10;
              }
              enum "100g" {
                value 11;
              }
              enum "200g" {
                value 12;
              }
              enum "400g" {
                value 13;
              }
              enum "oc3" {
                value 14;
              }
              enum "oc12" {
                value 15;
              }
              enum "oc48" {
                value 16;
              }
            }
            description "Link speed";
          }
    
          leaf mtu {
            junos:must "(!("interfaces ${interface} container-options container-list"))";
            junos:must-message "mtu is not supported for container child interfaces";
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32;
            }
            description
              "Maximum transmit packet size";
          }
    
          container hold-time {
            description
              "Hold time for link up and link down";
            leaf up {
              type union {
                type uint32;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              units "milliseconds";
              description "Link up hold time";
            }
    
            leaf down {
              type union {
                type uint32;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              units "milliseconds";
              description "Link down hold time";
            }
          }  // container hold-time
    
          container link-degrade-monitor {
            presence
              "enable link-degrade-monitor";
            description
              "Enable link degrade monitoring";
            uses apply-advanced;
    
            choice enable_choice {
              leaf link-degrade-monitor-enable {
                type empty;
                description
                  "Enable Link Degrade Monitoring";
              }
              leaf no-link-degrade-monitor-enable {
                type empty;
                description
                  "Disable Link Degrade Monitoring";
              }
            }  // choice enable_choice
    
            container actions {
              description
                "Action upon link degrade event";
              uses apply-advanced;
    
              choice action_choice {
                leaf media-based {
                  type empty;
                  description "Media based";
                }
              }  // choice action_choice
            }  // container actions
    
            container recovery {
              description
                "Link degrade recovery mechanism";
              uses apply-advanced;
    
              leaf timer {
                junos:must "(!(".. manual"))";
                junos:must-message "Recovery mechanism must be auto to configure recovery timer";
                type union {
                  type uint32;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                default "1800";
                description
                  "Auto recovery timer in seconds";
              }
    
              choice receovery_choice {
                leaf auto {
                  type empty;
                  description
                    "Automatic recovery";
                }
                leaf manual {
                  type empty;
                  description "Manual recovery";
                }
              }  // choice receovery_choice
            }  // container recovery
    
            container thresholds {
              description
                "Link degrade threshold parameters";
              uses apply-advanced;
    
              leaf set {
                type string {
                  junos:posix-pattern "^1e-(1[0-6]?|[2-9])$";
                  junos:pattern-message "Ber threshold value in format: 1e-n, n = 1..16";
                }
                default "1e-7";
                description
                  "BER at which link considered degraded(1..16)";
              }
    
              leaf clear {
                type string {
                  junos:posix-pattern "^1e-(1[0-6]?|[2-9])$";
                  junos:pattern-message "Ber threshold value in format: 1e-n, n = 1..16";
                }
                default "1e-12";
                description
                  "BER at which link considered improved(1..16)";
              }
    
              leaf warning-set {
                type string {
                  junos:posix-pattern "^1e-(1[0-6]?|[2-9])$";
                  junos:pattern-message "Ber threshold value in format: 1e-n, n = 1..16";
                }
                default "1e-9";
                description
                  "BER at which link degrade warning raised(1..16)";
              }
    
              leaf warning-clear {
                type string {
                  junos:posix-pattern "^1e-(1[0-6]?|[2-9])$";
                  junos:pattern-message "Ber threshold value in format: 1e-n, n = 1..16";
                }
                default "1e-11";
                description
                  "BER at which link degrade warning cleared(1..16)";
              }
    
              leaf interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 256";
                  }
                }
                default "10";
                description
                  "Consecutive link degrade events";
              }
            }  // container thresholds
          }  // container link-degrade-monitor
    
          container satop-options {
            junos:must "((!(".. t1-options framing") && !(".. e1-options framing")))";
            junos:must-message "SAToP & Framing cannot be configured on same interface";
            junos:must "(!(".. ima-link-options"))";
            junos:must-message "SAToP & IMA cannot be configured on same interface";
            junos:must "((!("interfaces ${interface} container-options") || ("interfaces ${interface} container-options container-type" || "interfaces ${interface} container-options allow-configuration-override")))";
            junos:must-message "satop-options cannot be configured without allow-configuration-override";
            description
              "Structure-Agnostic TDM over Packet protocol options";
            uses apply-advanced;
    
            leaf idle-pattern {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 255";
                }
              }
              description
                "An 8-bit hexadecimal pattern to replace TDM data in a lost packet";
            }
    
            leaf payload-size {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "64 .. 1024";
                }
              }
              description
                "Number of payload bytes per packet";
            }
    
            container excessive-packet-loss-rate {
              description "Packet loss options";
              uses apply-advanced;
    
              leaf threshold {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "1 .. 100";
                  }
                }
                description
                  "Percentile designating the threshold of excessive packet loss rate";
              }
    
              leaf sample-period {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1000 .. 65535";
                  }
                }
                description
                  "Number of milliseconds over which excessive packet loss rate is calculated";
              }
            }  // container excessive-packet-loss-rate
    
            choice jitter-buffer-size {
              leaf jitter-buffer-packets {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 64";
                  }
                }
                description
                  "Number of packets in jitter buffer before packet data is played out in the line";
              }
              leaf jitter-buffer-latency {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 1000";
                  }
                }
                units "milliseconds";
                description
                  "Number of milliseconds delay in jitter buffer before packet data is played out in the line";
              }
              leaf jitter-buffer-auto-adjust {
                type empty;
                description
                  "Automatically adjust jitter buffer";
              }
            }  // choice jitter-buffer-size
    
            leaf bit-rate {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 10240";
                }
              }
              description "In multiples of DS0";
            }
          }  // container satop-options
    
          container cesopsn-options {
            junos:must "((!("interfaces ${interface} container-options") || ("interfaces ${interface} container-options container-type" || "interfaces ${interface} container-options allow-configuration-override")))";
            junos:must-message "cesopsn-options cannot be configured without allow-configuration-override";
            description
              "Structure-Aware TDM over Packet protocol options";
            uses apply-advanced;
    
            leaf idle-pattern {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 255";
                }
              }
              description
                "An 8-bit hexadecimal pattern to replace TDM data in a lost packet";
            }
    
            leaf packetization-latency {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1000 .. 8000";
                }
              }
              units "microseconds";
              description
                "Number of microseconds to create packets";
            }
    
            leaf payload-size {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "64 .. 1024";
                }
              }
              description
                "Number of payload bytes per packet";
            }
    
            container excessive-packet-loss-rate {
              description "Packet loss options";
              uses apply-advanced;
    
              leaf threshold {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "1 .. 100";
                  }
                }
                description
                  "Percentile designating the threshold of excessive packet loss rate";
              }
    
              leaf sample-period {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1000 .. 65535";
                  }
                }
                description
                  "Number of milliseconds over which excessive packet loss rate is calculated";
              }
            }  // container excessive-packet-loss-rate
    
            choice jitter-buffer-size {
              leaf jitter-buffer-packets {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 64";
                  }
                }
                description
                  "Number of packets in jitter buffer before packet data is played out in the line";
              }
              leaf jitter-buffer-latency {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 1000";
                  }
                }
                units "milliseconds";
                description
                  "Number of milliseconds delay in jitter buffer before packet data is played out in the line";
              }
              leaf jitter-buffer-auto-adjust {
                type empty;
                description
                  "Automatically adjust jitter buffer";
              }
            }  // choice jitter-buffer-size
    
            leaf bit-rate {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 10240";
                }
              }
              description "In multiples of DS0";
            }
          }  // container cesopsn-options
    
          container clocking {
            description "Interface clock source";
            choice clocking_choices {
              leaf internal {
                type empty;
                description
                  "Clocking provided by local system";
              }
              container external {
                presence "enable external";
                description
                  "Clocking provided by DCE (loop timing)";
              }  // container external
            }  // choice clocking_choices
          }  // container clocking
    
          leaf link-mode {
            type enumeration {
              enum "automatic" {
                value 0;
                description
                  "Automatically negotiate duplex";
              }
              enum "half-duplex" {
                value 1;
                description
                  "Half-duplex operation";
              }
              enum "full-duplex" {
                value 2;
                description
                  "Full-duplex operation";
              }
            }
            description "Link operational mode";
          }
    
          leaf media-type {
            type enumeration {
              enum "copper" {
                value 0;
                description "Copper as media";
              }
              enum "fiber" {
                value 1;
                description "Fiber as media";
              }
            }
            description
              "Interface media type (copper or fiber)";
          }
    
          leaf encapsulation {
            junos:must "(!("interfaces ${interface} container-options container-list"))";
            junos:must-message "encapsulation is not supported for container child interfaces";
            type enumeration {
              enum "ethernet" {
                value 0;
                description
                  "Ethernet physical media";
              }
              enum "fddi" {
                value 1;
                description
                  "FDDI physical media";
              }
              enum "token-ring" {
                value 2;
                description
                  "Token Ring physical media";
              }
              enum "ppp" {
                value 3;
                description "Serial PPP device";
              }
              enum "ppp-ccc" {
                value 4;
                description
                  "Serial PPP device for a cross-connect";
              }
              enum "ppp-tcc" {
                value 5;
                description
                  "Serial PPP device for a translational cross-connect";
              }
              enum "ether-vpls-ppp" {
                value 6;
                description
                  "Ethernet VPLS over PPP (bridging) device";
              }
              enum "frame-relay" {
                value 7;
                description
                  "Frame Relay encapsulation";
              }
              enum "frame-relay-ccc" {
                value 8;
                description
                  "Frame Relay for cross-connect";
              }
              enum "frame-relay-tcc" {
                value 9;
                description
                  "Frame Relay for translational cross-connect";
              }
              enum "extended-frame-relay-ccc" {
                value 10;
                description
                  "Any Frame Relay DLCI for cross-connect";
              }
              enum "extended-frame-relay-tcc" {
                value 11;
                description
                  "Any Frame Relay DLCI for translational cross-connect";
              }
              enum "flexible-frame-relay" {
                value 12;
                description
                  "Multiple Frame Relay encapsulations";
              }
              enum "frame-relay-port-ccc" {
                value 13;
                description
                  "Frame Relay port encapsulation for a cross-connect";
              }
              enum "frame-relay-ether-type" {
                value 14;
                description
                  "Cisco-compatible Frame Relay encapsulation";
              }
              enum "frame-relay-ether-type-tcc" {
                value 15;
                description
                  "Cisco-compatible Frame Relay encapsulation for translational cross-connect";
              }
              enum
                "extended-frame-relay-ether-type-tcc" {
                value 16;
                description
                  "Cisco-compatible Frame Relay encapsulation any DLCI for translational cross-connect";
              }
              enum "cisco-hdlc" {
                value 17;
                description
                  "Cisco-compatible HDLC framing";
              }
              enum "cisco-hdlc-ccc" {
                value 18;
                description
                  "Cisco-compatible HDLC framing for a cross-connect";
              }
              enum "cisco-hdlc-tcc" {
                value 19;
                description
                  "Cisco-compatible HDLC framing for a translational cross-connect";
              }
              enum "vlan-ccc" {
                value 20;
                description
                  "802.1q tagging for a cross-connect";
              }
              enum "extended-vlan-ccc" {
                value 21;
                description
                  "Nonstandard TPID tagging for a cross-connect";
              }
              enum "ethernet-ccc" {
                value 22;
                description
                  "Ethernet cross-connect";
              }
              enum "flexible-ethernet-services" {
                value 23;
                description
                  "Allows per-unit Ethernet encapsulation configuration";
              }
              enum "smds-dxi" {
                value 24;
                description "SMDS DXI framing";
              }
              enum "atm-pvc" {
                value 25;
                description
                  "ATM permanent virtual circuits";
              }
              enum "atm-ccc-cell-relay" {
                value 26;
                description
                  "ATM cell relay encapsulation for cross-connect";
              }
              enum "ethernet-over-atm" {
                value 27;
                description
                  "Ethernet over ATM encapsulation";
              }
              enum "ethernet-tcc" {
                value 28;
                description
                  "Ethernet translational cross-connect";
              }
              enum "extended-vlan-tcc" {
                value 29;
                description
                  "802.1q tagging for a translational cross-connect";
              }
              enum
                "multilink-frame-relay-uni-nni" {
                value 30;
                description
                  "Multilink Frame Relay UNI NNI (FRF.16) encapsulation";
              }
              enum "satop" {
                junos:must "((!(".. t1-options framing") && !(".. e1-options framing")))";
                junos:must-message "SAToP & Framing cannot be configured on same interface";
                junos:must "(!(".. ima-link-options"))";
                junos:must-message "SAToP & IMA cannot be configured on same interface";
                value 31;
                description
                  "Structure-Agnostic TDM over Packet encapsulation";
              }
              enum "cesopsn" {
                value 32;
                description
                  "Structure-Agnostic TDM over Packet encapsulation";
              }
              enum "ima" {
                junos:must "(!(".. satop-options"))";
                junos:must-message "SAToP & IMA cannot be configured on same interface";
                value 33;
                description
                  "Inverse Multiplexing for ATM";
              }
              enum "ethernet-vpls" {
                value 34;
                description
                  "Ethernet virtual private LAN service";
              }
              enum "ethernet-bridge" {
                value 35;
                description
                  "Ethernet layer-2 bridging";
              }
              enum "vlan-vpls" {
                value 36;
                description
                  "VLAN virtual private LAN service";
              }
              enum "vlan-vci-ccc" {
                junos:must "("interfaces ${interface} vlan-vci-tagging")";
                junos:must-message "valid only with vlan-vci-tagging mode";
                value 37;
                description
                  "CCC for VLAN Q-in-Q and ATM VPI/VCI interworking";
              }
              enum "extended-vlan-vpls" {
                value 38;
                description
                  "Extended VLAN virtual private LAN service";
              }
              enum "extended-vlan-bridge" {
                value 39;
                description
                  "VLAN layer-2 bridging";
              }
              enum "multilink-ppp" {
                value 40;
                description "Multilink PPP";
              }
              enum "generic-services" {
                value 41;
                description "Generic services";
              }
            }
            description
              "Physical link-layer encapsulation";
          }
    
          container framing {
            description "Frame type";
            uses apply-advanced;
    
            choice frame {
              leaf lan-phy {
                type empty;
                description
                  "802.3ae 10-Gbps LAN-mode interface";
              }
              leaf wan-phy {
                type empty;
                description
                  "802.3ae 10-Gbps WAN-mode interface";
              }
              leaf sonet {
                type empty;
                description "SONET framing";
              }
              leaf sdh {
                type empty;
                description "SDH framing";
              }
            }  // choice frame
          }  // container framing
    
          container lmi {
            description
              "Local Management Interface settings";
            uses apply-advanced;
    
            leaf n391dte {
              junos:must "(!((".. .. dce" || ".. .. loose-ncp")))";
              junos:must-message "LMI DTE options not valid for DCE interface";
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 255";
                }
              }
              description
                "DTE full status polling interval";
            }
    
            leaf n392dce {
              junos:must "((".. .. dce" || ".. .. loose-ncp"))";
              junos:must-message "LMI DCE options not valid for DTE interface";
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 10";
                }
              }
              description "DCE error threshold";
            }
    
            leaf n392dte {
              junos:must "(!((".. .. dce" || ".. .. loose-ncp")))";
              junos:must-message "LMI DTE options not valid for DCE interface";
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 10";
                }
              }
              description "DTE error threshold";
            }
    
            leaf n393dce {
              junos:must "((".. .. dce" || ".. .. loose-ncp"))";
              junos:must-message "LMI DCE options not valid for DTE interface.";
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 10";
                }
              }
              description
                "DCE monitored event count";
            }
    
            leaf n393dte {
              junos:must "(!((".. .. dce" || ".. .. loose-ncp")))";
              junos:must-message "LMI DTE options not valid for DCE interface";
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 10";
                }
              }
              description
                "DTE monitored event count";
            }
    
            leaf t391dte {
              junos:must "(!((".. .. dce" || ".. .. loose-ncp")))";
              junos:must-message "LMI DTE options not valid for DCE interface";
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "5 .. 30";
                }
              }
              units "seconds";
              description "DTE polling timer";
            }
    
            leaf t392dce {
              junos:must "((".. .. dce" || ".. .. loose-ncp"))";
              junos:must-message "LMI DCE options not valid for DTE interface.";
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "5 .. 30";
                }
              }
              units "seconds";
              description
                "DCE polling verification timer";
            }
    
            leaf lmi-type {
              type enumeration {
                enum "ansi" {
                  value 0;
                  description
                    "Use ANSI Annex D LMI";
                }
                enum "itu" {
                  value 1;
                  description
                    "Use ITU Q933a Annex A LMI";
                }
                enum "c-lmi" {
                  value 2;
                  description
                    "Use Consortium LMI";
                }
              }
              description
                "Specify the Frame Relay LMI type";
            }
          }  // container lmi
    
          container mlfr-uni-nni-bundle-options {
            description
              "Multilink Frame Relay UNI NNI (FRF.16) management settings";
            uses apply-advanced;
    
            container cisco-interoperability {
              description
                "FRF.16 Cisco interoperability settings";
              uses apply-advanced;
    
              leaf send-lip-remove-link-for-link-reject {
                type empty;
                description
                  "Send Link Integrity Protocol remove link on receiving add-link rejection";
              }
            }  // container cisco-interoperability
    
            leaf mrru {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1500 .. 4500";
                }
              }
              units "bytes";
              description
                "Maximum received reconstructed unit";
            }
    
            leaf yellow-differential-delay {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "3 .. 2000";
                }
              }
              units "milliseconds";
              description
                "Yellow differential delay among bundle links to give warning";
            }
    
            leaf red-differential-delay {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "5 .. 2000";
                }
              }
              units "milliseconds";
              description
                "Red differential delay among bundle links to take action";
            }
    
            leaf action-red-differential-delay {
              type enumeration {
                enum "remove-link" {
                  value 0;
                  description
                    "Remove bundle link from service when exceeding red limit";
                }
                enum "disable-tx" {
                  value 1;
                  description
                    "Disable transfer of bundle link when exceeding red limit";
                }
              }
              description
                "Type of actions when differential delay exceeds red limit";
            }
    
            leaf fragment-threshold {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "64 .. 16320";
                }
              }
              units "bytes";
              description
                "Fragmentation threshold";
            }
    
            leaf drop-timeout {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "0 .. 2000";
                }
              }
              units "milliseconds";
              description "Drop timeout";
            }
    
            leaf link-layer-overhead {
              type jt:unsigned-float;
              description
                "Link layer bit stuffing overhead (0.0 .. 50.0 percent)";
            }
    
            leaf lmi-type {
              type enumeration {
                enum "ansi" {
                  value 0;
                  description
                    "Use ANSI Annex D LMI";
                }
                enum "itu" {
                  value 1;
                  description
                    "Use ITU Q933a Annex A LMI";
                }
                enum "c-lmi" {
                  value 2;
                  description
                    "Use Consortium LMI";
                }
              }
              description
                "Specify the multilink Frame Relay UNI NNI LMI type";
            }
    
            leaf minimum-links {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 8";
                }
              }
              description
                "Minimum number of links to sustain the bundle";
            }
    
            leaf hello-timer {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "5 .. 180";
                }
              }
              description "LIP hello timer";
            }
    
            leaf acknowledge-timer {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 10";
                }
              }
              description "LIP ack timer";
            }
    
            leaf acknowledge-retries {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 5";
                }
              }
              description "LIP ack retry times";
            }
    
            leaf n391 {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 255";
                }
              }
              description
                "Multilink Frame Relay UNI NNI full status polling counter";
            }
    
            leaf n392 {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 10";
                }
              }
              description
                "Multilink Frame Relay UNI NNI LMI error threshold";
            }
    
            leaf n393 {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 10";
                }
              }
              description
                "Multilink Frame Relay UNI NNI LMI monitored event count";
            }
    
            leaf t391 {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "5 .. 30";
                }
              }
              description
                "Multilink Frame Relay UNI NNI link integrity verify polling timer";
            }
    
            leaf t392 {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "5 .. 30";
                }
              }
              description
                "Multilink Frame Relay UNI NNI polling verification timer";
            }
          }  // container mlfr-uni-nni-bundle-options
    
          leaf mac {
            type jt:mac-unicast;
            description "Hardware MAC address";
          }
    
          container receive-bucket {
            description
              "Set receive bucket parameters";
            uses dcd_rx_bucket_config;
          }  // container receive-bucket
    
          container transmit-bucket {
            description
              "Set transmit bucket parameters";
            uses dcd_tx_bucket_config;
          }  // container transmit-bucket
    
          leaf shared-interface {
            type empty;
            description
              "Enable shared interface on the interface";
          }
    
          container sonet-options {
            junos:must "((!("interfaces ${interface} container-options") || ("interfaces ${interface} container-options container-type" || "interfaces ${interface} container-options allow-configuration-override")))";
            junos:must-message "sonet-options cannot be configured without allow-configuration-override";
            description
              "SONET interface-specific options";
            uses sonet_options_type;
          }  // container sonet-options
    
          container logical-tunnel-options {
            description
              "Logical Tunnel interface-specific options";
            uses apply-advanced;
    
            container link-protection {
              presence "enable link-protection";
              description
                "Enable link protection mode";
              uses apply-advanced;
    
              leaf revertive {
                junos:must "(!("interfaces ${interface} logical-tunnel-options link-protection non-revertive"))";
                junos:must-message "link-protection revertive and non-revertive are mutually exclusive";
                junos:must "(any "interfaces ${interface} redundancy-group member-interface <*> active")";
                junos:must-message "link-protection mode can be configured only when link-protection is enabled";
                type empty;
                description
                  "Revert back (Default mode) from active backup link to primary, if primary is UP";
              }
    
              leaf non-revertive {
                junos:must "(!("interfaces ${interface} logical-tunnel-options link-protection revertive"))";
                junos:must-message "link-protection revertive and non-revertive are mutually exclusive";
                junos:must "(any "interfaces ${interface} redundancy-group member-interface <*> active")";
                junos:must-message "link-protection mode can be configured only when link-protection is enabled";
                type empty;
                description
                  "Do not revert back from active backup link to primary, if primary is UP";
              }
            }  // container link-protection
    
            leaf per-unit-mac-disable {
              type empty;
              description
                "Disable the creation of per unit mac address on LT IFLs for VPLS/CCC encaps";
            }
          }  // container logical-tunnel-options
    
          container aggregated-sonet-options {
            description
              "Aggregated SONET interface-specific options";
            uses apply-advanced;
    
            leaf minimum-links {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16;
              }
              description
                "Minimum number of aggregated links";
            }
    
            leaf link-speed {
              type enumeration {
                enum "oc3" {
                  value 0;
                  description
                    "Links are OC-3c or STM-1c";
                }
                enum "oc12" {
                  value 1;
                  description
                    "Links are OC-12c or STM-4c";
                }
                enum "oc48" {
                  value 2;
                  description
                    "Links are OC-48c or STM-16c";
                }
                enum "oc192" {
                  value 3;
                  description
                    "Links are OC-192c or STM-64c";
                }
                enum "oc768" {
                  value 4;
                  description
                    "Links are OC-768c or STM-256c";
                }
                enum "mixed" {
                  value 5;
                  description
                    "Links are various speeds";
                }
              }
              description
                "Aggregated links speed";
            }
    
            leaf minimum-bandwidth {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint64 {
                  range "0 .. 159232000000";
                }
              }
              units "bps";
              description
                "Minimum bandwidth necessary to sustain bundle";
            }
          }  // container aggregated-sonet-options
    
          container atm-options {
            junos:must "((!("interfaces ${interface} container-options") || ("interfaces ${interface} container-options container-type" || !("interfaces ${interface} container-options container-list"))))";
            junos:must-message "atm-options cannot be configured on container children";
            description
              "ATM interface-specific options";
            uses apply-advanced;
    
            leaf pic-type {
              type enumeration {
                enum "atm-ce" {
                  value 0;
                  description "CE PIC";
                }
                enum "atm2" {
                  value 1;
                  description "ATM II IQ PIC";
                }
                enum "atm1" {
                  junos:must "(!("interfaces ${interface} container-options"))";
                  junos:must-message "Only ATM-II pics are supported as container member link";
                  value 2;
                  description "ATM I PIC";
                }
              }
              description
                "Type of ATM PIC (ATM I, ATM II or ATM CE)";
            }
    
            leaf cell-bundle-size {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 176";
                }
              }
              units "cells";
              description
                "L2 circuit cell bundle size";
            }
    
            leaf cell-bundle-timeout {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 512";
                }
              }
              units "microseconds";
              description
                "L2 circuit cell bundle timeout";
            }
    
            leaf plp-to-clp {
              type empty;
              description
                "Enable ATM2 PLP to CLP copy";
            }
    
            leaf use-null-cw {
              type empty;
              description
                "Always insert/strip null control words with cell-relay";
            }
    
            container promiscuous-mode {
              presence "enable promiscuous-mode";
              description
                "Set ATM interface to promiscuous mode";
              uses apply-advanced;
    
              list vpi {
                key "name";
                ordered-by user;
                description
                  "Open this VPI in promiscuous mode";
                leaf name {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 255";
                    }
                  }
                  description
                    "Virtual path index";
                }
              }  // list vpi
            }  // container promiscuous-mode
    
            list vpi {
              key "name";
              ordered-by user;
              description
                "Define a virtual path";
              leaf name {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 255";
                  }
                }
                description "Virtual path index";
              }
    
              uses apply-advanced;
    
              leaf maximum-vcs {
                junos:must "(!("interfaces ${interface} container-options"))";
                junos:must-message "Only ATM-II pics are supported as container member link";
                type union {
                  type uint32;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Maximum number of virtual circuits on this VP";
              }
    
              container shaping {
                description
                  "Virtual path traffic-shaping options";
                uses dcd_shaping_config;
              }  // container shaping
    
              container oam-period {
                description "F4 OAM cell period";
                choice oam_period_choices {
                  leaf oam-period {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 900";
                      }
                    }
                    units "seconds";
                    description
                      "F4 OAM cell period";
                  }
                  container disable {
                    presence "enable disable";
                    description
                      "Disable F4 OAM loopback";
                  }  // container disable
                }  // choice oam_period_choices
              }  // container oam-period
    
              container oam-liveness {
                description
                  "F4 OAM virtual path liveness parameters";
                uses apply-advanced;
    
                leaf up-count {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 255";
                    }
                  }
                  description
                    "Number of F4 OAM cells to consider VP up";
                }
    
                leaf down-count {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 255";
                    }
                  }
                  description
                    "Number of F4 OAM cells to consider VP down";
                }
              }  // container oam-liveness
            }  // list vpi
    
            container ilmi {
              presence "enable ilmi";
              description
                "Enable Interim Local Management Interface";
              uses apply-advanced;
            }  // container ilmi
    
            list linear-red-profiles {
              key "name";
              ordered-by user;
              description
                "ATM2 CoS virtual circuit drop profiles";
              leaf name {
                type string {
                  junos:posix-pattern "^.{1,64}$";
                  junos:pattern-message "Must be string of 64 characters or less";
                }
                description
                  "Linear RED profile name";
              }
    
              leaf queue-depth {
                type string;
                units "cells";
                description
                  "Maximum queue depth";
              }
    
              leaf high-plp-threshold {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 100";
                  }
                }
                description
                  "Fill level percentage when linear RED is applied for high PLP";
              }
    
              leaf low-plp-threshold {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 100";
                  }
                }
                description
                  "Fill level percentage when linear RED is applied for low PLP";
              }
    
              leaf high-plp-max-threshold {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 100";
                  }
                }
                description
                  "Fill level percentage with 100 percent packet drop for high PLP";
              }
    
              leaf low-plp-max-threshold {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 100";
                  }
                }
                description
                  "Fill level percentage with 100 percent packet drop for low PLP";
              }
            }  // list linear-red-profiles
    
            list scheduler-maps {
              key "name";
              ordered-by user;
              description
                "ATM2 CoS parameters assigned to forwarding classes";
              leaf name {
                type string {
                  junos:posix-pattern "^((default)|(.{1,64}))$";
                  junos:pattern-message "Must be a string of 64 characters or less and not 'default'";
                }
                description
                  "ATM2 CoS scheduler map name";
              }
    
              uses apply-advanced;
    
              leaf vc-cos-mode {
                type enumeration {
                  enum "strict" {
                    value 0;
                    description
                      "Always schedule high priority queue first";
                  }
                  enum "alternate" {
                    value 1;
                    description
                      "Every other packet from high priority queue (default)";
                  }
                }
                description
                  "ATM2 virtual circuit CoS mode";
              }
    
              list forwarding-class {
                key "name";
                ordered-by user;
                description
                  "Scheduling parameters associated with forwarding class";
                leaf name {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  description
                    "Forwarding class name";
                }
    
                uses apply-advanced;
    
                leaf priority {
                  type enumeration {
                    enum "low" {
                      value 0;
                      description
                        "Low priority queuing";
                    }
                    enum "high" {
                      value 1;
                      description
                        "High priority queuing";
                    }
                  }
                  description
                    "Queuing priority assigned to forwarding class";
                }
    
                container transmit-weight {
                  description "Transmit weight";
                  choice weight-method {
                    leaf percent {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "5 .. 100";
                        }
                      }
                      description
                        "Transmit weight as percentage";
                    }
                    leaf cells {
                      type string;
                      description
                        "Transmit weight by cells count";
                    }
                  }  // choice weight-method
                }  // container transmit-weight
    
                choice drop-profile-method {
                  container epd-threshold {
                    description
                      "Early packet discard threshold for ATM2";
                    uses epd_threshold_config;
                  }  // container epd-threshold
                  leaf linear-red-profile {
                    type string;
                    description
                      "Linear RED profile profile name";
                  }
                }  // choice drop-profile-method
              }  // list forwarding-class
            }  // list scheduler-maps
    
            container mpls {
              description "MPLS options";
              uses mpls_ifd_options;
            }  // container mpls
    
            choice payload-scrambler-choice {
              leaf payload-scrambler {
                type empty;
                description
                  "Enable payload scrambling";
              }
              leaf no-payload-scrambler {
                type empty;
                description
                  "Don't enable payload scrambling";
              }
            }  // choice payload-scrambler-choice
          }  // container atm-options
    
          container multiservice-options {
            description
              "Multiservice interface-specific options";
            uses apply-advanced;
    
            choice syslog-choice {
              leaf syslog {
                type empty;
                description
                  "Enable system logging on this interface";
              }
              leaf no-syslog {
                type empty;
                description
                  "Don't enable system logging on this interface";
              }
            }  // choice syslog-choice
    
            choice core-dump-choice {
              leaf core-dump {
                type empty;
                description
                  "Enable core dumping on this interface";
              }
              leaf no-core-dump {
                type empty;
                description
                  "Don't enable core dumping on this interface";
              }
            }  // choice core-dump-choice
    
            choice dump-on-flow-control-choice {
              leaf dump-on-flow-control {
                type empty;
                status deprecated;
                description
                  "Enable dumping for this interface on prolonged flow-control";
              }
              leaf no-dump-on-flow-control {
                type empty;
                status deprecated;
                description
                  "Don't enable dumping for this interface on prolonged flow-control";
              }
            }  // choice dump-on-flow-control-choice
    
            choice reset-on-flow-control-choice {
              leaf reset-on-flow-control {
                type empty;
                status deprecated;
                description
                  "Enable resetting this interface on prolonged flow-control";
              }
              leaf no-reset-on-flow-control {
                type empty;
                status deprecated;
                description
                  "Don't enable resetting this interface on prolonged flow-control";
              }
            }  // choice reset-on-flow-control-choice
    
            container flow-control-options {
              description
                "Flow control configuration";
              uses apply-advanced;
    
              leaf dump-on-flow-control {
                junos:must "(!(".. up-on-flow-control"))";
                junos:must-message "Option not valid with up-on-flow-control";
                junos:must "(!(".. down-on-flow-control"))";
                junos:must-message "Option not valid with down-on-flow-control";
                junos:must "(!(".. reset-on-flow-control"))";
                junos:must-message "Option not valid with reset-on-flow-control";
                type empty;
                description
                  "Cause core dump during prolonged flow-control";
              }
    
              leaf reset-on-flow-control {
                junos:must "(!(".. up-on-flow-control"))";
                junos:must-message "Option not valid with up-on-flow-control";
                junos:must "(!(".. down-on-flow-control"))";
                junos:must-message "Option not valid with down-on-flow-control";
                junos:must "(!(".. dump-on-flow-control"))";
                junos:must-message "Option not valid with dump-on-flow-control";
                type empty;
                description
                  "Reset interface during prolonged flow-control";
              }
    
              leaf down-on-flow-control {
                junos:must "(!(".. up-on-flow-control"))";
                junos:must-message "Option not valid with up-on-flow-control";
                junos:must "(!(".. reset-on-flow-control"))";
                junos:must-message "Option not valid with reset-on-flow-control";
                junos:must "(!(".. dump-on-flow-control"))";
                junos:must-message "Option not valid with dump-on-flow-control";
                type empty;
                description
                  "Bring interface down during prolonged flow-control";
              }
    
              leaf up-on-flow-control {
                junos:must "(!(".. down-on-flow-control"))";
                junos:must-message "Option not valid with down-on-flow-control";
                junos:must "(!(".. reset-on-flow-control"))";
                junos:must-message "Option not valid with reset-on-flow-control";
                junos:must "(!(".. dump-on-flow-control"))";
                junos:must-message "Option not valid with dump-on-flow-control";
                type empty;
                description
                  "Keep interface up during prolonged flow-control";
              }
            }  // container flow-control-options
          }  // container multiservice-options
    
          container ggsn-options {
            description
              "GGSN interface-specific options";
            uses apply-advanced;
    
            choice syslog-choice {
              leaf syslog {
                type empty;
                description
                  "Enable system logging on this interface";
              }
              leaf no-syslog {
                type empty;
                description
                  "Don't enable system logging on this interface";
              }
            }  // choice syslog-choice
    
            choice core-dump-choice {
              leaf core-dump {
                type empty;
                description
                  "Enable core dumping on this interface";
              }
              leaf no-core-dump {
                type empty;
                description
                  "Don't enable core dumping on this interface";
              }
            }  // choice core-dump-choice
          }  // container ggsn-options
    
          container ppp-options {
            junos:must "((".. encapsulation ppp" || (".. encapsulation ether-vpls-ppp" || !(".. encapsulation"))))";
            junos:must-message "invalid encapsulation";
            description
              "Point-to-Point Protocol (PPP) interface-specific options";
            uses ppp_options_type;
          }  // container ppp-options
    
          container lsq-failure-options {
            description
              "Link services queuing failure options";
            uses apply-advanced;
    
            list trigger-link-failure {
              key "name";
              ordered-by user;
              description
                "Link on which to trigger failure";
              leaf name {
                type union {
                  type jt:interface-device;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description "Interface name";
              }
    
              uses apply-advanced;
            }  // list trigger-link-failure
    
            choice no-termination-request-choice {
              leaf no-termination-request {
                type empty;
                description
                  "Do not send PPP termination requests";
              }
              leaf no-no-termination-request {
                type empty;
                description
                  "Don't do not send PPP termination requests";
              }
            }  // choice no-termination-request-choice
          }  // container lsq-failure-options
    
          container services-options {
            description
              "Services interface-specific options";
            uses apply-advanced;
    
            container syslog {
              description
                "Define system log parameters";
              uses log-object;
            }  // container syslog
    
            container jflow-log {
              description
                "Define Jflow-log parameters.";
              uses apply-advanced;
    
              leaf message-rate-limit {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 2147483647";
                  }
                }
                units "messages per second";
                description
                  "Maximum jflow-log NAT error events allowed per second from this interface";
              }
            }  // container jflow-log
    
            container deterministic-nat-configuration-log-interval {
              presence
                "enable deterministic-nat-configuration-log-interval";
              description
                "Define Deterministic NAT parameters";
              uses apply-advanced;
    
              leaf interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1800 .. 86400";
                  }
                }
                units "seconds";
                description
                  "Interval in which deterministic NAT logs are generated";
              }
            }  // container deterministic-nat-configuration-log-interval
    
            leaf open-timeout {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "4 .. 300";
                }
              }
              units "seconds";
              description
                "Timeout period for TCP session establishment";
            }
    
            leaf close-timeout {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 300";
                }
              }
              units "seconds";
              description
                "Timeout period for TCP session tear-down";
            }
    
            leaf inactivity-timeout {
              type union {
                type uint32;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              units "seconds";
              description
                "Inactivity timeout period for established sessions (4..86400)";
            }
    
            leaf inactivity-tcp-timeout {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "4 .. 86400";
                }
              }
              units "seconds";
              description
                "Inactivity timeout period for TCP established sessions";
            }
    
            leaf inactivity-asymm-tcp-timeout {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "4 .. 86400";
                }
              }
              units "seconds";
              description
                "Inactivity timeout period for asymmetric TCP established sessions";
            }
    
            leaf inactivity-non-tcp-timeout {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "4 .. 86400";
                }
              }
              units "seconds";
              description
                "Inactivity timeout period for non-TCP established sessions";
            }
    
            leaf session-timeout {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "4 .. 86400";
                }
              }
              units "seconds";
              description
                "Session timeout period for established sessions";
            }
    
            leaf disable-global-timeout-override {
              type empty;
              description
                "Disallow overriding  global inactivity or session timeout";
            }
    
            leaf tcp-tickles {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint8 {
                  range "0 .. 30";
                }
              }
              default "4";
              description
                "Number of TCP keep-alive packets to be sent for bi-directional TCP flows";
            }
    
            leaf fragment-limit {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint8 {
                  range "1 .. 250";
                }
              }
              default "250";
              description
                "Maximum number of fragments allowed for a packet";
            }
    
            leaf reassembly-timeout {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint8 {
                  range "1 .. 60";
                }
              }
              units "seconds";
              default "4";
              description
                "Re-assembly timeout (seconds) for fragments of a packet";
            }
    
            leaf cgn-pic {
              type empty;
              description
                "PIC will be used for Carrier Grade NAT configuration only";
            }
    
            leaf pba-interim-logging-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 86400";
                }
              }
              units "seconds";
              default "0";
              description
                "Interim logging interval in seconds";
            }
    
            container session-limit {
              presence "enable session-limit";
              description "Session limit";
              uses apply-advanced;
    
              leaf maximum {
                type string;
                description
                  "Maximum number of sessions allowed simultaneously";
              }
    
              leaf rate {
                type string;
                description
                  "Maximum number of new sessions allowed per second";
              }
    
              leaf cpu-load-threshold {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "1 .. 100";
                  }
                }
                units "percent";
                description
                  "CPU limit in percentage for auto-tuning of session rate";
              }
            }  // container session-limit
    
            leaf enable-subscriber-analysis {
              junos:must "(!(".. disable-subscriber-analysis"))";
              junos:must-message "can not set with enable-subscriber-analysis";
              type empty;
              description
                "Enable subscriber analysis on the interface";
            }
    
            leaf disable-subscriber-analysis {
              junos:must "(!(".. enable-subscriber-analysis"))";
              junos:must-message "can not set with disable-subscriber-analysis";
              type empty;
              description
                "Disable subscriber analysis on the interface";
            }
    
            leaf disable-usp-tracing {
              type empty;
              description
                "Disable usp tracing on this pic";
            }
    
            leaf disable-drop-flows {
              type empty;
              description
                "Disable drop flows on this pic";
            }
    
            container ignore-errors {
              presence "enable ignore-errors";
              description
                "Ignore anomalies or errors";
              leaf tcp {
                type empty;
                description
                  "TCP protocol errors";
              }
    
              leaf alg {
                type empty;
                description
                  "ALG anomalies or errors";
              }
            }  // container ignore-errors
    
            container capture {
              description
                "Packet capture for SFW and NAT on the Services PIC";
              uses apply-advanced;
    
              leaf capture-size {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 344000";
                  }
                }
                description
                  "The number of packets to store";
              }
    
              leaf pkt-size {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "64 .. 15000";
                  }
                }
                description
                  "Number of bytes to be saved from each packet";
              }
    
              leaf logs-per-packet {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "0 .. 500";
                  }
                }
                description
                  "The number of trace messages stored for each packet";
              }
    
              leaf max-log-line-size {
                type union {
                  type uint8;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "The maximum length of a stored trace message";
              }
    
              container filter {
                presence "enable filter";
                description
                  "Filtering options for the packet capture";
                uses apply-advanced;
    
                container source-ip {
                  description
                    "Filter based on source-ip (and wildcard)";
                  leaf ip {
                    type jt:ipaddr;
                    description "Source IP";
                  }
    
                  leaf wildcard {
                    type jt:ipaddr;
                    description
                      "Source IP wildcard";
                  }
                }  // container source-ip
    
                container dest-ip {
                  description
                    "Filter based on dest-ip (and wildcard)";
                  leaf ip {
                    type jt:ipaddr;
                    description "Dest IP";
                  }
    
                  leaf wildcard {
                    type jt:ipaddr;
                    description
                      "Dest IP wildcard";
                  }
                }  // container dest-ip
    
                container sw-sip {
                  description
                    "Filter based on source softwire ip (and wildcard)";
                  leaf ip {
                    type jt:ipv6addr;
                    description
                      "Source softwire IP";
                  }
    
                  leaf wildcard {
                    type jt:ipv6addr;
                    description
                      "Source IP wildcard";
                  }
                }  // container sw-sip
    
                container sw-dip {
                  description
                    "Filter based on destination softwire ip (and wildcard)";
                  leaf ip {
                    type jt:ipaddr;
                    description
                      "Destination softwire IP";
                  }
    
                  leaf wildcard {
                    type jt:ipaddr;
                    description
                      "Destination IP wildcard";
                  }
                }  // container sw-dip
    
                container sport-range {
                  description
                    "Filter based on source port";
                  leaf low {
                    type union {
                      type uint16;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description
                      "Source port range start";
                  }
    
                  leaf high {
                    type union {
                      type uint16;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description
                      "Source port range end";
                  }
                }  // container sport-range
    
                container dport-range {
                  description
                    "Filter based on destination port";
                  leaf low {
                    type union {
                      type uint16;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description
                      "Destination port range start";
                  }
    
                  leaf high {
                    type union {
                      type uint16;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description
                      "Destination port range end";
                  }
                }  // container dport-range
    
                leaf proto {
                  type enumeration {
                    enum "icmp" {
                      value 0;
                    }
                    enum "tcp" {
                      value 1;
                    }
                    enum "udp" {
                      value 2;
                    }
                  }
                  description
                    "Filter based on L4 protocol";
                }
              }  // container filter
            }  // container capture
    
            container flow {
              description
                "Define flow parameters";
              uses apply-advanced;
    
              container traceoptions {
                description
                  "Trace options for flow services";
              }  // container traceoptions
            }  // container flow
    
            leaf fpc-pic-information {
              type empty;
              description
                "Include FPC and PIC slot number in the syslogs";
            }
    
            leaf utc-timestamp {
              type empty;
              description
                "Use UTC time for security log timestamps";
            }
    
            leaf syslog-local-system-timestamp {
              type empty;
              description
                "Use local system time for services syslog timestamp";
            }
          }  // container services-options
    
          container t3-options {
            junos:must "((!("interfaces ${interface} container-options") || ("interfaces ${interface} container-options container-type" || "interfaces ${interface} container-options allow-configuration-override")))";
            junos:must-message "t1-options cannot be configured without allow-configuration-override";
            description
              "T3 interface-specific options";
            uses apply-advanced;
    
            leaf loopback {
              type enumeration {
                enum "local" {
                  value 0;
                  description "Local loopback";
                }
                enum "remote" {
                  value 1;
                  description "Remote loopback";
                }
                enum "payload" {
                  value 2;
                  description "Payload loopback";
                }
              }
              description "Loopback mode";
            }
    
            choice long-buildout-choice {
              leaf long-buildout {
                type empty;
                description
                  "Set hardware to drive line longer than 255 feet";
              }
              leaf no-long-buildout {
                type empty;
                description
                  "Don't set hardware to drive line longer than 255 feet";
              }
            }  // choice long-buildout-choice
    
            choice loop-timing-choice {
              leaf loop-timing {
                type empty;
                description
                  "Set loop timing for T3";
              }
              leaf no-loop-timing {
                type empty;
                description
                  "Don't set loop timing for T3";
              }
            }  // choice loop-timing-choice
    
            container compatibility-mode {
              description
                "Set CSU compatibility mode";
              choice vendor {
                container larscom {
                  junos:must "(!(".. .. unframed"))";
                  junos:must-message "unframed and larscom cannot coexist";
                  presence "enable larscom";
                  description
                    "Compatible with Larscom CSU";
                  leaf subrate {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 14";
                      }
                    }
                    description
                      "Set subrate value";
                  }
                }  // container larscom
                container verilink {
                  junos:must "(!(".. .. unframed"))";
                  junos:must-message "unframed and verilink cannot coexist";
                  presence "enable verilink";
                  description
                    "Compatible with Verilink CSU (not on 2/4-port T3 PIC)";
                  leaf subrate {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 28";
                      }
                    }
                    description
                      "Set subrate value";
                  }
                }  // container verilink
                container adtran {
                  junos:must "(!(".. .. unframed"))";
                  junos:must-message "unframed and adtran cannot coexist";
                  presence "enable adtran";
                  description
                    "Compatible with Adtran CSU (not on 2/4-port T3 PIC)";
                  leaf subrate {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 588";
                      }
                    }
                    description
                      "Set subrate value";
                  }
                }  // container adtran
                container kentrox {
                  presence "enable kentrox";
                  description
                    "Compatible with Kentrox CSU";
                  leaf subrate {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 69";
                      }
                    }
                    description
                      "Set subrate value (not on 2/4-port T3 PIC)";
                  }
                }  // container kentrox
                container digital-link {
                  junos:must "(!(".. .. unframed"))";
                  junos:must-message "unframed and digital-link cannot coexist";
                  presence "enable digital-link";
                  description
                    "Compatible with Digital Link CSU";
                  leaf subrate {
                    type enumeration {
                      enum "301Kb" {
                        value 0;
                        description "301 Kbps";
                      }
                      enum "601Kb" {
                        value 1;
                        description "601 Kbps";
                      }
                      enum "902Kb" {
                        value 2;
                        description "902 Kbps";
                      }
                      enum "1.2Mb" {
                        value 3;
                        description "1.2 Mbps";
                      }
                      enum "1.5Mb" {
                        value 4;
                        description "1.5 Mbps";
                      }
                      enum "1.8Mb" {
                        value 5;
                        description "1.8 Mbps";
                      }
                      enum "2.1Mb" {
                        value 6;
                        description "2.1 Mbps";
                      }
                      enum "2.4Mb" {
                        value 7;
                        description "2.4 Mbps";
                      }
                      enum "2.7Mb" {
                        value 8;
                        description "2.7 Mbps";
                      }
                      enum "3.0Mb" {
                        value 9;
                        description "3.0 Mbps";
                      }
                      enum "3.3Mb" {
                        value 10;
                        description "3.3 Mbps";
                      }
                      enum "3.6Mb" {
                        value 11;
                        description "3.6 Mbps";
                      }
                      enum "3.9Mb" {
                        value 12;
                        description "3.9 Mbps";
                      }
                      enum "4.2Mb" {
                        value 13;
                        description "4.2 Mbps";
                      }
                      enum "4.5Mb" {
                        value 14;
                        description "4.5 Mbps";
                      }
                      enum "4.8Mb" {
                        value 15;
                        description "4.8 Mbps";
                      }
                      enum "5.1Mb" {
                        value 16;
                        description "5.1 Mbps";
                      }
                      enum "5.4Mb" {
                        value 17;
                        description "5.4 Mbps";
                      }
                      enum "5.7Mb" {
                        value 18;
                        description "5.7 Mbps";
                      }
                      enum "6.0Mb" {
                        value 19;
                        description "6.0 Mbps";
                      }
                      enum "6.3Mb" {
                        value 20;
                        description "6.3 Mbps";
                      }
                      enum "6.6Mb" {
                        value 21;
                        description "6.6 Mbps";
                      }
                      enum "6.9Mb" {
                        value 22;
                        description "6.9 Mbps";
                      }
                      enum "7.2Mb" {
                        value 23;
                        description "7.2 Mbps";
                      }
                      enum "7.5Mb" {
                        value 24;
                        description "7.5 Mbps";
                      }
                      enum "7.8Mb" {
                        value 25;
                        description "7.8 Mbps";
                      }
                      enum "8.1Mb" {
                        value 26;
                        description "8.1 Mbps";
                      }
                      enum "8.4Mb" {
                        value 27;
                        description "8.4 Mbps";
                      }
                      enum "8.7Mb" {
                        value 28;
                        description "8.7 Mbps";
                      }
                      enum "9.0Mb" {
                        value 29;
                        description "9.0 Mbps";
                      }
                      enum "9.3Mb" {
                        value 30;
                        description "9.3 Mbps";
                      }
                      enum "9.6Mb" {
                        value 31;
                        description "9.6 Mbps";
                      }
                      enum "9.9Mb" {
                        value 32;
                        description "9.9 Mbps";
                      }
                      enum "10.2Mb" {
                        value 33;
                        description "10.2 Mbps";
                      }
                      enum "10.5Mb" {
                        value 34;
                        description "10.5 Mbps";
                      }
                      enum "10.8Mb" {
                        value 35;
                        description "10.8 Mbps";
                      }
                      enum "11.1Mb" {
                        value 36;
                        description "11.1 Mbps";
                      }
                      enum "11.4Mb" {
                        value 37;
                        description "11.4 Mbps";
                      }
                      enum "11.7Mb" {
                        value 38;
                        description "11.7 Mbps";
                      }
                      enum "12.0Mb" {
                        value 39;
                        description "12.0 Mbps";
                      }
                      enum "12.3Mb" {
                        value 40;
                        description "12.3 Mbps";
                      }
                      enum "12.6Mb" {
                        value 41;
                        description "12.6 Mbps";
                      }
                      enum "12.9Mb" {
                        value 42;
                        description "12.9 Mbps";
                      }
                      enum "13.2Mb" {
                        value 43;
                        description "13.2 Mbps";
                      }
                      enum "13.5Mb" {
                        value 44;
                        description "13.5 Mbps";
                      }
                      enum "13.8Mb" {
                        value 45;
                        description "13.8 Mbps";
                      }
                      enum "14.1Mb" {
                        value 46;
                        description "14.1 Mbps";
                      }
                      enum "14.4Mb" {
                        value 47;
                        description "14.4 Mbps";
                      }
                      enum "14.7Mb" {
                        value 48;
                        description "14.7 Mbps";
                      }
                      enum "15.0Mb" {
                        value 49;
                        description "15.0 Mbps";
                      }
                      enum "15.3Mb" {
                        value 50;
                        description "15.3 Mbps";
                      }
                      enum "15.6Mb" {
                        value 51;
                        description "15.6 Mbps";
                      }
                      enum "15.9Mb" {
                        value 52;
                        description "15.9 Mbps";
                      }
                      enum "16.2Mb" {
                        value 53;
                        description "16.2 Mbps";
                      }
                      enum "16.5Mb" {
                        value 54;
                        description "16.5 Mbps";
                      }
                      enum "16.8Mb" {
                        value 55;
                        description "16.8 Mbps";
                      }
                      enum "17.1Mb" {
                        value 56;
                        description "17.1 Mbps";
                      }
                      enum "17.4Mb" {
                        value 57;
                        description "17.4 Mbps";
                      }
                      enum "17.7Mb" {
                        value 58;
                        description "17.7 Mbps";
                      }
                      enum "18.0Mb" {
                        value 59;
                        description "18.0 Mbps";
                      }
                      enum "18.3Mb" {
                        value 60;
                        description "18.3 Mbps";
                      }
                      enum "18.6Mb" {
                        value 61;
                        description "18.6 Mbps";
                      }
                      enum "18.9Mb" {
                        value 62;
                        description "18.9 Mbps";
                      }
                      enum "19.2Mb" {
                        value 63;
                        description "19.2 Mbps";
                      }
                      enum "19.5Mb" {
                        value 64;
                        description "19.5 Mbps";
                      }
                      enum "19.8Mb" {
                        value 65;
                        description "19.8 Mbps";
                      }
                      enum "20.1Mb" {
                        value 66;
                        description "20.1 Mbps";
                      }
                      enum "20.5Mb" {
                        value 67;
                        description "20.5 Mbps";
                      }
                      enum "20.8Mb" {
                        value 68;
                        description "20.8 Mbps";
                      }
                      enum "21.1Mb" {
                        value 69;
                        description "21.1 Mbps";
                      }
                      enum "21.4Mb" {
                        value 70;
                        description "21.4 Mbps";
                      }
                      enum "21.7Mb" {
                        value 71;
                        description "21.7 Mbps";
                      }
                      enum "22.0Mb" {
                        value 72;
                        description "22.0 Mbps";
                      }
                      enum "22.3Mb" {
                        value 73;
                        description "22.3 Mbps";
                      }
                      enum "22.6Mb" {
                        value 74;
                        description "22.6 Mbps";
                      }
                      enum "22.9Mb" {
                        value 75;
                        description "22.9 Mbps";
                      }
                      enum "23.2Mb" {
                        value 76;
                        description "23.2 Mbps";
                      }
                      enum "23.5Mb" {
                        value 77;
                        description "23.5 Mbps";
                      }
                      enum "23.8Mb" {
                        value 78;
                        description "23.8 Mbps";
                      }
                      enum "24.1Mb" {
                        value 79;
                        description "24.1 Mbps";
                      }
                      enum "24.4Mb" {
                        value 80;
                        description "24.4 Mbps";
                      }
                      enum "24.7Mb" {
                        value 81;
                        description "24.7 Mbps";
                      }
                      enum "25.0Mb" {
                        value 82;
                        description "25.0 Mbps";
                      }
                      enum "25.3Mb" {
                        value 83;
                        description "25.3 Mbps";
                      }
                      enum "25.6Mb" {
                        value 84;
                        description "25.6 Mbps";
                      }
                      enum "25.9Mb" {
                        value 85;
                        description "25.9 Mbps";
                      }
                      enum "26.2Mb" {
                        value 86;
                        description "26.2 Mbps";
                      }
                      enum "26.5Mb" {
                        value 87;
                        description "26.5 Mbps";
                      }
                      enum "26.8Mb" {
                        value 88;
                        description "26.8 Mbps";
                      }
                      enum "27.1Mb" {
                        value 89;
                        description "27.1 Mbps";
                      }
                      enum "27.4Mb" {
                        value 90;
                        description "27.4 Mbps";
                      }
                      enum "27.7Mb" {
                        value 91;
                        description "27.7 Mbps";
                      }
                      enum "28.0Mb" {
                        value 92;
                        description "28.0 Mbps";
                      }
                      enum "28.3Mb" {
                        value 93;
                        description "28.3 Mbps";
                      }
                      enum "28.6Mb" {
                        value 94;
                        description "28.6 Mbps";
                      }
                      enum "28.9Mb" {
                        value 95;
                        description "28.9 Mbps";
                      }
                      enum "29.2Mb" {
                        value 96;
                        description "29.2 Mbps";
                      }
                      enum "29.5Mb" {
                        value 97;
                        description "29.5 Mbps";
                      }
                      enum "29.8Mb" {
                        value 98;
                        description "29.8 Mbps";
                      }
                      enum "30.1Mb" {
                        value 99;
                        description "30.1 Mbps";
                      }
                      enum "30.4Mb" {
                        value 100;
                        description "30.4 Mbps";
                      }
                      enum "30.7Mb" {
                        value 101;
                        description "30.7 Mbps";
                      }
                      enum "31.0Mb" {
                        value 102;
                        description "31.0 Mbps";
                      }
                      enum "31.3Mb" {
                        value 103;
                        description "31.3 Mbps";
                      }
                      enum "31.6Mb" {
                        value 104;
                        description "31.6 Mbps";
                      }
                      enum "31.9Mb" {
                        value 105;
                        description "31.9 Mbps";
                      }
                      enum "32.2Mb" {
                        value 106;
                        description "32.2 Mbps";
                      }
                      enum "32.5Mb" {
                        value 107;
                        description "32.5 Mbps";
                      }
                      enum "32.8Mb" {
                        value 108;
                        description "32.8 Mbps";
                      }
                      enum "33.1Mb" {
                        value 109;
                        description "33.1 Mbps";
                      }
                      enum "33.4Mb" {
                        value 110;
                        description "33.4 Mbps";
                      }
                      enum "33.7Mb" {
                        value 111;
                        description "33.7 Mbps";
                      }
                      enum "34.0Mb" {
                        value 112;
                        description "34.0 Mbps";
                      }
                      enum "34.3Mb" {
                        value 113;
                        description "34.3 Mbps";
                      }
                      enum "34.6Mb" {
                        value 114;
                        description "34.6 Mbps";
                      }
                      enum "34.9Mb" {
                        value 115;
                        description "34.9 Mbps";
                      }
                      enum "35.2Mb" {
                        value 116;
                        description "35.2 Mbps";
                      }
                      enum "35.5Mb" {
                        value 117;
                        description "35.5 Mbps";
                      }
                      enum "35.8Mb" {
                        value 118;
                        description "35.8 Mbps";
                      }
                      enum "36.1Mb" {
                        value 119;
                        description "36.1 Mbps";
                      }
                      enum "36.4Mb" {
                        value 120;
                        description "36.4 Mbps";
                      }
                      enum "36.7Mb" {
                        value 121;
                        description "36.7 Mbps";
                      }
                      enum "37.0Mb" {
                        value 122;
                        description "37.0 Mbps";
                      }
                      enum "37.3Mb" {
                        value 123;
                        description "37.3 Mbps";
                      }
                      enum "37.6Mb" {
                        value 124;
                        description "37.6 Mbps";
                      }
                      enum "37.9Mb" {
                        value 125;
                        description "37.9 Mbps";
                      }
                      enum "38.2Mb" {
                        value 126;
                        description "38.2 Mbps";
                      }
                      enum "38.5Mb" {
                        value 127;
                        description "38.5 Mbps";
                      }
                      enum "38.8Mb" {
                        value 128;
                        description "38.8 Mbps";
                      }
                      enum "39.1Mb" {
                        value 129;
                        description "39.1 Mbps";
                      }
                      enum "39.4Mb" {
                        value 130;
                        description "39.4 Mbps";
                      }
                      enum "39.7Mb" {
                        value 131;
                        description "39.7 Mbps";
                      }
                      enum "40.0Mb" {
                        value 132;
                        description "40.0 Mbps";
                      }
                      enum "40.3Mb" {
                        value 133;
                        description "40.3 Mbps";
                      }
                      enum "40.6Mb" {
                        value 134;
                        description "40.6 Mbps";
                      }
                      enum "40.9Mb" {
                        value 135;
                        description "40.9 Mbps";
                      }
                      enum "41.2Mb" {
                        value 136;
                        description "41.2 Mbps";
                      }
                      enum "41.5Mb" {
                        value 137;
                        description "41.5 Mbps";
                      }
                      enum "41.8Mb" {
                        value 138;
                        description "41.8 Mbps";
                      }
                      enum "42.1Mb" {
                        value 139;
                        description "42.1 Mbps";
                      }
                      enum "42.4Mb" {
                        value 140;
                        description "42.4 Mbps";
                      }
                      enum "42.7Mb" {
                        value 141;
                        description "42.7 Mbps";
                      }
                      enum "43.0Mb" {
                        value 142;
                        description "43.0 Mbps";
                      }
                      enum "43.3Mb" {
                        value 143;
                        description "43.3 Mbps";
                      }
                      enum "43.6Mb" {
                        value 144;
                        description "43.6 Mbps";
                      }
                      enum "43.9Mb" {
                        value 145;
                        description "43.9 Mbps";
                      }
                      enum "44.2Mb" {
                        value 146;
                        description "44.2 Mbps";
                      }
                    }
                    description
                      "Set subrate value";
                  }
                }  // container digital-link
              }  // choice vendor
            }  // container compatibility-mode
    
            choice payload-scrambler-choice {
              leaf payload-scrambler {
                type empty;
                description
                  "Enable payload scrambling";
              }
              leaf no-payload-scrambler {
                type empty;
                description
                  "Don't enable payload scrambling";
              }
            }  // choice payload-scrambler-choice
    
            choice cbit-parity-choice {
              leaf cbit-parity {
                junos:must "(!(".. unframed"))";
                junos:must-message "cbit-parity and unframed cannot coexist";
                type empty;
                description
                  "Enable C-bit parity mode";
              }
              leaf no-cbit-parity {
                junos:must "(!(".. unframed"))";
                junos:must-message "cbit-parity and unframed cannot coexist";
                type empty;
                description
                  "Don't enable C-bit parity mode";
              }
            }  // choice cbit-parity-choice
    
            leaf fcs {
              type enumeration {
                enum "32" {
                  value 0;
                  description "32-bit mode";
                }
                enum "16" {
                  value 1;
                  description "16-bit mode";
                }
              }
              description "Frame checksum";
            }
    
            leaf idle-cycle-flag {
              type enumeration {
                enum "flags" {
                  value 0;
                  description
                    "Transmit 0x7E in idle cycles";
                }
                enum "ones" {
                  value 1;
                  description
                    "Transmit 0xFF (all ones) in idle cycles";
                }
              }
              description
                "Value to transmit in idle cycles";
            }
    
            leaf start-end-flag {
              type enumeration {
                enum "shared" {
                  value 0;
                  description
                    "Share start/end flags on transmit";
                }
                enum "filler" {
                  value 1;
                  description
                    "Send two idle cycles between start/end flags";
                }
              }
              description
                "Set start/end flags on transmission";
            }
    
            choice feac-loop-respond-choice {
              leaf feac-loop-respond {
                type empty;
                description
                  "Respond to FEAC loop requests";
              }
              leaf no-feac-loop-respond {
                type empty;
                description
                  "Don't respond to FEAC loop requests";
              }
            }  // choice feac-loop-respond-choice
    
            leaf bert-algorithm {
              type enumeration {
                enum "pseudo-2e3" {
                  value 0;
                  description
                    "Pattern is 2^3 - 1";
                }
                enum "pseudo-2e4" {
                  value 1;
                  description
                    "Pattern is 2^4 - 1";
                }
                enum "pseudo-2e5" {
                  value 2;
                  description
                    "Pattern is 2^5 - 1";
                }
                enum "pseudo-2e6" {
                  value 3;
                  description
                    "Pattern is 2^6 - 1";
                }
                enum "pseudo-2e7" {
                  value 4;
                  description
                    "Pattern is 2^7 - 1";
                }
                enum "pseudo-2e9-o153" {
                  value 5;
                  description
                    "Pattern is 2^9 - 1 (per O.153 standard)";
                }
                enum "pseudo-2e10" {
                  value 6;
                  description
                    "Pattern is 2^10 - 1";
                }
                enum "pseudo-2e11-o152" {
                  value 7;
                  description
                    "Pattern is 2^11 -1 (per O.152 standard)";
                }
                enum "pseudo-2e15-o151" {
                  value 8;
                  description
                    "Pattern is 2^15 - 1 (per O.151 standard)";
                }
                enum "pseudo-2e17" {
                  value 9;
                  description
                    "Pattern is 2^17 - 1";
                }
                enum "pseudo-2e18" {
                  value 10;
                  description
                    "Pattern is 2^18 - 1";
                }
                enum "pseudo-2e20-o153" {
                  value 11;
                  description
                    "Pattern is 2^20 - 1 (per O.153 standard)";
                }
                enum "pseudo-2e20-o151" {
                  value 12;
                  description
                    "Pattern is 2^20 - 1 (per O.151 standard)";
                }
                enum "pseudo-2e21" {
                  value 13;
                  description
                    "Pattern is 2^21 - 1";
                }
                enum "pseudo-2e22" {
                  value 14;
                  description
                    "Pattern is 2^22 - 1";
                }
                enum "pseudo-2e23-o151" {
                  value 15;
                  description
                    "Pattern is 2^23 (per O.151 standard)";
                }
                enum "pseudo-2e25" {
                  value 16;
                  description
                    "Pattern is 2^25 - 1";
                }
                enum "pseudo-2e28" {
                  value 17;
                  description
                    "Pattern is 2^28 - 1";
                }
                enum "pseudo-2e29" {
                  value 18;
                  description
                    "Pattern is 2^29 - 1";
                }
                enum "pseudo-2e31" {
                  value 19;
                  description
                    "Pattern is 2^31 - 1";
                }
                enum "pseudo-2e32" {
                  value 20;
                  description
                    "Pattern is 2^32 - 1";
                }
                enum "all-ones-repeating" {
                  value 21;
                  description
                    "Repeating one bits";
                }
                enum "all-zeros-repeating" {
                  value 22;
                  description
                    "Repeating zero bits";
                }
                enum "alternating-ones-zeros" {
                  value 23;
                  description
                    "Alternating ones and zeros";
                }
                enum
                  "alternating-double-ones-zeros" {
                  value 24;
                  description
                    "Alternating pairs of ones and zeros";
                }
                enum "repeating-3-in-24" {
                  value 25;
                  description
                    "3 bits in 24 are set";
                }
                enum "repeating-1-in-8" {
                  value 26;
                  description
                    "1 bit in 8 is set";
                }
                enum "repeating-1-in-4" {
                  value 27;
                  description
                    "1 bit in 4 is set";
                }
              }
              description "Set BERT algorithm";
            }
    
            leaf bert-error-rate {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 7";
                }
              }
              description
                "Bit error rate (10^-n for n > 0, and zero for n = 0)";
            }
    
            leaf bert-period {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 240";
                }
              }
              units "seconds";
              description "Length of BERT test";
            }
    
            leaf buildout {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 450";
                }
              }
              units "feet";
              description "Line buildout";
            }
    
            leaf atm-encapsulation {
              type enumeration {
                enum "plcp" {
                  value 0;
                  description
                    "PLCP encapsulation";
                }
                enum "direct" {
                  value 1;
                  description
                    "ATM direct mapping";
                }
              }
              description
                "DS-3 interface encapsulation";
            }
          }  // container t3-options
    
          container e3-options {
            junos:must "((!("interfaces ${interface} container-options") || ("interfaces ${interface} container-options container-type" || "interfaces ${interface} container-options allow-configuration-override")))";
            junos:must-message "t1-options cannot be configured without allow-configuration-override";
            description
              "E3 interface-specific options";
            uses apply-advanced;
    
            leaf loopback {
              type enumeration {
                enum "local" {
                  value 0;
                  description "Local loopback";
                }
                enum "remote" {
                  value 1;
                  description "Remote loopback";
                }
              }
              description "Loopback mode";
            }
    
            choice unframed-choice {
              leaf unframed {
                type empty;
                description
                  "Enable unframed mode";
              }
              leaf no-unframed {
                type empty;
                description
                  "Don't enable unframed mode";
              }
            }  // choice unframed-choice
    
            container compatibility-mode {
              description
                "Set CSU compatibility mode";
              choice vendor {
                leaf larscom {
                  type empty;
                  description
                    "Compatible with Larscom CSU (only non IQ E3 interfaces)";
                }
                container digital-link {
                  presence "enable digital-link";
                  description
                    "Compatible with Digital Link CSU";
                  leaf subrate {
                    type enumeration {
                      enum "358Kb" {
                        value 0;
                        description "358 Kbps";
                      }
                      enum "716Kb" {
                        value 1;
                        description "716 Kbps";
                      }
                      enum "1.1Mb" {
                        value 2;
                        description "1.1 Mbps";
                      }
                      enum "1.4Mb" {
                        value 3;
                        description "1.4 Mbps";
                      }
                      enum "1.8Mb" {
                        value 4;
                        description "1.8 Mbps";
                      }
                      enum "2.1Mb" {
                        value 5;
                        description "2.1 Mbps";
                      }
                      enum "2.5Mb" {
                        value 6;
                        description "2.5 Mbps";
                      }
                      enum "2.9Mb" {
                        value 7;
                        description "2.9 Mbps";
                      }
                      enum "3.2Mb" {
                        value 8;
                        description "3.2 Mbps";
                      }
                      enum "3.6Mb" {
                        value 9;
                        description "3.6 Mbps";
                      }
                      enum "3.9Mb" {
                        value 10;
                        description "3.9 Mbps";
                      }
                      enum "4.3Mb" {
                        value 11;
                        description "4.3 Mbps";
                      }
                      enum "4.7Mb" {
                        value 12;
                        description "4.7 Mbps";
                      }
                      enum "5.0Mb" {
                        value 13;
                        description "5.0 Mbps";
                      }
                      enum "5.4Mb" {
                        value 14;
                        description "5.4 Mbps";
                      }
                      enum "5.7Mb" {
                        value 15;
                        description "5.7 Mbps";
                      }
                      enum "6.1Mb" {
                        value 16;
                        description "6.1 Mbps";
                      }
                      enum "6.4Mb" {
                        value 17;
                        description "6.4 Mbps";
                      }
                      enum "6.8Mb" {
                        value 18;
                        description "6.8 Mbps";
                      }
                      enum "7.2Mb" {
                        value 19;
                        description "7.2 Mbps";
                      }
                      enum "7.5Mb" {
                        value 20;
                        description "7.5 Mbps";
                      }
                      enum "7.9Mb" {
                        value 21;
                        description "7.9 Mbps";
                      }
                      enum "8.2Mb" {
                        value 22;
                        description "8.2 Mbps";
                      }
                      enum "8.6Mb" {
                        value 23;
                        description "8.6 Mbps";
                      }
                      enum "9.0Mb" {
                        value 24;
                        description "9.0 Mbps";
                      }
                      enum "9.3Mb" {
                        value 25;
                        description "9.3 Mbps";
                      }
                      enum "9.7Mb" {
                        value 26;
                        description "9.7 Mbps";
                      }
                      enum "10.0Mb" {
                        value 27;
                        description "10.0 Mbps";
                      }
                      enum "10.4Mb" {
                        value 28;
                        description "10.4 Mbps";
                      }
                      enum "10.7Mb" {
                        value 29;
                        description "10.7 Mbps";
                      }
                      enum "11.1Mb" {
                        value 30;
                        description "11.1 Mbps";
                      }
                      enum "11.5Mb" {
                        value 31;
                        description "11.5 Mbps";
                      }
                      enum "11.8Mb" {
                        value 32;
                        description "11.8 Mbps";
                      }
                      enum "12.2Mb" {
                        value 33;
                        description "12.2 Mbps";
                      }
                      enum "12.5Mb" {
                        value 34;
                        description "12.5 Mbps";
                      }
                      enum "12.9Mb" {
                        value 35;
                        description "12.9 Mbps";
                      }
                      enum "13.2Mb" {
                        value 36;
                        description "13.2 Mbps";
                      }
                      enum "13.6Mb" {
                        value 37;
                        description "13.6 Mbps";
                      }
                      enum "14.0Mb" {
                        value 38;
                        description "14.0 Mbps";
                      }
                      enum "14.3Mb" {
                        value 39;
                        description "14.3 Mbps";
                      }
                      enum "14.7Mb" {
                        value 40;
                        description "14.7 Mbps";
                      }
                      enum "15.0Mb" {
                        value 41;
                        description "15.0 Mbps";
                      }
                      enum "15.4Mb" {
                        value 42;
                        description "15.4 Mbps";
                      }
                      enum "15.8Mb" {
                        value 43;
                        description "15.8 Mbps";
                      }
                      enum "16.1Mb" {
                        value 44;
                        description "16.1 Mbps";
                      }
                      enum "16.5Mb" {
                        value 45;
                        description "16.5 Mbps";
                      }
                      enum "16.8Mb" {
                        value 46;
                        description "16.8 Mbps";
                      }
                      enum "17.2Mb" {
                        value 47;
                        description "17.2 Mbps";
                      }
                      enum "17.5Mb" {
                        value 48;
                        description "17.5 Mbps";
                      }
                      enum "17.9Mb" {
                        value 49;
                        description "17.9 Mbps";
                      }
                      enum "18.3Mb" {
                        value 50;
                        description "18.3 Mbps";
                      }
                      enum "18.6Mb" {
                        value 51;
                        description "18.6 Mbps";
                      }
                      enum "19.0Mb" {
                        value 52;
                        description "19.0 Mbps";
                      }
                      enum "19.3Mb" {
                        value 53;
                        description "19.3 Mbps";
                      }
                      enum "19.7Mb" {
                        value 54;
                        description "19.7 Mbps";
                      }
                      enum "20.0Mb" {
                        value 55;
                        description "20.0 Mbps";
                      }
                      enum "20.4Mb" {
                        value 56;
                        description "20.4 Mbps";
                      }
                      enum "20.8Mb" {
                        value 57;
                        description "20.8 Mbps";
                      }
                      enum "21.1Mb" {
                        value 58;
                        description "21.1 Mbps";
                      }
                      enum "21.5Mb" {
                        value 59;
                        description "21.5 Mbps";
                      }
                      enum "21.8Mb" {
                        value 60;
                        description "21.8 Mbps";
                      }
                      enum "22.2Mb" {
                        value 61;
                        description "22.2 Mbps";
                      }
                      enum "22.6Mb" {
                        value 62;
                        description "22.6 Mbps";
                      }
                      enum "22.9Mb" {
                        value 63;
                        description "22.9 Mbps";
                      }
                      enum "23.3Mb" {
                        value 64;
                        description "23.3 Mbps";
                      }
                      enum "23.6Mb" {
                        value 65;
                        description "23.6 Mbps";
                      }
                      enum "24.0Mb" {
                        value 66;
                        description "24.0 Mbps";
                      }
                      enum "24.3Mb" {
                        value 67;
                        description "24.3 Mbps";
                      }
                      enum "24.7Mb" {
                        value 68;
                        description "24.7 Mbps";
                      }
                      enum "25.1Mb" {
                        value 69;
                        description "25.1 Mbps";
                      }
                      enum "25.4Mb" {
                        value 70;
                        description "25.4 Mbps";
                      }
                      enum "25.8Mb" {
                        value 71;
                        description "25.8 Mbps";
                      }
                      enum "26.1Mb" {
                        value 72;
                        description "26.1 Mbps";
                      }
                      enum "26.5Mb" {
                        value 73;
                        description "26.5 Mbps";
                      }
                      enum "26.9Mb" {
                        value 74;
                        description "26.9 Mbps";
                      }
                      enum "27.2Mb" {
                        value 75;
                        description "27.2 Mbps";
                      }
                      enum "27.6Mb" {
                        value 76;
                        description "27.6 Mbps";
                      }
                      enum "27.9Mb" {
                        value 77;
                        description "27.9 Mbps";
                      }
                      enum "28.3Mb" {
                        value 78;
                        description "28.3 Mbps";
                      }
                      enum "28.6Mb" {
                        value 79;
                        description "28.6 Mbps";
                      }
                      enum "29.0Mb" {
                        value 80;
                        description "29.0 Mbps";
                      }
                      enum "29.4Mb" {
                        value 81;
                        description "29.4 Mbps";
                      }
                      enum "29.7Mb" {
                        value 82;
                        description "29.7 Mbps";
                      }
                      enum "30.1Mb" {
                        value 83;
                        description "30.1 Mbps";
                      }
                      enum "30.4Mb" {
                        value 84;
                        description "30.4 Mbps";
                      }
                      enum "30.8Mb" {
                        value 85;
                        description "30.8 Mbps";
                      }
                      enum "31.1Mb" {
                        value 86;
                        description "31.1 Mbps";
                      }
                      enum "31.5Mb" {
                        value 87;
                        description "31.5 Mbps";
                      }
                      enum "31.9Mb" {
                        value 88;
                        description "31.9 Mbps";
                      }
                      enum "32.2Mb" {
                        value 89;
                        description "32.2 Mbps";
                      }
                      enum "32.6Mb" {
                        value 90;
                        description "32.6 Mbps";
                      }
                      enum "32.9Mb" {
                        value 91;
                        description "32.9 Mbps";
                      }
                      enum "33.3Mb" {
                        value 92;
                        description "33.3 Mbps";
                      }
                      enum "33.7Mb" {
                        value 93;
                        description "33.7 Mbps";
                      }
                      enum "34.0Mb" {
                        value 94;
                        description "34.0 Mbps";
                      }
                    }
                    description
                      "Set subrate value";
                  }
                }  // container digital-link
                container kentrox {
                  presence "enable kentrox";
                  description
                    "Compatible with Kentrox CSU";
                  leaf subrate {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 48";
                      }
                    }
                    description
                      "Set subrate value (only for E3 IQ interfaces)";
                  }
                }  // container kentrox
              }  // choice vendor
            }  // container compatibility-mode
    
            choice payload-scrambler-choice {
              leaf payload-scrambler {
                type empty;
                description
                  "Enable payload scrambling";
              }
              leaf no-payload-scrambler {
                type empty;
                description
                  "Don't enable payload scrambling";
              }
            }  // choice payload-scrambler-choice
    
            leaf fcs {
              type enumeration {
                enum "32" {
                  value 0;
                  description "32-bit mode";
                }
                enum "16" {
                  value 1;
                  description "16-bit mode";
                }
              }
              description "Frame checksum";
            }
    
            leaf idle-cycle-flag {
              type enumeration {
                enum "flags" {
                  value 0;
                  description
                    "Transmit 0x7E in idle cycles";
                }
                enum "ones" {
                  value 1;
                  description
                    "Transmit 0xFF (all ones) in idle cycles";
                }
              }
              description
                "Value to transmit in idle cycles";
            }
    
            leaf invert-data {
              type empty;
              description "Invert data";
            }
    
            leaf start-end-flag {
              type enumeration {
                enum "shared" {
                  value 0;
                  description
                    "Share start/end flags on transmit";
                }
                enum "filler" {
                  value 1;
                  description
                    "Send two idle cycles between start/end flags";
                }
              }
              description
                "Set start/end flags on transmission";
            }
    
            leaf bert-algorithm {
              type enumeration {
                enum "pseudo-2e3" {
                  value 0;
                  description
                    "Pattern is 2^3 - 1";
                }
                enum "pseudo-2e4" {
                  value 1;
                  description
                    "Pattern is 2^4 - 1";
                }
                enum "pseudo-2e5" {
                  value 2;
                  description
                    "Pattern is 2^5 - 1";
                }
                enum "pseudo-2e6" {
                  value 3;
                  description
                    "Pattern is 2^6 - 1";
                }
                enum "pseudo-2e7" {
                  value 4;
                  description
                    "Pattern is 2^7 - 1";
                }
                enum "pseudo-2e9-o153" {
                  value 5;
                  description
                    "Pattern is 2^9 - 1 (per O.153 standard)";
                }
                enum "pseudo-2e10" {
                  value 6;
                  description
                    "Pattern is 2^10 - 1";
                }
                enum "pseudo-2e11-o152" {
                  value 7;
                  description
                    "Pattern is 2^11 -1 (per O.152 standard)";
                }
                enum "pseudo-2e15-o151" {
                  value 8;
                  description
                    "Pattern is 2^15 - 1 (per O.151 standard)";
                }
                enum "pseudo-2e17" {
                  value 9;
                  description
                    "Pattern is 2^17 - 1";
                }
                enum "pseudo-2e18" {
                  value 10;
                  description
                    "Pattern is 2^18 - 1";
                }
                enum "pseudo-2e20-o153" {
                  value 11;
                  description
                    "Pattern is 2^20 - 1 (per O.153 standard)";
                }
                enum "pseudo-2e20-o151" {
                  value 12;
                  description
                    "Pattern is 2^20 - 1 (per O.151 standard)";
                }
                enum "pseudo-2e21" {
                  value 13;
                  description
                    "Pattern is 2^21 - 1";
                }
                enum "pseudo-2e22" {
                  value 14;
                  description
                    "Pattern is 2^22 - 1";
                }
                enum "pseudo-2e23-o151" {
                  value 15;
                  description
                    "Pattern is 2^23 (per O.151 standard)";
                }
                enum "pseudo-2e25" {
                  value 16;
                  description
                    "Pattern is 2^25 - 1";
                }
                enum "pseudo-2e28" {
                  value 17;
                  description
                    "Pattern is 2^28 - 1";
                }
                enum "pseudo-2e29" {
                  value 18;
                  description
                    "Pattern is 2^29 - 1";
                }
                enum "pseudo-2e31" {
                  value 19;
                  description
                    "Pattern is 2^31 - 1";
                }
                enum "pseudo-2e32" {
                  value 20;
                  description
                    "Pattern is 2^32 - 1";
                }
                enum "all-ones-repeating" {
                  value 21;
                  description
                    "Repeating one bits";
                }
                enum "all-zeros-repeating" {
                  value 22;
                  description
                    "Repeating zero bits";
                }
                enum "alternating-ones-zeros" {
                  value 23;
                  description
                    "Alternating ones and zeros";
                }
                enum
                  "alternating-double-ones-zeros" {
                  value 24;
                  description
                    "Alternating pairs of ones and zeros";
                }
                enum "repeating-3-in-24" {
                  value 25;
                  description
                    "3 bits in 24 are set";
                }
                enum "repeating-1-in-8" {
                  value 26;
                  description
                    "1 bit in 8 is set";
                }
                enum "repeating-1-in-4" {
                  value 27;
                  description
                    "1 bit in 4 is set";
                }
              }
              description "Set BERT algorithm";
            }
    
            leaf bert-error-rate {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 7";
                }
              }
              description
                "Bit error rate (10^-n for n > 0, and zero for n = 0)";
            }
    
            leaf bert-period {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 240";
                }
              }
              units "seconds";
              description "Length of BERT test";
            }
    
            leaf buildout {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 450";
                }
              }
              units "feet";
              description "Line buildout";
            }
    
            leaf atm-encapsulation {
              type enumeration {
                enum "plcp" {
                  value 0;
                  description
                    "PLCP encapsulation";
                }
                enum "direct" {
                  value 1;
                  description
                    "ATM direct mapping";
                }
              }
              description
                "E3 interface encapsulation";
            }
    
            leaf framing {
              type enumeration {
                enum "g.751" {
                  value 0;
                  description "G.751 format";
                }
                enum "g.832" {
                  value 1;
                  description "G.832 format";
                }
              }
              description "E3 line format";
            }
          }  // container e3-options
    
          container e1-options {
            junos:must "((!("interfaces ${interface} container-options") || ("interfaces ${interface} container-options container-type" || "interfaces ${interface} container-options allow-configuration-override")))";
            junos:must-message "e1-options cannot be configured without allow-configuration-override";
            description
              "E1 interface-specific options";
            uses apply-advanced;
    
            leaf timeslots {
              type string;
              description
                "Timeslots (1..32); for example, 1-4,6,9-11,32 (no space)";
            }
    
            leaf loopback {
              type enumeration {
                enum "local" {
                  value 0;
                  description "Local loopback";
                }
                enum "remote" {
                  value 1;
                  description "Remote loopback";
                }
              }
              description "Loopback mode";
            }
    
            leaf framing {
              type enumeration {
                enum "g704" {
                  value 0;
                  description
                    "G704 mode with CRC4";
                }
                enum "unframed" {
                  value 1;
                  description "Unframed mode";
                }
                enum "g704-no-crc4" {
                  value 2;
                  description
                    "G704 mode without CRC4";
                }
              }
              description "Framing mode";
            }
    
            leaf fcs {
              type enumeration {
                enum "32" {
                  value 0;
                  description "32-bit mode";
                }
                enum "16" {
                  value 1;
                  description "16-bit mode";
                }
              }
              description "Frame checksum";
            }
    
            leaf invert-data {
              type empty;
              description "Invert data";
            }
    
            leaf idle-cycle-flag {
              type enumeration {
                enum "flags" {
                  value 0;
                  description
                    "Transmit 0x7E in idle cycles";
                }
                enum "ones" {
                  value 1;
                  description
                    "Transmit 0xFF (all ones) in idle cycles";
                }
              }
              description
                "Value to transmit in idle cycles";
            }
    
            leaf start-end-flag {
              type enumeration {
                enum "shared" {
                  value 0;
                  description
                    "Share start/end flags on transmit";
                }
                enum "filler" {
                  value 1;
                  description
                    "Send two idle cycles between start/end flags";
                }
              }
              description
                "Set start/end flags on transmission";
            }
    
            leaf bert-algorithm {
              type enumeration {
                enum "pseudo-2e3" {
                  value 0;
                  description
                    "Pattern is 2^3 - 1";
                }
                enum "pseudo-2e4" {
                  value 1;
                  description
                    "Pattern is 2^4 - 1";
                }
                enum "pseudo-2e5" {
                  value 2;
                  description
                    "Pattern is 2^5 - 1";
                }
                enum "pseudo-2e6" {
                  value 3;
                  description
                    "Pattern is 2^6 - 1";
                }
                enum "pseudo-2e7" {
                  value 4;
                  description
                    "Pattern is 2^7 - 1";
                }
                enum "pseudo-2e9-o153" {
                  value 5;
                  description
                    "Pattern is 2^9 - 1 (per O.153 standard)";
                }
                enum "pseudo-2e10" {
                  value 6;
                  description
                    "Pattern is 2^10 - 1";
                }
                enum "pseudo-2e11-o152" {
                  value 7;
                  description
                    "Pattern is 2^11 -1 (per O.152 standard)";
                }
                enum "pseudo-2e15-o151" {
                  value 8;
                  description
                    "Pattern is 2^15 - 1 (per O.151 standard)";
                }
                enum "pseudo-2e17" {
                  value 9;
                  description
                    "Pattern is 2^17 - 1";
                }
                enum "pseudo-2e18" {
                  value 10;
                  description
                    "Pattern is 2^18 - 1";
                }
                enum "pseudo-2e20-o153" {
                  value 11;
                  description
                    "Pattern is 2^20 - 1 (per O.153 standard)";
                }
                enum "pseudo-2e20-o151" {
                  value 12;
                  description
                    "Pattern is 2^20 - 1 (per O.151 standard)";
                }
                enum "pseudo-2e21" {
                  value 13;
                  description
                    "Pattern is 2^21 - 1";
                }
                enum "pseudo-2e22" {
                  value 14;
                  description
                    "Pattern is 2^22 - 1";
                }
                enum "pseudo-2e23-o151" {
                  value 15;
                  description
                    "Pattern is 2^23 (per O.151 standard)";
                }
                enum "pseudo-2e25" {
                  value 16;
                  description
                    "Pattern is 2^25 - 1";
                }
                enum "pseudo-2e28" {
                  value 17;
                  description
                    "Pattern is 2^28 - 1";
                }
                enum "pseudo-2e29" {
                  value 18;
                  description
                    "Pattern is 2^29 - 1";
                }
                enum "pseudo-2e31" {
                  value 19;
                  description
                    "Pattern is 2^31 - 1";
                }
                enum "pseudo-2e32" {
                  value 20;
                  description
                    "Pattern is 2^32 - 1";
                }
                enum "all-ones-repeating" {
                  value 21;
                  description
                    "Repeating one bits";
                }
                enum "all-zeros-repeating" {
                  value 22;
                  description
                    "Repeating zero bits";
                }
                enum "alternating-ones-zeros" {
                  value 23;
                  description
                    "Alternating ones and zeros";
                }
                enum
                  "alternating-double-ones-zeros" {
                  value 24;
                  description
                    "Alternating pairs of ones and zeros";
                }
                enum "repeating-3-in-24" {
                  value 25;
                  description
                    "3 bits in 24 are set";
                }
                enum "repeating-1-in-8" {
                  value 26;
                  description
                    "1 bit in 8 is set";
                }
                enum "repeating-1-in-4" {
                  value 27;
                  description
                    "1 bit in 4 is set";
                }
              }
              description "Set BERT algorithm";
            }
    
            leaf bert-error-rate {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 7";
                }
              }
              description
                "Bit error rate (10^-n for n > 0, and zero for n = 0)";
            }
    
            leaf bert-period {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 86400";
                }
              }
              units "seconds";
              description "Length of BERT test";
            }
          }  // container e1-options
    
          container t1-options {
            junos:must "((!("interfaces ${interface} container-options") || ("interfaces ${interface} container-options container-type" || "interfaces ${interface} container-options allow-configuration-override")))";
            junos:must-message "t1-options cannot be configured without allow-configuration-override";
            description
              "T1 interface-specific options";
            uses apply-advanced;
    
            leaf timeslots {
              type string;
              description
                "Timeslots (1..24; for example, 1-3,4,9,22-24 (no space)";
            }
    
            leaf loopback {
              type enumeration {
                enum "local" {
                  value 0;
                  description "Local loopback";
                }
                enum "remote" {
                  value 1;
                  description "Remote loopback";
                }
                enum "payload" {
                  value 2;
                  description "Payload loopback";
                }
              }
              description "Loopback mode";
            }
    
            leaf buildout {
              type enumeration {
                enum "0-132" {
                  value 0;
                  description
                    "Line buildout is between 0-132 feet";
                }
                enum "133-265" {
                  value 1;
                  description
                    "Line buildout is between 133-265 feet";
                }
                enum "266-398" {
                  value 2;
                  description
                    "Line buildout is between 266-398 feet";
                }
                enum "399-531" {
                  value 3;
                  description
                    "Line buildout is between 399-531 feet";
                }
                enum "532-655" {
                  value 4;
                  description
                    "Line buildout is between 532-655 feet";
                }
                enum "long-0db" {
                  value 5;
                  description
                    "Long buildout with 0 dB transmit attenuation";
                }
                enum "long-7.5db" {
                  value 6;
                  description
                    "Long buildout with 7.5 dB transmit attenuation";
                }
                enum "long-15db" {
                  value 7;
                  description
                    "Long buildout with 15 dB transmit attenuation";
                }
                enum "long-22.5db" {
                  value 8;
                  description
                    "Long buildout with 22.5 dB transmit attenuation";
                }
              }
              description "Line buildout";
            }
    
            leaf byte-encoding {
              type enumeration {
                enum "nx64" {
                  value 0;
                  description "8 bits per byte";
                }
                enum "nx56" {
                  value 1;
                  description "7 bits per byte";
                }
              }
              description "Byte encoding";
            }
    
            leaf line-encoding {
              type enumeration {
                enum "ami" {
                  value 0;
                  description
                    "Automatic mark inversion";
                }
                enum "b8zs" {
                  value 1;
                  description
                    "8-bit zero suppression";
                }
              }
              description "Line encoding";
            }
    
            leaf invert-data {
              type empty;
              description "Invert data";
            }
    
            leaf framing {
              type enumeration {
                enum "sf" {
                  value 0;
                  description "Super frame";
                }
                enum "esf" {
                  value 1;
                  description
                    "Extended super frame";
                }
              }
              description "Framing mode";
            }
    
            leaf fcs {
              type enumeration {
                enum "32" {
                  value 0;
                  description "32-bit mode";
                }
                enum "16" {
                  value 1;
                  description "16-bit mode";
                }
              }
              description "Frame checksum";
            }
    
            leaf idle-cycle-flag {
              type enumeration {
                enum "flags" {
                  value 0;
                  description
                    "Transmit 0x7E in idle cycles";
                }
                enum "ones" {
                  value 1;
                  description
                    "Transmit 0xFF (all ones) in idle cycles";
                }
              }
              description
                "Value to transmit in idle cycles";
            }
    
            leaf start-end-flag {
              type enumeration {
                enum "shared" {
                  value 0;
                  description
                    "Share start/end flags on transmit";
                }
                enum "filler" {
                  value 1;
                  description
                    "Send two idle cycles between start/end flags";
                }
              }
              description
                "Set start/end flags on transmission";
            }
    
            leaf bert-algorithm {
              type enumeration {
                enum "pseudo-2e3" {
                  value 0;
                  description
                    "Pattern is 2^3 - 1";
                }
                enum "pseudo-2e4" {
                  value 1;
                  description
                    "Pattern is 2^4 - 1";
                }
                enum "pseudo-2e5" {
                  value 2;
                  description
                    "Pattern is 2^5 - 1";
                }
                enum "pseudo-2e6" {
                  value 3;
                  description
                    "Pattern is 2^6 - 1";
                }
                enum "pseudo-2e7" {
                  value 4;
                  description
                    "Pattern is 2^7 - 1";
                }
                enum "pseudo-2e9-o153" {
                  value 5;
                  description
                    "Pattern is 2^9 - 1 (per O.153 standard)";
                }
                enum "pseudo-2e10" {
                  value 6;
                  description
                    "Pattern is 2^10 - 1";
                }
                enum "pseudo-2e11-o152" {
                  value 7;
                  description
                    "Pattern is 2^11 -1 (per O.152 standard)";
                }
                enum "pseudo-2e15-o151" {
                  value 8;
                  description
                    "Pattern is 2^15 - 1 (per O.151 standard)";
                }
                enum "pseudo-2e17" {
                  value 9;
                  description
                    "Pattern is 2^17 - 1";
                }
                enum "pseudo-2e18" {
                  value 10;
                  description
                    "Pattern is 2^18 - 1";
                }
                enum "pseudo-2e20-o153" {
                  value 11;
                  description
                    "Pattern is 2^20 - 1 (per O.153 standard)";
                }
                enum "pseudo-2e20-o151" {
                  value 12;
                  description
                    "Pattern is 2^20 - 1 (per O.151 standard)";
                }
                enum "pseudo-2e21" {
                  value 13;
                  description
                    "Pattern is 2^21 - 1";
                }
                enum "pseudo-2e22" {
                  value 14;
                  description
                    "Pattern is 2^22 - 1";
                }
                enum "pseudo-2e23-o151" {
                  value 15;
                  description
                    "Pattern is 2^23 (per O.151 standard)";
                }
                enum "pseudo-2e25" {
                  value 16;
                  description
                    "Pattern is 2^25 - 1";
                }
                enum "pseudo-2e28" {
                  value 17;
                  description
                    "Pattern is 2^28 - 1";
                }
                enum "pseudo-2e29" {
                  value 18;
                  description
                    "Pattern is 2^29 - 1";
                }
                enum "pseudo-2e31" {
                  value 19;
                  description
                    "Pattern is 2^31 - 1";
                }
                enum "pseudo-2e32" {
                  value 20;
                  description
                    "Pattern is 2^32 - 1";
                }
                enum "all-ones-repeating" {
                  value 21;
                  description
                    "Repeating one bits";
                }
                enum "all-zeros-repeating" {
                  value 22;
                  description
                    "Repeating zero bits";
                }
                enum "alternating-ones-zeros" {
                  value 23;
                  description
                    "Alternating ones and zeros";
                }
                enum
                  "alternating-double-ones-zeros" {
                  value 24;
                  description
                    "Alternating pairs of ones and zeros";
                }
                enum "repeating-3-in-24" {
                  value 25;
                  description
                    "3 bits in 24 are set";
                }
                enum "repeating-1-in-8" {
                  value 26;
                  description
                    "1 bit in 8 is set";
                }
                enum "repeating-1-in-4" {
                  value 27;
                  description
                    "1 bit in 4 is set";
                }
              }
              description "Set BERT algorithm";
            }
    
            leaf bert-error-rate {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 7";
                }
              }
              description
                "Bit error rate (10^-n for n > 0, and zero for n = 0)";
            }
    
            leaf bert-period {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 86400";
                }
              }
              units "seconds";
              description "Length of BERT test";
            }
    
            leaf remote-loopback-respond {
              type empty;
              description
                "Respond to loop requests from remote end";
            }
    
            leaf crc-major-alarm-threshold {
              type enumeration {
                enum "1e-3" {
                  value 0;
                  description
                    "1 crc error in 10^3 bits";
                }
                enum "5e-4" {
                  value 1;
                  description
                    "5 crc errors in 10^4 bits";
                }
                enum "1e-4" {
                  value 2;
                  description
                    "1 crc error in 10^4 bits";
                }
                enum "5e-5" {
                  value 3;
                  description
                    "5 crc errors in 10^5 bits";
                }
                enum "1e-5" {
                  value 4;
                  description
                    "1 crc error in 10^5 bits";
                }
              }
              default "5e-5";
              description
                "CRC Major alarm threshold value";
            }
    
            leaf crc-minor-alarm-threshold {
              type enumeration {
                enum "1e-3" {
                  value 0;
                  description
                    "1 crc error in 10^3 bits";
                }
                enum "5e-4" {
                  value 1;
                  description
                    "5 crc errors in 10^4 bits";
                }
                enum "1e-4" {
                  value 2;
                  description
                    "1 crc error in 10^4 bits";
                }
                enum "5e-5" {
                  value 3;
                  description
                    "5 crc errors in 10^5 bits";
                }
                enum "1e-5" {
                  value 4;
                  description
                    "1 crc error in 10^5 bits";
                }
                enum "5e-6" {
                  value 5;
                  description
                    "5 crc errors in 10^6 bits";
                }
                enum "1e-6" {
                  value 6;
                  description
                    "1 crc error in 10^6 bits";
                }
              }
              default "5e-6";
              description
                "CRC Minor alarm threshold value";
            }
          }  // container t1-options
    
          container ds0-options {
            junos:must "((!("interfaces ${interface} container-options") || ("interfaces ${interface} container-options container-type" || "interfaces ${interface} container-options allow-configuration-override")))";
            junos:must-message "ds0-options cannot be configured without allow-configuration-override";
            description
              "DS-0 interface-specific options";
            uses apply-advanced;
    
            leaf loopback {
              type enumeration {
                enum "payload" {
                  value 0;
                  description "Payload loopback";
                }
              }
              description "Loopback mode";
            }
    
            leaf byte-encoding {
              type enumeration {
                enum "nx64" {
                  value 0;
                  description "8 bits per byte";
                }
                enum "nx56" {
                  value 1;
                  description "7 bits per byte";
                }
              }
              description "Byte encoding";
            }
    
            leaf invert-data {
              type empty;
              description "Invert data";
            }
    
            leaf fcs {
              type enumeration {
                enum "32" {
                  value 0;
                  description "32-bit mode";
                }
                enum "16" {
                  value 1;
                  description "16-bit mode";
                }
              }
              description "Frame checksum";
            }
    
            leaf idle-cycle-flag {
              type enumeration {
                enum "flags" {
                  value 0;
                  description
                    "Transmit 0x7E in idle cycles";
                }
                enum "ones" {
                  value 1;
                  description
                    "Transmit 0xFF (all ones) in idle cycles";
                }
              }
              description
                "Value to transmit in idle cycles";
            }
    
            leaf start-end-flag {
              type enumeration {
                enum "shared" {
                  value 0;
                  description
                    "Share start/end flags on transmit";
                }
                enum "filler" {
                  value 1;
                  description
                    "Send two idle cycles between start/end flags";
                }
              }
              description
                "Set start/end flags on transmission";
            }
    
            leaf bert-algorithm {
              type enumeration {
                enum "pseudo-2e11-o152" {
                  value 0;
                  description
                    "Pattern is 2^11 -1 (per O.152 standard)";
                }
                enum "pseudo-2e15-o151" {
                  value 1;
                  description
                    "Pattern is 2^15 - 1 (per O.151 standard)";
                }
                enum "pseudo-2e20-o153" {
                  value 2;
                  description
                    "Pattern is 2^20 - 1 (per O.153 standard)";
                }
                enum "pseudo-2e20-o151" {
                  value 3;
                  description
                    "Pattern is 2^20 - 1 (per O.151 standard)";
                }
                enum "all-ones-repeating" {
                  value 4;
                  description
                    "Repeating one bits";
                }
                enum "all-zeros-repeating" {
                  value 5;
                  description
                    "Repeating zero bits";
                }
                enum "alternating-ones-zeros" {
                  value 6;
                  description
                    "Alternating ones and zeros";
                }
                enum
                  "alternating-double-ones-zeros" {
                  value 7;
                  description
                    "Alternating pairs of ones and zeros";
                }
                enum "repeating-3-in-24" {
                  value 8;
                  description
                    "3 bits in 24 are set";
                }
                enum "repeating-1-in-8" {
                  value 9;
                  description
                    "1 bit in 8 is set";
                }
                enum "repeating-1-in-4" {
                  value 10;
                  description
                    "1 bit in 4 is set";
                }
                enum "repeating-1-in-16" {
                  value 11;
                  description
                    "1 bit in 16 is set";
                }
              }
              description "Set BERT algorithm";
            }
    
            leaf bert-error-rate {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 7";
                }
              }
              description
                "Bit error rate (10^-n for n > 0, and zero for n = 0)";
            }
    
            leaf bert-period {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 240";
                }
              }
              units "seconds";
              description "Length of BERT test";
            }
          }  // container ds0-options
    
          container serial-options {
            description
              "Serial interface-specific options";
            uses apply-advanced;
    
            leaf line-protocol {
              type enumeration {
                enum "eia530" {
                  value 0;
                  description
                    "Line protocol EIA530";
                }
                enum "v.35" {
                  value 1;
                  description
                    "Line protocol V.35";
                }
                enum "x.21" {
                  value 2;
                  description
                    "Line protocol X.21";
                }
              }
              default "eia530";
              description
                "Line protocol to be used";
            }
    
            choice control_leads_choice {
              container dte-options {
                description
                  "DTE options/control leads";
                uses apply-advanced;
    
                leaf ignore-all {
                  junos:must "(!(".. indication"))";
                  junos:must-message "SERIAL: ignore-all configured when indication explicitly configured";
                  junos:must "(!(".. cts"))";
                  junos:must-message "SERIAL: ignore-all configured when cts explicitly configured";
                  junos:must "(!(".. dsr"))";
                  junos:must-message "SERIAL: ignore-all configured when dsr explicitly configured";
                  junos:must "(!(".. tm"))";
                  junos:must-message "SERIAL: ignore-all configured when tm explicitly configured";
                  junos:must "(!(".. dcd"))";
                  junos:must-message "SERIAL: ignore-all configured when dcd explicitly configured";
                  type empty;
                  description
                    "Ignore all control leads";
                }
    
                container dtr {
                  description
                    "Data Transmit Ready signal handling";
                  choice dtr_choices {
                    leaf assert {
                      type empty;
                      description
                        "Assert DTR signal";
                    }
                    leaf de-assert {
                      type empty;
                      description
                        "Deassert DTR signal";
                    }
                    leaf normal {
                      type empty;
                      description
                        "Normal DTR signal";
                    }
                    container auto-synchronize {
                      presence
                        "enable auto-synchronize";
                      description
                        "Normal DTR signal, with autoresynchronization";
                      uses apply-advanced;
    
                      leaf duration {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint16 {
                            range "1 .. 1000";
                          }
                        }
                        units "milliseconds";
                        description
                          "Duration of autoresynchronization";
                      }
    
                      leaf interval {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint16 {
                            range "1 .. 31";
                          }
                        }
                        units "seconds";
                        description
                          "Interval for autoresynchronization";
                      }
                    }  // container auto-synchronize
                  }  // choice dtr_choices
                }  // container dtr
    
                leaf control-signal {
                  junos:must "(!(".. .. line-protocol eia530"))";
                  junos:must-message "Control signal  invalid on line-protocol eia530";
                  junos:must "(!(".. .. line-protocol v.35"))";
                  junos:must-message "Control signal invalid on line-protocol v.35";
                  type enumeration {
                    enum "assert" {
                      value 0;
                      description
                        "Assert control signal";
                    }
                    enum "de-assert" {
                      value 1;
                      description
                        "Deassert control signal";
                    }
                    enum "normal" {
                      value 2;
                      description
                        "Normal control signal";
                    }
                  }
                  description
                    "X.21 control signal handling";
                }
    
                leaf rts {
                  junos:must "(!(".. .. line-protocol x.21"))";
                  junos:must-message "rts invalid on line-protocol x.21";
                  type enumeration {
                    enum "assert" {
                      value 0;
                      description
                        "Assert RTS signal";
                    }
                    enum "de-assert" {
                      value 1;
                      description
                        "Deassert RTS signal";
                    }
                    enum "normal" {
                      value 2;
                      description
                        "Normal RTS signal";
                    }
                  }
                  description
                    "Request To Send signal handling";
                }
    
                leaf dcd {
                  type enumeration {
                    enum "require" {
                      value 0;
                      description
                        "Require DCD signal";
                    }
                    enum "ignore" {
                      value 1;
                      description
                        "Ignore DCD signal";
                    }
                    enum "normal" {
                      value 2;
                      description
                        "Normal DCD signal";
                    }
                  }
                  description
                    "Data Carrier Detect signal handling";
                }
    
                leaf dsr {
                  type enumeration {
                    enum "require" {
                      value 0;
                      description
                        "Require DSR signal";
                    }
                    enum "ignore" {
                      value 1;
                      description
                        "Ignore DSR signal";
                    }
                    enum "normal" {
                      value 2;
                      description
                        "Normal DSR signal";
                    }
                  }
                  description
                    "Data Set Ready signal handling";
                }
    
                leaf cts {
                  junos:must "(!(".. .. line-protocol x.21"))";
                  junos:must-message "cts invalid on line-protocol x.21";
                  type enumeration {
                    enum "require" {
                      value 0;
                      description
                        "Require CTS signal";
                    }
                    enum "ignore" {
                      value 1;
                      description
                        "Ignore CTS signal";
                    }
                    enum "normal" {
                      value 2;
                      description
                        "Normal CTS signal";
                    }
                  }
                  description
                    "Clear To Send signal handling";
                }
    
                leaf indication {
                  junos:must "(!(".. .. line-protocol eia530"))";
                  junos:must-message "Indication   invalid on line-protocol eia530";
                  junos:must "(!(".. .. line-protocol v.35"))";
                  junos:must-message "Indication invalid on line-protocol v.35";
                  type enumeration {
                    enum "require" {
                      value 0;
                      description
                        "Require Indication signal";
                    }
                    enum "ignore" {
                      value 1;
                      description
                        "Ignore Indication signal";
                    }
                    enum "normal" {
                      value 2;
                      description
                        "Normal Indication signal";
                    }
                  }
                  description
                    "X.21 Indication signal handling";
                }
    
                leaf tm {
                  type enumeration {
                    enum "require" {
                      value 0;
                      description
                        "Require TM signal";
                    }
                    enum "ignore" {
                      value 1;
                      description
                        "Ignore TM signal";
                    }
                    enum "normal" {
                      value 2;
                      description
                        "Normal TM signal";
                    }
                  }
                  description
                    "Test Mode signal handling";
                }
              }  // container dte-options
    
              case case_2 {
              }  // case case_2
            }  // choice control_leads_choice
    
            leaf dtr-circuit {
              junos:must "(!(".. line-protocol x.21"))";
              junos:must-message "dtr-circuit invalid with line protocol x.21";
              type enumeration {
                enum "balanced" {
                  value 0;
                  description "Balanced signal";
                }
                enum "unbalanced" {
                  value 1;
                  description
                    "Unbalanced signal";
                }
              }
              description
                "Data Transmit Ready circuit mode";
            }
    
            leaf dtr-polarity {
              junos:must "(!(".. line-protocol x.21"))";
              junos:must-message "dtr-polarity invalid with line protocol x.21";
              type enumeration {
                enum "positive" {
                  value 0;
                  description
                    "Positive polarity";
                }
                enum "negative" {
                  value 1;
                  description
                    "Negative polarity";
                }
              }
              description
                "Data Transmit Ready signal polarity";
            }
    
            leaf rts-polarity {
              junos:must "(!(".. line-protocol x.21"))";
              junos:must-message "rts invalid on line-protocol x.21";
              type enumeration {
                enum "positive" {
                  value 0;
                  description
                    "Positive polarity";
                }
                enum "negative" {
                  value 1;
                  description
                    "Negative polarity";
                }
              }
              description
                "Request To Send signal polarity";
            }
    
            leaf control-polarity {
              junos:must "(!(".. line-protocol eia530"))";
              junos:must-message "Control signal  invalid on line-protocol eia530";
              junos:must "(!(".. line-protocol v.35"))";
              junos:must-message "Control signal invalid on line-protocol v.35";
              type enumeration {
                enum "positive" {
                  value 0;
                  description
                    "Positive polarity";
                }
                enum "negative" {
                  value 1;
                  description
                    "Negative polarity";
                }
              }
              description
                "X.21 Control signal polarity";
            }
    
            leaf dcd-polarity {
              junos:must "(!(".. line-protocol x.21"))";
              junos:must-message "dcd-polarity invalid with line protocol x.21";
              type enumeration {
                enum "positive" {
                  value 0;
                  description
                    "Positive polarity";
                }
                enum "negative" {
                  value 1;
                  description
                    "Negative polarity";
                }
              }
              description
                "Data Carrier Detect signal polarity";
            }
    
            leaf dsr-polarity {
              junos:must "(!(".. line-protocol x.21"))";
              junos:must-message "dsr-polarity invalid with line protocol x.21";
              type enumeration {
                enum "positive" {
                  value 0;
                  description
                    "Positive polarity";
                }
                enum "negative" {
                  value 1;
                  description
                    "Negative polarity";
                }
              }
              description
                "Data Set Ready signal polarity";
            }
    
            leaf cts-polarity {
              junos:must "(!(".. line-protocol x.21"))";
              junos:must-message "cts invalid on line-protocol x.21";
              type enumeration {
                enum "positive" {
                  value 0;
                  description
                    "Positive polarity";
                }
                enum "negative" {
                  value 1;
                  description
                    "Negative polarity";
                }
              }
              description
                "Clear To Send signal polarity";
            }
    
            leaf indication-polarity {
              junos:must "(!(".. line-protocol eia530"))";
              junos:must-message "Indication  invalid on line-protocol eia530";
              junos:must "(!(".. line-protocol v.35"))";
              junos:must-message "Indication invalid on line-protocol v.35";
              type enumeration {
                enum "positive" {
                  value 0;
                  description
                    "Positive polarity";
                }
                enum "negative" {
                  value 1;
                  description
                    "Negative polarity";
                }
              }
              description
                "X.21 Indication signal polarity";
            }
    
            leaf tm-polarity {
              junos:must "(!(".. line-protocol x.21"))";
              junos:must-message "tm-polarity invalid for line protocol x.21";
              junos:must "(!(".. line-protocol v.35"))";
              junos:must-message "tm-polarity invalid for line protocol v.35";
              type enumeration {
                enum "positive" {
                  value 0;
                  description
                    "Positive polarity";
                }
                enum "negative" {
                  value 1;
                  description
                    "Negative polarity";
                }
              }
              description
                "Test Mode signal polarity";
            }
    
            leaf clocking-mode {
              type enumeration {
                enum "dce" {
                  value 0;
                  description
                    "DCE timing (DTE mode only, not valid for X.21)";
                }
                enum "internal" {
                  value 1;
                  description
                    "Internal baud timing";
                }
                enum "loop" {
                  value 2;
                  description "Loop timing";
                }
              }
              description "Clock mode";
            }
    
            leaf transmit-clock {
              type enumeration {
                enum "invert" {
                  value 0;
                  description
                    "Shift clock phase 180 degrees";
                }
              }
              description "Transmit clock phase";
            }
    
            leaf clock-rate {
              type enumeration {
                enum "2.048mhz" {
                  value 0;
                  description "2.048 MHz";
                }
                enum "2.341mhz" {
                  value 1;
                  description "2.341 MHz";
                }
                enum "2.731mhz" {
                  value 2;
                  description "2.731 MHz";
                }
                enum "3.277mhz" {
                  value 3;
                  description "3.277 MHz";
                }
                enum "4.096mhz" {
                  value 4;
                  description "4.096 MHz";
                }
                enum "5.461mhz" {
                  value 5;
                  description "5.461 MHz";
                }
                enum "8.192mhz" {
                  value 6;
                  description "8.192 MHz";
                }
                enum "16.384mhz" {
                  value 7;
                  description "16.384 MHz";
                }
                enum "1.2khz" {
                  value 8;
                  description "1.2 KHz";
                }
                enum "2.4khz" {
                  value 9;
                  description "2.4 KHz";
                }
                enum "9.6khz" {
                  value 10;
                  description "9.6 KHz";
                }
                enum "19.2khz" {
                  value 11;
                  description "19.2 KHz";
                }
                enum "38.4khz" {
                  value 12;
                  description "38.4 KHz";
                }
                enum "56.0khz" {
                  value 13;
                  description "56.0 KHz";
                }
                enum "64.0khz" {
                  value 14;
                  description "64.0 KHz";
                }
                enum "72.0khz" {
                  value 15;
                  description "72.0 KHz";
                }
                enum "125.0khz" {
                  value 16;
                  description "125.0 KHz";
                }
                enum "148.0khz" {
                  value 17;
                  description "148.0 KHz";
                }
                enum "250.0khz" {
                  value 18;
                  description "250.0 KHz";
                }
                enum "500.0khz" {
                  value 19;
                  description "500.0 KHz";
                }
                enum "800.0khz" {
                  value 20;
                  description "800.0 KHz";
                }
                enum "1.0mhz" {
                  value 21;
                  description "1.0 MHz";
                }
                enum "1.3mhz" {
                  value 22;
                  description "1.3 MHz";
                }
                enum "2.0mhz" {
                  value 23;
                  description "2.0 MHz";
                }
                enum "4.0mhz" {
                  value 24;
                  description "4.0 MHz";
                }
                enum "8.0mhz" {
                  value 25;
                  description "8.0 MHz";
                }
              }
              description "Interface clock rate";
            }
    
            leaf loopback {
              type enumeration {
                enum "local" {
                  value 0;
                  description "Local loopback";
                }
                enum "remote" {
                  value 1;
                  description
                    "Remote/LIU loopback";
                }
                enum "dce-local" {
                  value 2;
                  description
                    "DCE local loopback (DTE mode only)";
                }
                enum "dce-remote" {
                  value 3;
                  description
                    "DCE remote loopback";
                }
              }
              description "Loopback mode";
            }
    
            leaf encoding {
              type enumeration {
                enum "nrz" {
                  value 0;
                  description
                    "Non-Return-To-Zero";
                }
                enum "nrzi" {
                  value 1;
                  description
                    "Non-Return-To-Zero-Invertible";
                }
              }
              description "Line encoding";
            }
          }  // container serial-options
    
          choice gratuitous-arp-reply-choice {
            leaf gratuitous-arp-reply {
              type empty;
              description
                "Enable gratuitous ARP reply";
            }
            leaf no-gratuitous-arp-reply {
              type empty;
              description
                "Don't enable gratuitous ARP reply";
            }
          }  // choice gratuitous-arp-reply-choice
    
          choice no-gratuitous-arp-request-choice {
            leaf no-gratuitous-arp-request {
              type empty;
              description
                "Ignore gratuitous ARP request";
            }
            leaf no-no-gratuitous-arp-request {
              type empty;
              description
                "Don't ignore gratuitous ARP request";
            }
          }  // choice no-gratuitous-arp-request-choice
    
          container ether-options {
            description
              "Ethernet interface-specific options";
            uses apply-advanced;
    
            choice loopback-choice {
              leaf loopback {
                type empty;
                description "Enable loopback";
              }
              leaf no-loopback {
                type empty;
                description
                  "Don't enable loopback";
              }
            }  // choice loopback-choice
    
            leaf loopback-remote {
              junos:must "(!(".. .. optics-options loopback"))";
              junos:must-message "'optics-options loopback' and loopback-remote are mutually exclusive";
              junos:must "(!(".. loopback"))";
              junos:must-message "loopback and loopback-remote are mutually exclusive";
              type empty;
              description
                "Enable remote loopback";
            }
    
            choice source-filtering-choice {
              leaf source-filtering {
                type empty;
                description
                  "Enable source address filtering";
              }
              leaf no-source-filtering {
                type empty;
                description
                  "Don't enable source address filtering";
              }
            }  // choice source-filtering-choice
    
            container ethernet-switch-profile {
              description
                "Ethernet virtual LAN/media access control-level options";
              uses apply-advanced;
    
              leaf-list tag-protocol-id {
                type string;
                ordered-by user;
                description
                  "IEEE 802.1q Tag Protocol Identifier values for VLAN-tagged frames";
              }
    
              container ethernet-policer-profile {
                description
                  "Ethernet level CoS-based policer configuration";
                uses apply-advanced;
    
                container input-priority-map {
                  description
                    "Input policer priority map";
                  uses cos_policer_input_priority_map;
                }  // container input-priority-map
    
                container output-priority-map {
                  description
                    "Output policer priority map";
                  uses cos_policer_output_priority_map;
                }  // container output-priority-map
    
                list policer {
                  key "name";
                  ordered-by user;
                  description
                    "Policer template definition";
                  uses cos_policer;
                }  // list policer
              }  // container ethernet-policer-profile
    
              container storm-control {
                junos:must "(!(any "interfaces ${interface} unit <*> family ethernet-switching storm-control <*>"))";
                junos:must-message "An interface cannot have storm control on both family ethernet-switching and ethernet switch profile";
                description
                  "Storm control profile name to bind";
                uses apply-advanced;
    
                leaf profile-name {
                  junos:must "("forwarding-options storm-control-profiles $$")";
                  junos:must-message "Storm profile name must be defined in the [edit forwarding-options storm-control-profiles] hierarchy";
                  type string;
                  description "Profile name";
                }
              }  // container storm-control
    
              container recovery-timeout {
                junos:must "(!(any "interfaces ${interface} unit <*> family ethernet-switching recovery-timeout <*>"))";
                junos:must-message "Recovery-timeout can't be configured at IFL level and famlily level simultaneously";
                description
                  "Recovery timeout for this interface";
                leaf time-in-seconds {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "10 .. 3600";
                    }
                  }
                  units "seconds";
                }
              }  // container recovery-timeout
    
              choice mac-learn-enable-choice {
                leaf mac-learn-enable {
                  type empty;
                  description
                    "Learn MAC addresses dynamically";
                }
                leaf no-mac-learn-enable {
                  type empty;
                  description
                    "Don't learn MAC addresses dynamically";
                }
              }  // choice mac-learn-enable-choice
            }  // container ethernet-switch-profile
    
            leaf asynchronous-notification {
              type empty;
              description
                "Enable sending asynchronous notification to peer on CCC-down";
            }
    
            list source-address-filter {
              key "name";
              description
                "Source address filters";
              leaf name {
                type jt:mac-addr;
                description "Remote MAC address";
              }
            }  // list source-address-filter
    
            choice auto-negotiation-choice {
              leaf auto-negotiation {
                type empty;
                description
                  "Enable auto-negotiation";
              }
              leaf no-auto-negotiation {
                type empty;
                description
                  "Don't enable auto-negotiation";
              }
            }  // choice auto-negotiation-choice
    
            choice flow-control-choice {
              leaf flow-control {
                type empty;
                description
                  "Enable flow control";
              }
              leaf no-flow-control {
                type empty;
                description
                  "Don't enable flow control";
              }
            }  // choice flow-control-choice
    
            leaf link-mode {
              type enumeration {
                enum "automatic" {
                  value 0;
                  description
                    "Automatic negotiate duplex ";
                }
                enum "half-duplex" {
                  value 1;
                  description
                    "Half-duplex operation";
                }
                enum "full-duplex" {
                  value 2;
                  description
                    "Full-duplex operation";
                }
              }
              description "Link duplex";
            }
    
            container mpls {
              description "MPLS options";
              uses mpls_ifd_options;
            }  // container mpls
    
            leaf ignore-l3-incompletes {
              type empty;
              description
                "Ignore L3 incomplete errors";
            }
    
            leaf no-auto-mdix {
              type empty;
              description
                "Disable auto MDI/MDIX";
            }
    
            leaf fec {
              type enumeration {
                enum "none" {
                  value 0;
                  description "FEC disabled";
                }
                enum "fec91" {
                  value 1;
                  description
                    "IEEE 802.3bj Clause 91, Reed-Solomon FEC (RS-FEC)";
                }
                enum "fec74" {
                  value 2;
                  description "FEC74 enabled";
                }
                enum "fec108" {
                  value 3;
                  description
                    "IEEE 802.3by Clause 108, Reed-Solomon FEC (RS-FEC) on 25g links";
                }
              }
              description
                "Forward Error Correction mode";
            }
    
            container speed {
              description "Specify speed";
              choice automatic {
                container auto-negotiation {
                  presence
                    "enable auto-negotiation";
                  description
                    "Enable auto-negotiation";
                  leaf auto-negotiate-10-100 {
                    type empty;
                    description
                      "Limits the auto-negotiation to 10m/100m only";
                  }
                }  // container auto-negotiation
                leaf ethernet-10m {
                  type empty;
                  description "10Mbps";
                }
                leaf ethernet-100m {
                  type empty;
                  description "100Mbps";
                }
                leaf ethernet-1g {
                  type empty;
                  description "1Gbps";
                }
                leaf ethernet-10g {
                  type empty;
                  description "10Gbps";
                }
              }  // choice automatic
            }  // container speed
    
            container ieee-802.3ad {
              junos:must "(!("system autoinstallation"))";
              junos:must-message "incompatible with 'system autoinstallation'";
              description "IEEE 802.3ad";
              uses apply-advanced;
    
              container lacp {
                description
                  "Link Aggregation Control Protocol configuration";
                uses apply-advanced;
    
                leaf force-up {
                  type empty;
                  description
                    "Keep the port up in absence of received LACPDU";
                }
    
                leaf port-priority {
                  type union {
                    type uint16;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description
                    "Priority of the port (0 ... 65535)";
                }
              }  // container lacp
    
              leaf bundle {
                junos:must "(!(".. .. .. gigether-options 802.3ad"))";
                junos:must-message "Member link cannot be a part of multiple aggregation group";
                junos:must "(!(".. .. .. vlan-offload"))";
                junos:must-message "ae child device vlan-offload is not allowed";
                junos:must "(!(".. .. .. flow-control"))";
                junos:must-message "Setting flow-control on ae child device is not allowed";
                junos:must "(!(".. .. .. mtu"))";
                junos:must-message "Setting mtu on ae child device is not allowed";
                junos:must "(!(".. .. .. vlan-vci-tagging"))";
                junos:must-message "ae child device vlan-vci-tagging is not allowed";
                junos:must "(!(".. .. .. stacked-vlan-tagging"))";
                junos:must-message "ae child device stacked-vlan-tagging is not allowed";
                junos:must "(!(".. .. .. flexible-vlan-tagging"))";
                junos:must-message "ae child device flexible-vlan-tagging is not allowed";
                junos:must "(!(".. .. .. vlan-tagging"))";
                junos:must-message "ae child device vlan-tagging is not allowed";
                junos:must "(!(".. .. .. passive-monitor-mode"))";
                junos:must-message "802.3ad not valid for passive-monitor-mode";
                type union {
                  type jt:interface-device;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Join an aggregated Ethernet interface";
              }
    
              choice type {
                leaf primary {
                  type empty;
                  description
                    "Primary interface for link-protection mode";
                }
                leaf backup {
                  type empty;
                  description
                    "Backup interface for link-protection mode";
                }
              }  // choice type
    
              container link-protection-sub-group {
                description
                  "Link Protection subgroup configuration";
                uses apply-advanced;
    
                leaf subgroup-name {
                  type string {
                    length "2 .. 64";
                  }
                  description
                    "Name of the subgroup";
                }
              }  // container link-protection-sub-group
    
              leaf port-priority {
                type union {
                  type uint16;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Link protection Priority of the port (0 ... 65535)";
              }
            }  // container ieee-802.3ad
    
            leaf ieee-802-3az-eee {
              type empty;
              description
                "IEEE 802.3az Energy Efficient Ethernet(EEE)";
            }
    
            leaf mdi-mode {
              type enumeration {
                enum "auto" {
                  value 0;
                  description
                    "Automatic mdi/mdi-x mode";
                }
                enum "force" {
                  value 1;
                  description
                    "Enable auto-MDIX always";
                }
                enum "mdi" {
                  value 2;
                  description
                    "MDI(straight through) mode";
                }
                enum "mdix" {
                  value 3;
                  description
                    "MDI Cross-over mode";
                }
              }
              description
                "Cable cross-over mode";
            }
    
            leaf autostate-exclude {
              type empty;
              description
                "Interface will not contribute to IRB state";
            }
          }  // container ether-options
    
          container fibrechannel-options {
            description
              "Fibre Channel interface-specific options";
            uses apply-advanced;
    
            choice loopback-choice {
              leaf loopback {
                type empty;
                description "Enable loopback";
              }
              leaf no-loopback {
                type empty;
                description
                  "Don't enable loopback";
              }
            }  // choice loopback-choice
    
            leaf bb-sc-n {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "0 .. 15";
                }
              }
              description
                "B2B state change number";
            }
    
            leaf speed {
              type enumeration {
                enum "auto-negotiation" {
                  value 0;
                  description
                    "Enable auto-negotiation";
                }
                enum "1g" {
                  value 1;
                  description "1Gbps";
                }
                enum "2g" {
                  value 2;
                  description "2Gbps";
                }
                enum "4g" {
                  value 3;
                  description "4Gbps";
                }
                enum "8g" {
                  value 4;
                  description "8Gbps";
                }
              }
              description "Specify speed";
            }
          }  // container fibrechannel-options
    
          container gigether-options {
            description
              "Gigabit Ethernet interface-specific options";
            uses apply-advanced;
    
            choice loopback-choice {
              leaf loopback {
                type empty;
                description "Enable loopback";
              }
              leaf no-loopback {
                type empty;
                description
                  "Don't enable loopback";
              }
            }  // choice loopback-choice
    
            leaf loopback-remote {
              junos:must "(!(".. .. optics-options loopback"))";
              junos:must-message "'optics-options loopback' and loopback-remote are mutually exclusive";
              junos:must "(!(".. loopback"))";
              junos:must-message "loopback and loopback-remote are mutually exclusive";
              type empty;
              description
                "Enable remote loopback";
            }
    
            choice flow-control-choice {
              leaf flow-control {
                type empty;
                description
                  "Enable flow control";
              }
              leaf no-flow-control {
                type empty;
                description
                  "Don't enable flow control";
              }
            }  // choice flow-control-choice
    
            choice source-filtering-choice {
              leaf source-filtering {
                type empty;
                description
                  "Enable source address filtering";
              }
              leaf no-source-filtering {
                type empty;
                description
                  "Don't enable source address filtering";
              }
            }  // choice source-filtering-choice
    
            choice auto_negotiation_option {
              leaf no-auto-negotiation {
                type empty;
                description
                  "Disable auto-negotiation";
              }
              container auto-negotiation {
                presence
                  "enable auto-negotiation";
                description
                  "Enable auto-negotiation";
                leaf remote-fault {
                  type enumeration {
                    enum
                      "local-interface-offline" {
                      value 0;
                      description
                        "Disable local interface";
                    }
                    enum
                      "local-interface-online" {
                      value 1;
                      description
                        "Enable local interface";
                    }
                  }
                }
              }  // container auto-negotiation
            }  // choice auto_negotiation_option
    
            leaf asynchronous-notification {
              type empty;
              description
                "Enable sending asynchronous notification to peer on CCC-down";
            }
    
            list source-address-filter {
              key "name";
              description
                "Source address filters";
              leaf name {
                type jt:mac-addr;
                description "Remote MAC address";
              }
            }  // list source-address-filter
    
            container ieee-802.3ad {
              junos:must "(!("system autoinstallation"))";
              junos:must-message "incompatible with 'system autoinstallation'";
              description "IEEE 802.3ad";
              uses apply-advanced;
    
              container lacp {
                description
                  "Link Aggregation Control Protocol configuration";
                uses apply-advanced;
    
                leaf port-priority {
                  type union {
                    type uint16;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description
                    "Priority of the port (0 ... 65535)";
                }
              }  // container lacp
    
              leaf bundle {
                junos:must "(!(".. .. .. ether-options 802.3ad"))";
                junos:must-message "Member link cannot be a part of multiple aggregation group";
                junos:must "(!(".. .. .. vlan-offload"))";
                junos:must-message "ae child device vlan-offload is not allowed";
                junos:must "(!(".. .. .. flow-control"))";
                junos:must-message "Setting flow-control on ae child device is not allowed";
                junos:must "(!(".. .. .. mtu"))";
                junos:must-message "Setting mtu on ae child device is not allowed";
                junos:must "(!(".. .. .. vlan-vci-tagging"))";
                junos:must-message "ae child device vlan-vci-tagging is not allowed";
                junos:must "(!(".. .. .. stacked-vlan-tagging"))";
                junos:must-message "ae child device stacked-vlan-tagging is not allowed";
                junos:must "(!(".. .. .. flexible-vlan-tagging"))";
                junos:must-message "ae child device flexible-vlan-tagging is not allowed";
                junos:must "(!(".. .. .. vlan-tagging"))";
                junos:must-message "ae child device vlan-tagging is not allowed";
                junos:must "(!(".. .. .. passive-monitor-mode"))";
                junos:must-message "802.3ad not valid for passive-monitor-mode";
                type union {
                  type jt:interface-device;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Join an aggregated Ethernet interface";
              }
    
              choice type {
                leaf primary {
                  type empty;
                  description
                    "Primary interface for link-protection mode";
                }
                leaf backup {
                  type empty;
                  description
                    "Backup interface for link-protection mode";
                }
              }  // choice type
            }  // container ieee-802.3ad
    
            container ethernet-switch-profile {
              description
                "Ethernet virtual LAN/media access control-level options";
              uses apply-advanced;
    
              leaf-list tag-protocol-id {
                type string;
                ordered-by user;
                description
                  "IEEE 802.1q Tag Protocol Identifier values for VLAN-tagged frames";
              }
    
              container ethernet-policer-profile {
                description
                  "Ethernet level CoS-based policer configuration";
                uses apply-advanced;
    
                container ieee802.1-priority-map {
                  presence
                    "enable ieee802.1-priority-map";
                  status deprecated;
                  description
                    "Premium priority values for IEEE 802.1p bits";
                  uses apply-advanced;
    
                  leaf-list premium {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 7";
                      }
                    }
                    ordered-by user;
                    description
                      "Premium policer priority map";
                  }
                }  // container ieee802.1-priority-map
    
                container input-priority-map {
                  description
                    "Input policer priority map";
                  uses cos_policer_input_priority_map;
                }  // container input-priority-map
    
                container output-priority-map {
                  description
                    "Output policer priority map";
                  uses cos_policer_output_priority_map;
                }  // container output-priority-map
    
                list policer {
                  key "name";
                  ordered-by user;
                  description
                    "Policer template definition";
                  uses cos_policer;
                }  // list policer
              }  // container ethernet-policer-profile
    
              container accept-from {
                status deprecated;
                description
                  "Accept traffic from or to specified remote MAC";
                uses apply-advanced;
    
                list mac-address {
                  key "name";
                  description "Remote MAC";
                  uses mac_list;
                }  // list mac-address
              }  // container accept-from
    
              choice reject-the-rest-choice {
                leaf reject-the-rest {
                  type empty;
                  status deprecated;
                  description
                    "Accept traffic from only the specified MAC addresses";
                }
                leaf no-reject-the-rest {
                  type empty;
                  status deprecated;
                  description
                    "Don't accept traffic from only the specified MAC addresses";
                }
              }  // choice reject-the-rest-choice
    
              leaf mac-learn-enable {
                type empty;
                description
                  "Learn MAC addresses dynamically";
              }
            }  // container ethernet-switch-profile
    
            container mpls {
              description "MPLS options";
              uses mpls_ifd_options;
            }  // container mpls
    
            leaf ignore-l3-incompletes {
              type empty;
              description
                "Ignore L3 incomplete errors";
            }
    
            leaf ieee-802-3az-eee {
              type empty;
              description
                "IEEE 802.3az Energy Efficient Ethernet(EEE)";
            }
    
            leaf fec {
              type enumeration {
                enum "none" {
                  value 0;
                  description "FEC disabled";
                }
                enum "fec91" {
                  value 1;
                  description
                    "IEEE 802.3bj Clause 91, Reed-Solomon FEC (RS-FEC)";
                }
                enum "fec74" {
                  value 2;
                  description "FEC74 enabled";
                }
                enum "fec108" {
                  value 3;
                  description
                    "IEEE 802.3by Clause 108, Reed-Solomon FEC (RS-FEC) on 25g links";
                }
              }
              description
                "Forward Error Correction mode";
            }
          }  // container gigether-options
    
          container optics-options {
            description "Optics options";
            uses apply-advanced;
    
            leaf wavelength {
              type enumeration {
                enum "1568.77" {
                  value 0;
                  description
                    "1568.77 nm/191.1003 THz 50/100Ghz spacing";
                }
                enum "1568.36" {
                  value 1;
                  description
                    "1568.36 nm/191.15000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1568.31" {
                  value 2;
                  description
                    "1568.31 nm/191.15625 THz 6.25GHz spacing";
                }
                enum "1568.26" {
                  value 3;
                  description
                    "1568.26 nm/191.16250 THz 6.25/12.5GHz spacing";
                }
                enum "1568.21" {
                  value 4;
                  description
                    "1568.21 nm/191.16875 THz 6.25GHz spacing";
                }
                enum "1568.16" {
                  value 5;
                  description
                    "1568.16 nm/191.17500 THz 6.25/12.5GHz spacing";
                }
                enum "1568.11" {
                  value 6;
                  description
                    "1568.11 nm/191.18125 THz 6.25GHz spacing";
                }
                enum "1568.05" {
                  value 7;
                  description
                    "1568.05 nm/191.18750 THz 6.25/12.5GHz spacing";
                }
                enum "1568.00" {
                  value 8;
                  description
                    "1568.00 nm/191.19375 THz 6.25GHz spacing";
                }
                enum "1567.95" {
                  value 9;
                  description
                    "1567.95 nm/191.20000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1567.90" {
                  value 10;
                  description
                    "1567.90 nm/191.20625 THz 6.25GHz spacing";
                }
                enum "1567.85" {
                  value 11;
                  description
                    "1567.85 nm/191.21250 THz 6.25/12.5GHz spacing";
                }
                enum "1567.80" {
                  value 12;
                  description
                    "1567.80 nm/191.21875 THz 6.25GHz spacing";
                }
                enum "1567.75" {
                  value 13;
                  description
                    "1567.75 nm/191.22500 THz 6.25/12.5GHz spacing";
                }
                enum "1567.70" {
                  value 14;
                  description
                    "1567.70 nm/191.23125 THz 6.25GHz spacing";
                }
                enum "1567.64" {
                  value 15;
                  description
                    "1567.64 nm/191.23750 THz 6.25/12.5GHz spacing";
                }
                enum "1567.59" {
                  value 16;
                  description
                    "1567.59 nm/191.24375 THz 6.25GHz spacing";
                }
                enum "1567.54" {
                  value 17;
                  description
                    "1567.54 nm/191.25000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1567.49" {
                  value 18;
                  description
                    "1567.49 nm/191.25625 THz 6.25GHz spacing";
                }
                enum "1567.44" {
                  value 19;
                  description
                    "1567.44 nm/191.26250 THz 6.25/12.5GHz spacing";
                }
                enum "1567.39" {
                  value 20;
                  description
                    "1567.39 nm/191.26875 THz 6.25GHz spacing";
                }
                enum "1567.34" {
                  value 21;
                  description
                    "1567.34 nm/191.27500 THz 6.25/12.5GHz spacing";
                }
                enum "1567.29" {
                  value 22;
                  description
                    "1567.29 nm/191.28125 THz 6.25GHz spacing";
                }
                enum "1567.23" {
                  value 23;
                  description
                    "1567.23 nm/191.28750 THz 6.25/12.5GHz spacing";
                }
                enum "1567.18" {
                  value 24;
                  description
                    "1567.18 nm/191.29375 THz 6.25GHz spacing";
                }
                enum "1567.13" {
                  value 25;
                  description
                    "1567.13 nm/191.30000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1567.08" {
                  value 26;
                  description
                    "1567.08 nm/191.30625 THz 6.25GHz spacing";
                }
                enum "1567.03" {
                  value 27;
                  description
                    "1567.03 nm/191.31250 THz 6.25/12.5GHz spacing";
                }
                enum "1566.98" {
                  value 28;
                  description
                    "1566.98 nm/191.31875 THz 6.25GHz spacing";
                }
                enum "1566.93" {
                  value 29;
                  description
                    "1566.93 nm/191.32500 THz 6.25/12.5GHz spacing";
                }
                enum "1566.88" {
                  value 30;
                  description
                    "1566.88 nm/191.33125 THz 6.25GHz spacing";
                }
                enum "1566.83" {
                  value 31;
                  description
                    "1566.83 nm/191.33750 THz 6.25/12.5GHz spacing";
                }
                enum "1566.77" {
                  value 32;
                  description
                    "1566.77 nm/191.34375 THz 6.25GHz spacing";
                }
                enum "1566.72" {
                  value 33;
                  description
                    "1566.72 nm/191.35000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1566.67" {
                  value 34;
                  description
                    "1566.67 nm/191.35625 THz 6.25GHz spacing";
                }
                enum "1566.62" {
                  value 35;
                  description
                    "1566.62 nm/191.36250 THz 6.25/12.5GHz spacing";
                }
                enum "1566.57" {
                  value 36;
                  description
                    "1566.57 nm/191.36875 THz 6.25GHz spacing";
                }
                enum "1566.52" {
                  value 37;
                  description
                    "1566.52 nm/191.37500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1566.47" {
                  value 38;
                  description
                    "1566.47 nm/191.38125 THz 6.25GHz spacing";
                }
                enum "1566.42" {
                  value 39;
                  description
                    "1566.42 nm/191.38750 THz 6.25/12.5GHz spacing";
                }
                enum "1566.36" {
                  value 40;
                  description
                    "1566.36 nm/191.39375 THz 6.25GHz spacing";
                }
                enum "1566.31" {
                  value 41;
                  description
                    "1566.31 nm/191.40000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1566.26" {
                  value 42;
                  description
                    "1566.26 nm/191.40625 THz 6.25GHz spacing";
                }
                enum "1566.21" {
                  value 43;
                  description
                    "1566.21 nm/191.41250 THz 6.25/12.5GHz spacing";
                }
                enum "1566.16" {
                  value 44;
                  description
                    "1566.16 nm/191.41875 THz 6.25GHz spacing";
                }
                enum "1566.11" {
                  value 45;
                  description
                    "1566.11 nm/191.42500 THz 6.25/12.5GHz spacing";
                }
                enum "1566.06" {
                  value 46;
                  description
                    "1566.06 nm/191.43125 THz 6.25GHz spacing";
                }
                enum "1566.01" {
                  value 47;
                  description
                    "1566.01 nm/191.43750 THz 6.25/12.5GHz spacing";
                }
                enum "1565.96" {
                  value 48;
                  description
                    "1565.96 nm/191.44375 THz 6.25GHz spacing";
                }
                enum "1565.90" {
                  value 49;
                  description
                    "1565.90 nm/191.45000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1565.85" {
                  value 50;
                  description
                    "1565.85 nm/191.45625 THz 6.25GHz spacing";
                }
                enum "1565.80" {
                  value 51;
                  description
                    "1565.80 nm/191.46250 THz 6.25/12.5GHz spacing";
                }
                enum "1565.75" {
                  value 52;
                  description
                    "1565.75 nm/191.46875 THz 6.25GHz spacing";
                }
                enum "1565.70" {
                  value 53;
                  description
                    "1565.70 nm/191.47500 THz 6.25/12.5GHz spacing";
                }
                enum "1565.65" {
                  value 54;
                  description
                    "1565.65 nm/191.48125 THz 6.25GHz spacing";
                }
                enum "1565.60" {
                  value 55;
                  description
                    "1565.60 nm/191.48750 THz 6.25/12.5GHz spacing";
                }
                enum "1565.55" {
                  value 56;
                  description
                    "1565.55 nm/191.49375 THz 6.25GHz spacing";
                }
                enum "1565.50" {
                  value 57;
                  description
                    "1565.50 nm/191.50000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1565.44" {
                  value 58;
                  description
                    "1565.44 nm/191.50625 THz 6.25GHz spacing";
                }
                enum "1565.39" {
                  value 59;
                  description
                    "1565.39 nm/191.51250 THz 6.25/12.5GHz spacing";
                }
                enum "1565.34" {
                  value 60;
                  description
                    "1565.34 nm/191.51875 THz 6.25GHz spacing";
                }
                enum "1565.29" {
                  value 61;
                  description
                    "1565.29 nm/191.52500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1565.24" {
                  value 62;
                  description
                    "1565.24 nm/191.53125 THz 6.25GHz spacing";
                }
                enum "1565.19" {
                  value 63;
                  description
                    "1565.19 nm/191.53750 THz 6.25/12.5GHz spacing";
                }
                enum "1565.14" {
                  value 64;
                  description
                    "1565.14 nm/191.54375 THz 6.25GHz spacing";
                }
                enum "1565.09" {
                  value 65;
                  description
                    "1565.09 nm/191.55000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1565.04" {
                  value 66;
                  description
                    "1565.04 nm/191.55625 THz 6.25GHz spacing";
                }
                enum "1564.99" {
                  value 67;
                  description
                    "1564.99 nm/191.56250 THz 6.25/12.5GHz spacing";
                }
                enum "1564.93" {
                  value 68;
                  description
                    "1564.93 nm/191.56875 THz 6.25GHz spacing";
                }
                enum "1564.88" {
                  value 69;
                  description
                    "1564.88 nm/191.57500 THz 6.25/12.5GHz spacing";
                }
                enum "1564.83" {
                  value 70;
                  description
                    "1564.83 nm/191.58125 THz 6.25GHz spacing";
                }
                enum "1564.78" {
                  value 71;
                  description
                    "1564.78 nm/191.58750 THz 6.25/12.5GHz spacing";
                }
                enum "1564.73" {
                  value 72;
                  description
                    "1564.73 nm/191.59375 THz 6.25GHz spacing";
                }
                enum "1564.68" {
                  value 73;
                  description
                    "1564.68 nm/191.60000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1564.63" {
                  value 74;
                  description
                    "1564.63 nm/191.60625 THz 6.25GHz spacing";
                }
                enum "1564.58" {
                  value 75;
                  description
                    "1564.58 nm/191.61250 THz 6.25/12.5GHz spacing";
                }
                enum "1564.53" {
                  value 76;
                  description
                    "1564.53 nm/191.61875 THz 6.25GHz spacing";
                }
                enum "1564.47" {
                  value 77;
                  description
                    "1564.47 nm/191.62500 THz 6.25/12.5GHz spacing";
                }
                enum "1564.42" {
                  value 78;
                  description
                    "1564.42 nm/191.63125 THz 6.25GHz spacing";
                }
                enum "1564.37" {
                  value 79;
                  description
                    "1564.37 nm/191.63750 THz 6.25/12.5GHz spacing";
                }
                enum "1564.32" {
                  value 80;
                  description
                    "1564.32 nm/191.64375 THz 6.25GHz spacing";
                }
                enum "1564.27" {
                  value 81;
                  description
                    "1564.27 nm/191.65000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1564.22" {
                  value 82;
                  description
                    "1564.22 nm/191.65625 THz 6.25GHz spacing";
                }
                enum "1564.17" {
                  value 83;
                  description
                    "1564.17 nm/191.66250 THz 6.25/12.5GHz spacing";
                }
                enum "1564.12" {
                  value 84;
                  description
                    "1564.12 nm/191.66875 THz 6.25GHz spacing";
                }
                enum "1564.07" {
                  value 85;
                  description
                    "1564.07 nm/191.67500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1564.02" {
                  value 86;
                  description
                    "1564.02 nm/191.68125 THz 6.25GHz spacing";
                }
                enum "1563.96" {
                  value 87;
                  description
                    "1563.96 nm/191.68750 THz 6.25/12.5GHz spacing";
                }
                enum "1563.91" {
                  value 88;
                  description
                    "1563.91 nm/191.69375 THz 6.25GHz spacing";
                }
                enum "1563.86" {
                  value 89;
                  description
                    "1563.86 nm/191.70000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1563.81" {
                  value 90;
                  description
                    "1563.81 nm/191.70625 THz 6.25GHz spacing";
                }
                enum "1563.76" {
                  value 91;
                  description
                    "1563.76 nm/191.71250 THz 6.25/12.5GHz spacing";
                }
                enum "1563.71" {
                  value 92;
                  description
                    "1563.71 nm/191.71875 THz 6.25GHz spacing";
                }
                enum "1563.66" {
                  value 93;
                  description
                    "1563.66 nm/191.72500 THz 6.25/12.5GHz spacing";
                }
                enum "1563.61" {
                  value 94;
                  description
                    "1563.61 nm/191.73125 THz 6.25GHz spacing";
                }
                enum "1563.56" {
                  value 95;
                  description
                    "1563.56 nm/191.73750 THz 6.25/12.5GHz spacing";
                }
                enum "1563.51" {
                  value 96;
                  description
                    "1563.51 nm/191.74375 THz 6.25GHz spacing";
                }
                enum "1563.45" {
                  value 97;
                  description
                    "1563.45 nm/191.75000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1563.40" {
                  value 98;
                  description
                    "1563.40 nm/191.75625 THz 6.25GHz spacing";
                }
                enum "1563.35" {
                  value 99;
                  description
                    "1563.35 nm/191.76250 THz 6.25/12.5GHz spacing";
                }
                enum "1563.30" {
                  value 100;
                  description
                    "1563.30 nm/191.76875 THz 6.25GHz spacing";
                }
                enum "1563.25" {
                  value 101;
                  description
                    "1563.25 nm/191.77500 THz 6.25/12.5GHz spacing";
                }
                enum "1563.20" {
                  value 102;
                  description
                    "1563.20 nm/191.78125 THz 6.25GHz spacing";
                }
                enum "1563.15" {
                  value 103;
                  description
                    "1563.15 nm/191.78750 THz 6.25/12.5GHz spacing";
                }
                enum "1563.10" {
                  value 104;
                  description
                    "1563.10 nm/191.79375 THz 6.25GHz spacing";
                }
                enum "1563.05" {
                  value 105;
                  description
                    "1563.05 nm/191.80000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1563.00" {
                  value 106;
                  description
                    "1563.00 nm/191.80625 THz 6.25GHz spacing";
                }
                enum "1562.95" {
                  value 107;
                  description
                    "1562.95 nm/191.81250 THz 6.25/12.5GHz spacing";
                }
                enum "1562.89" {
                  value 108;
                  description
                    "1562.89 nm/191.81875 THz 6.25GHz spacing";
                }
                enum "1562.84" {
                  value 109;
                  description
                    "1562.84 nm/191.82500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1562.79" {
                  value 110;
                  description
                    "1562.79 nm/191.83125 THz 6.25GHz spacing";
                }
                enum "1562.74" {
                  value 111;
                  description
                    "1562.74 nm/191.83750 THz 6.25/12.5GHz spacing";
                }
                enum "1562.69" {
                  value 112;
                  description
                    "1562.69 nm/191.84375 THz 6.25GHz spacing";
                }
                enum "1562.64" {
                  value 113;
                  description
                    "1562.64 nm/191.85000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1562.59" {
                  value 114;
                  description
                    "1562.59 nm/191.85625 THz 6.25GHz spacing";
                }
                enum "1562.54" {
                  value 115;
                  description
                    "1562.54 nm/191.86250 THz 6.25/12.5GHz spacing";
                }
                enum "1562.49" {
                  value 116;
                  description
                    "1562.49 nm/191.86875 THz 6.25GHz spacing";
                }
                enum "1562.44" {
                  value 117;
                  description
                    "1562.44 nm/191.87500 THz 6.25/12.5GHz spacing";
                }
                enum "1562.39" {
                  value 118;
                  description
                    "1562.39 nm/191.88125 THz 6.25GHz spacing";
                }
                enum "1562.33" {
                  value 119;
                  description
                    "1562.33 nm/191.88750 THz 6.25/12.5GHz spacing";
                }
                enum "1562.28" {
                  value 120;
                  description
                    "1562.28 nm/191.89375 THz 6.25GHz spacing";
                }
                enum "1562.23" {
                  value 121;
                  description
                    "1562.23 nm/191.90000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1562.18" {
                  value 122;
                  description
                    "1562.18 nm/191.90625 THz 6.25GHz spacing";
                }
                enum "1562.13" {
                  value 123;
                  description
                    "1562.13 nm/191.91250 THz 6.25/12.5GHz spacing";
                }
                enum "1562.08" {
                  value 124;
                  description
                    "1562.08 nm/191.91875 THz 6.25GHz spacing";
                }
                enum "1562.03" {
                  value 125;
                  description
                    "1562.03 nm/191.92500 THz 6.25/12.5GHz spacing";
                }
                enum "1561.98" {
                  value 126;
                  description
                    "1561.98 nm/191.93125 THz 6.25GHz spacing";
                }
                enum "1561.93" {
                  value 127;
                  description
                    "1561.93 nm/191.93750 THz 6.25/12.5GHz spacing";
                }
                enum "1561.88" {
                  value 128;
                  description
                    "1561.88 nm/191.94375 THz 6.25GHz spacing";
                }
                enum "1561.83" {
                  value 129;
                  description
                    "1561.83 nm/191.95000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1561.77" {
                  value 130;
                  description
                    "1561.77 nm/191.95625 THz 6.25GHz spacing";
                }
                enum "1561.72" {
                  value 131;
                  description
                    "1561.72 nm/191.96250 THz 6.25/12.5GHz spacing";
                }
                enum "1561.67" {
                  value 132;
                  description
                    "1561.67 nm/191.96875 THz 6.25GHz spacing";
                }
                enum "1561.62" {
                  value 133;
                  description
                    "1561.62 nm/191.97500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1561.57" {
                  value 134;
                  description
                    "1561.57 nm/191.98125 THz 6.25GHz spacing";
                }
                enum "1561.52" {
                  value 135;
                  description
                    "1561.52 nm/191.98750 THz 6.25/12.5GHz spacing";
                }
                enum "1561.47" {
                  value 136;
                  description
                    "1561.47 nm/191.99375 THz 6.25GHz spacing";
                }
                enum "1561.42" {
                  value 137;
                  description
                    "1561.42 nm/192.00000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1561.37" {
                  value 138;
                  description
                    "1561.37 nm/192.00625 THz 6.25GHz spacing";
                }
                enum "1561.32" {
                  value 139;
                  description
                    "1561.32 nm/192.01250 THz 6.25/12.5GHz spacing";
                }
                enum "1561.27" {
                  value 140;
                  description
                    "1561.27 nm/192.01875 THz 6.25GHz spacing";
                }
                enum "1561.22" {
                  value 141;
                  description
                    "1561.22 nm/192.02500 THz 6.25/12.5GHz spacing";
                }
                enum "1561.16" {
                  value 142;
                  description
                    "1561.16 nm/192.03125 THz 6.25GHz spacing";
                }
                enum "1561.11" {
                  value 143;
                  description
                    "1561.11 nm/192.03750 THz 6.25/12.5GHz spacing";
                }
                enum "1561.06" {
                  value 144;
                  description
                    "1561.06 nm/192.04375 THz 6.25GHz spacing";
                }
                enum "1561.01" {
                  value 145;
                  description
                    "1561.01 nm/192.05000 THz 6.25/12.5/50G/75Hz spacing";
                }
                enum "1560.96" {
                  value 146;
                  description
                    "1560.96 nm/192.05625 THz 6.25GHz spacing";
                }
                enum "1560.91" {
                  value 147;
                  description
                    "1560.91 nm/192.06250 THz 6.25/12.5GHz spacing";
                }
                enum "1560.86" {
                  value 148;
                  description
                    "1560.86 nm/192.06875 THz 6.25GHz spacing";
                }
                enum "1560.81" {
                  value 149;
                  description
                    "1560.81 nm/192.07500 THz 6.25/12.5GHz spacing";
                }
                enum "1560.76" {
                  value 150;
                  description
                    "1560.76 nm/192.08125 THz 6.25GHz spacing";
                }
                enum "1560.71" {
                  value 151;
                  description
                    "1560.71 nm/192.08750 THz 6.25/12.5GHz spacing";
                }
                enum "1560.66" {
                  value 152;
                  description
                    "1560.66 nm/192.09375 THz 6.25GHz spacing";
                }
                enum "1560.61" {
                  value 153;
                  description
                    "1560.61 nm/192.10000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1560.56" {
                  value 154;
                  description
                    "1560.56 nm/192.10625 THz 6.25GHz spacing";
                }
                enum "1560.50" {
                  value 155;
                  description
                    "1560.50 nm/192.11250 THz 6.25/12.5GHz spacing";
                }
                enum "1560.45" {
                  value 156;
                  description
                    "1560.45 nm/192.11875 THz 6.25GHz spacing";
                }
                enum "1560.40" {
                  value 157;
                  description
                    "1560.40 nm/192.12500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1560.35" {
                  value 158;
                  description
                    "1560.35 nm/192.13125 THz 6.25GHz spacing";
                }
                enum "1560.30" {
                  value 159;
                  description
                    "1560.30 nm/192.13750 THz 6.25/12.5GHz spacing";
                }
                enum "1560.25" {
                  value 160;
                  description
                    "1560.25 nm/192.14375 THz 6.25GHz spacing";
                }
                enum "1560.20" {
                  value 161;
                  description
                    "1560.20 nm/192.15000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1560.15" {
                  value 162;
                  description
                    "1560.15 nm/192.15625 THz 6.25GHz spacing";
                }
                enum "1560.10" {
                  value 163;
                  description
                    "1560.10 nm/192.16250 THz 6.25/12.5GHz spacing";
                }
                enum "1560.05" {
                  value 164;
                  description
                    "1560.05 nm/192.16875 THz 6.25GHz spacing";
                }
                enum "1560.00" {
                  value 165;
                  description
                    "1560.00 nm/192.17500 THz 6.25/12.5GHz spacing";
                }
                enum "1559.95" {
                  value 166;
                  description
                    "1559.95 nm/192.18125 THz 6.25GHz spacing";
                }
                enum "1559.90" {
                  value 167;
                  description
                    "1559.90 nm/192.18750 THz 6.25/12.5GHz spacing";
                }
                enum "1559.84" {
                  value 168;
                  description
                    "1559.84 nm/192.19375 THz 6.25GHz spacing";
                }
                enum "1559.79" {
                  value 169;
                  description
                    "1559.79 nm/192.20000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1559.74" {
                  value 170;
                  description
                    "1559.74 nm/192.20625 THz 6.25GHz spacing";
                }
                enum "1559.69" {
                  value 171;
                  description
                    "1559.69 nm/192.21250 THz 6.25/12.5GHz spacing";
                }
                enum "1559.64" {
                  value 172;
                  description
                    "1559.64 nm/192.21875 THz 6.25GHz spacing";
                }
                enum "1559.59" {
                  value 173;
                  description
                    "1559.59 nm/192.22500 THz 6.25/12.5GHz spacing";
                }
                enum "1559.54" {
                  value 174;
                  description
                    "1559.54 nm/192.23125 THz 6.25GHz spacing";
                }
                enum "1559.49" {
                  value 175;
                  description
                    "1559.49 nm/192.23750 THz 6.25/12.5GHz spacing";
                }
                enum "1559.44" {
                  value 176;
                  description
                    "1559.44 nm/192.24375 THz 6.25GHz spacing";
                }
                enum "1559.39" {
                  value 177;
                  description
                    "1559.39 nm/192.25000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1559.34" {
                  value 178;
                  description
                    "1559.34 nm/192.25625 THz 6.25GHz spacing";
                }
                enum "1559.29" {
                  value 179;
                  description
                    "1559.29 nm/192.26250 THz 6.25/12.5GHz spacing";
                }
                enum "1559.24" {
                  value 180;
                  description
                    "1559.24 nm/192.26875 THz 6.25GHz spacing";
                }
                enum "1559.19" {
                  value 181;
                  description
                    "1559.19 nm/192.27500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1559.14" {
                  value 182;
                  description
                    "1559.14 nm/192.28125 THz 6.25GHz spacing";
                }
                enum "1559.08" {
                  value 183;
                  description
                    "1559.08 nm/192.28750 THz 6.25/12.5GHz spacing";
                }
                enum "1559.03" {
                  value 184;
                  description
                    "1559.03 nm/192.29375 THz 6.25GHz spacing";
                }
                enum "1558.98" {
                  value 185;
                  description
                    "1558.98 nm/192.30000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1558.93" {
                  value 186;
                  description
                    "1558.93 nm/192.30625 THz 6.25GHz spacing";
                }
                enum "1558.88" {
                  value 187;
                  description
                    "1558.88 nm/192.31250 THz 6.25/12.5GHz spacing";
                }
                enum "1558.83" {
                  value 188;
                  description
                    "1558.83 nm/192.31875 THz 6.25GHz spacing";
                }
                enum "1558.78" {
                  value 189;
                  description
                    "1558.78 nm/192.32500 THz 6.25/12.5GHz spacing";
                }
                enum "1558.73" {
                  value 190;
                  description
                    "1558.73 nm/192.33125 THz 6.25GHz spacing";
                }
                enum "1558.68" {
                  value 191;
                  description
                    "1558.68 nm/192.33750 THz 6.25/12.5GHz spacing";
                }
                enum "1558.63" {
                  value 192;
                  description
                    "1558.63 nm/192.34375 THz 6.25GHz spacing";
                }
                enum "1558.58" {
                  value 193;
                  description
                    "1558.58 nm/192.35000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1558.53" {
                  value 194;
                  description
                    "1558.53 nm/192.35625 THz 6.25GHz spacing";
                }
                enum "1558.48" {
                  value 195;
                  description
                    "1558.48 nm/192.36250 THz 6.25/12.5GHz spacing";
                }
                enum "1558.43" {
                  value 196;
                  description
                    "1558.43 nm/192.36875 THz 6.25GHz spacing";
                }
                enum "1558.38" {
                  value 197;
                  description
                    "1558.38 nm/192.37500 THz 6.25/12.5GHz spacing";
                }
                enum "1558.32" {
                  value 198;
                  description
                    "1558.32 nm/192.38125 THz 6.25GHz spacing";
                }
                enum "1558.27" {
                  value 199;
                  description
                    "1558.27 nm/192.38750 THz 6.25/12.5GHz spacing";
                }
                enum "1558.22" {
                  value 200;
                  description
                    "1558.22 nm/192.39375 THz 6.25GHz spacing";
                }
                enum "1558.17" {
                  value 201;
                  description
                    "1558.17 nm/192.40000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1558.12" {
                  value 202;
                  description
                    "1558.12 nm/192.40625 THz 6.25GHz spacing";
                }
                enum "1558.07" {
                  value 203;
                  description
                    "1558.07 nm/192.41250 THz 6.25/12.5GHz spacing";
                }
                enum "1558.02" {
                  value 204;
                  description
                    "1558.02 nm/192.41875 THz 6.25GHz spacing";
                }
                enum "1557.97" {
                  value 205;
                  description
                    "1557.97 nm/192.42500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1557.92" {
                  value 206;
                  description
                    "1557.92 nm/192.43125 THz 6.25GHz spacing";
                }
                enum "1557.87" {
                  value 207;
                  description
                    "1557.87 nm/192.43750 THz 6.25/12.5GHz spacing";
                }
                enum "1557.82" {
                  value 208;
                  description
                    "1557.82 nm/192.44375 THz 6.25GHz spacing";
                }
                enum "1557.77" {
                  value 209;
                  description
                    "1557.77 nm/192.45000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1557.72" {
                  value 210;
                  description
                    "1557.72 nm/192.45625 THz 6.25GHz spacing";
                }
                enum "1557.67" {
                  value 211;
                  description
                    "1557.67 nm/192.46250 THz 6.25/12.5GHz spacing";
                }
                enum "1557.62" {
                  value 212;
                  description
                    "1557.62 nm/192.46875 THz 6.25GHz spacing";
                }
                enum "1557.57" {
                  value 213;
                  description
                    "1557.57 nm/192.47500 THz 6.25/12.5GHz spacing";
                }
                enum "1557.52" {
                  value 214;
                  description
                    "1557.52 nm/192.48125 THz 6.25GHz spacing";
                }
                enum "1557.46" {
                  value 215;
                  description
                    "1557.46 nm/192.48750 THz 6.25/12.5GHz spacing";
                }
                enum "1557.41" {
                  value 216;
                  description
                    "1557.41 nm/192.49375 THz 6.25GHz spacing";
                }
                enum "1557.36" {
                  value 217;
                  description
                    "1557.36 nm/192.50000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1557.31" {
                  value 218;
                  description
                    "1557.31 nm/192.50625 THz 6.25GHz spacing";
                }
                enum "1557.26" {
                  value 219;
                  description
                    "1557.26 nm/192.51250 THz 6.25/12.5GHz spacing";
                }
                enum "1557.21" {
                  value 220;
                  description
                    "1557.21 nm/192.51875 THz 6.25GHz spacing";
                }
                enum "1557.16" {
                  value 221;
                  description
                    "1557.16 nm/192.52500 THz 6.25/12.5GHz spacing";
                }
                enum "1557.11" {
                  value 222;
                  description
                    "1557.11 nm/192.53125 THz 6.25GHz spacing";
                }
                enum "1557.06" {
                  value 223;
                  description
                    "1557.06 nm/192.53750 THz 6.25/12.5GHz spacing";
                }
                enum "1557.01" {
                  value 224;
                  description
                    "1557.01 nm/192.54375 THz 6.25GHz spacing";
                }
                enum "1556.96" {
                  value 225;
                  description
                    "1556.96 nm/192.55000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1556.91" {
                  value 226;
                  description
                    "1556.91 nm/192.55625 THz 6.25GHz spacing";
                }
                enum "1556.86" {
                  value 227;
                  description
                    "1556.86 nm/192.56250 THz 6.25/12.5GHz spacing";
                }
                enum "1556.81" {
                  value 228;
                  description
                    "1556.81 nm/192.56875 THz 6.25GHz spacing";
                }
                enum "1556.76" {
                  value 229;
                  description
                    "1556.76 nm/192.57500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1556.71" {
                  value 230;
                  description
                    "1556.71 nm/192.58125 THz 6.25GHz spacing";
                }
                enum "1556.66" {
                  value 231;
                  description
                    "1556.66 nm/192.58750 THz 6.25/12.5GHz spacing";
                }
                enum "1556.61" {
                  value 232;
                  description
                    "1556.61 nm/192.59375 THz 6.25GHz spacing";
                }
                enum "1556.55" {
                  value 233;
                  description
                    "1556.55 nm/192.60000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1556.50" {
                  value 234;
                  description
                    "1556.50 nm/192.60625 THz 6.25GHz spacing";
                }
                enum "1556.45" {
                  value 235;
                  description
                    "1556.45 nm/192.61250 THz 6.25/12.5GHz spacing";
                }
                enum "1556.40" {
                  value 236;
                  description
                    "1556.40 nm/192.61875 THz 6.25GHz spacing";
                }
                enum "1556.35" {
                  value 237;
                  description
                    "1556.35 nm/192.62500 THz 6.25/12.5GHz spacing";
                }
                enum "1556.30" {
                  value 238;
                  description
                    "1556.30 nm/192.63125 THz 6.25GHz spacing";
                }
                enum "1556.25" {
                  value 239;
                  description
                    "1556.25 nm/192.63750 THz 6.25/12.5GHz spacing";
                }
                enum "1556.20" {
                  value 240;
                  description
                    "1556.20 nm/192.64375 THz 6.25GHz spacing";
                }
                enum "1556.15" {
                  value 241;
                  description
                    "1556.15 nm/192.65000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1556.10" {
                  value 242;
                  description
                    "1556.10 nm/192.65625 THz 6.25GHz spacing";
                }
                enum "1556.05" {
                  value 243;
                  description
                    "1556.05 nm/192.66250 THz 6.25/12.5GHz spacing";
                }
                enum "1556.00" {
                  value 244;
                  description
                    "1556.00 nm/192.66875 THz 6.25GHz spacing";
                }
                enum "1555.95" {
                  value 245;
                  description
                    "1555.95 nm/192.67500 THz 6.25/12.5GHz spacing";
                }
                enum "1555.90" {
                  value 246;
                  description
                    "1555.90 nm/192.68125 THz 6.25GHz spacing";
                }
                enum "1555.85" {
                  value 247;
                  description
                    "1555.85 nm/192.68750 THz 6.25/12.5GHz spacing";
                }
                enum "1555.80" {
                  value 248;
                  description
                    "1555.80 nm/192.69375 THz 6.25GHz spacing";
                }
                enum "1555.75" {
                  value 249;
                  description
                    "1555.75 nm/192.70000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1555.70" {
                  value 250;
                  description
                    "1555.70 nm/192.70625 THz 6.25GHz spacing";
                }
                enum "1555.65" {
                  value 251;
                  description
                    "1555.65 nm/192.71250 THz 6.25/12.5GHz spacing";
                }
                enum "1555.60" {
                  value 252;
                  description
                    "1555.60 nm/192.71875 THz 6.25GHz spacing";
                }
                enum "1555.55" {
                  value 253;
                  description
                    "1555.55 nm/192.72500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1555.49" {
                  value 254;
                  description
                    "1555.49 nm/192.73125 THz 6.25GHz spacing";
                }
                enum "1555.44" {
                  value 255;
                  description
                    "1555.44 nm/192.73750 THz 6.25/12.5GHz spacing";
                }
                enum "1555.39" {
                  value 256;
                  description
                    "1555.39 nm/192.74375 THz 6.25GHz spacing";
                }
                enum "1555.34" {
                  value 257;
                  description
                    "1555.34 nm/192.75000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1555.29" {
                  value 258;
                  description
                    "1555.29 nm/192.75625 THz 6.25GHz spacing";
                }
                enum "1555.24" {
                  value 259;
                  description
                    "1555.24 nm/192.76250 THz 6.25/12.5GHz spacing";
                }
                enum "1555.19" {
                  value 260;
                  description
                    "1555.19 nm/192.76875 THz 6.25GHz spacing";
                }
                enum "1555.14" {
                  value 261;
                  description
                    "1555.14 nm/192.77500 THz 6.25/12.5GHz spacing";
                }
                enum "1555.09" {
                  value 262;
                  description
                    "1555.09 nm/192.78125 THz 6.25GHz spacing";
                }
                enum "1555.04" {
                  value 263;
                  description
                    "1555.04 nm/192.78750 THz 6.25/12.5GHz spacing";
                }
                enum "1554.99" {
                  value 264;
                  description
                    "1554.99 nm/192.79375 THz 6.25GHz spacing";
                }
                enum "1554.94" {
                  value 265;
                  description
                    "1554.94 nm/192.80000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1554.89" {
                  value 266;
                  description
                    "1554.89 nm/192.80625 THz 6.25GHz spacing";
                }
                enum "1554.84" {
                  value 267;
                  description
                    "1554.84 nm/192.81250 THz 6.25/12.5GHz spacing";
                }
                enum "1554.79" {
                  value 268;
                  description
                    "1554.79 nm/192.81875 THz 6.25GHz spacing";
                }
                enum "1554.74" {
                  value 269;
                  description
                    "1554.74 nm/192.82500 THz 6.25/12.5GHz spacing";
                }
                enum "1554.69" {
                  value 270;
                  description
                    "1554.69 nm/192.83125 THz 6.25GHz spacing";
                }
                enum "1554.64" {
                  value 271;
                  description
                    "1554.64 nm/192.83750 THz 6.25/12.5GHz spacing";
                }
                enum "1554.59" {
                  value 272;
                  description
                    "1554.59 nm/192.84375 THz 6.25GHz spacing";
                }
                enum "1554.54" {
                  value 273;
                  description
                    "1554.54 nm/192.85000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1554.49" {
                  value 274;
                  description
                    "1554.49 nm/192.85625 THz 6.25GHz spacing";
                }
                enum "1554.44" {
                  value 275;
                  description
                    "1554.44 nm/192.86250 THz 6.25/12.5GHz spacing";
                }
                enum "1554.39" {
                  value 276;
                  description
                    "1554.39 nm/192.86875 THz 6.25GHz spacing";
                }
                enum "1554.34" {
                  value 277;
                  description
                    "1554.34 nm/192.87500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1554.29" {
                  value 278;
                  description
                    "1554.29 nm/192.88125 THz 6.25GHz spacing";
                }
                enum "1554.23" {
                  value 279;
                  description
                    "1554.23 nm/192.88750 THz 6.25/12.5GHz spacing";
                }
                enum "1554.18" {
                  value 280;
                  description
                    "1554.18 nm/192.89375 THz 6.25GHz spacing";
                }
                enum "1554.13" {
                  value 281;
                  description
                    "1554.13 nm/192.90000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1554.08" {
                  value 282;
                  description
                    "1554.08 nm/192.90625 THz 6.25GHz spacing";
                }
                enum "1554.03" {
                  value 283;
                  description
                    "1554.03 nm/192.91250 THz 6.25/12.5GHz spacing";
                }
                enum "1553.98" {
                  value 284;
                  description
                    "1553.98 nm/192.91875 THz 6.25GHz spacing";
                }
                enum "1553.93" {
                  value 285;
                  description
                    "1553.93 nm/192.92500 THz 6.25/12.5GHz spacing";
                }
                enum "1553.88" {
                  value 286;
                  description
                    "1553.88 nm/192.93125 THz 6.25GHz spacing";
                }
                enum "1553.83" {
                  value 287;
                  description
                    "1553.83 nm/192.93750 THz 6.25/12.5GHz spacing";
                }
                enum "1553.78" {
                  value 288;
                  description
                    "1553.78 nm/192.94375 THz 6.25GHz spacing";
                }
                enum "1553.73" {
                  value 289;
                  description
                    "1553.73 nm/192.95000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1553.68" {
                  value 290;
                  description
                    "1553.68 nm/192.95625 THz 6.25GHz spacing";
                }
                enum "1553.63" {
                  value 291;
                  description
                    "1553.63 nm/192.96250 THz 6.25/12.5GHz spacing";
                }
                enum "1553.58" {
                  value 292;
                  description
                    "1553.58 nm/192.96875 THz 6.25GHz spacing";
                }
                enum "1553.53" {
                  value 293;
                  description
                    "1553.53 nm/192.97500 THz 6.25/12.5GHz spacing";
                }
                enum "1553.48" {
                  value 294;
                  description
                    "1553.48 nm/192.98125 THz 6.25GHz spacing";
                }
                enum "1553.43" {
                  value 295;
                  description
                    "1553.43 nm/192.98750 THz 6.25/12.5GHz spacing";
                }
                enum "1553.38" {
                  value 296;
                  description
                    "1553.38 nm/192.99375 THz 6.25GHz spacing";
                }
                enum "1553.33" {
                  value 297;
                  description
                    "1553.33 nm/193.00000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1553.28" {
                  value 298;
                  description
                    "1553.28 nm/193.00625 THz 6.25GHz spacing";
                }
                enum "1553.23" {
                  value 299;
                  description
                    "1553.23 nm/193.01250 THz 6.25/12.5GHz spacing";
                }
                enum "1553.18" {
                  value 300;
                  description
                    "1553.18 nm/193.01875 THz 6.25GHz spacing";
                }
                enum "1553.13" {
                  value 301;
                  description
                    "1553.13 nm/193.02500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1553.08" {
                  value 302;
                  description
                    "1553.08 nm/193.03125 THz 6.25GHz spacing";
                }
                enum "1553.03" {
                  value 303;
                  description
                    "1553.03 nm/193.03750 THz 6.25/12.5GHz spacing";
                }
                enum "1552.98" {
                  value 304;
                  description
                    "1552.98 nm/193.04375 THz 6.25GHz spacing";
                }
                enum "1552.93" {
                  value 305;
                  description
                    "1552.93 nm/193.05000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1552.88" {
                  value 306;
                  description
                    "1552.88 nm/193.05625 THz 6.25GHz spacing";
                }
                enum "1552.83" {
                  value 307;
                  description
                    "1552.83 nm/193.06250 THz 6.25/12.5GHz spacing";
                }
                enum "1552.78" {
                  value 308;
                  description
                    "1552.78 nm/193.06875 THz 6.25GHz spacing";
                }
                enum "1552.73" {
                  value 309;
                  description
                    "1552.73 nm/193.07500 THz 6.25/12.5GHz spacing";
                }
                enum "1552.68" {
                  value 310;
                  description
                    "1552.68 nm/193.08125 THz 6.25GHz spacing";
                }
                enum "1552.62" {
                  value 311;
                  description
                    "1552.62 nm/193.08750 THz 6.25/12.5GHz spacing";
                }
                enum "1552.57" {
                  value 312;
                  description
                    "1552.57 nm/193.09375 THz 6.25GHz spacing";
                }
                enum "1552.52" {
                  value 313;
                  description
                    "1552.52 nm/193.10000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1552.47" {
                  value 314;
                  description
                    "1552.47 nm/193.10625 THz 6.25GHz spacing";
                }
                enum "1552.42" {
                  value 315;
                  description
                    "1552.42 nm/193.11250 THz 6.25/12.5GHz spacing";
                }
                enum "1552.37" {
                  value 316;
                  description
                    "1552.37 nm/193.11875 THz 6.25GHz spacing";
                }
                enum "1552.32" {
                  value 317;
                  description
                    "1552.32 nm/193.12500 THz 6.25/12.5GHz spacing";
                }
                enum "1552.27" {
                  value 318;
                  description
                    "1552.27 nm/193.13125 THz 6.25GHz spacing";
                }
                enum "1552.22" {
                  value 319;
                  description
                    "1552.22 nm/193.13750 THz 6.25/12.5GHz spacing";
                }
                enum "1552.17" {
                  value 320;
                  description
                    "1552.17 nm/193.14375 THz 6.25GHz spacing";
                }
                enum "1552.12" {
                  value 321;
                  description
                    "1552.12 nm/193.15000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1552.07" {
                  value 322;
                  description
                    "1552.07 nm/193.15625 THz 6.25GHz spacing";
                }
                enum "1552.02" {
                  value 323;
                  description
                    "1552.02 nm/193.16250 THz 6.25/12.5GHz spacing";
                }
                enum "1551.97" {
                  value 324;
                  description
                    "1551.97 nm/193.16875 THz 6.25GHz spacing";
                }
                enum "1551.92" {
                  value 325;
                  description
                    "1551.92 nm/193.17500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1551.87" {
                  value 326;
                  description
                    "1551.87 nm/193.18125 THz 6.25GHz spacing";
                }
                enum "1551.82" {
                  value 327;
                  description
                    "1551.82 nm/193.18750 THz 6.25/12.5GHz spacing";
                }
                enum "1551.77" {
                  value 328;
                  description
                    "1551.77 nm/193.19375 THz 6.25GHz spacing";
                }
                enum "1551.72" {
                  value 329;
                  description
                    "1551.72 nm/193.20000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1551.67" {
                  value 330;
                  description
                    "1551.67 nm/193.20625 THz 6.25GHz spacing";
                }
                enum "1551.62" {
                  value 331;
                  description
                    "1551.62 nm/193.21250 THz 6.25/12.5GHz spacing";
                }
                enum "1551.57" {
                  value 332;
                  description
                    "1551.57 nm/193.21875 THz 6.25GHz spacing";
                }
                enum "1551.52" {
                  value 333;
                  description
                    "1551.52 nm/193.22500 THz 6.25/12.5GHz spacing";
                }
                enum "1551.47" {
                  value 334;
                  description
                    "1551.47 nm/193.23125 THz 6.25GHz spacing";
                }
                enum "1551.42" {
                  value 335;
                  description
                    "1551.42 nm/193.23750 THz 6.25/12.5GHz spacing";
                }
                enum "1551.37" {
                  value 336;
                  description
                    "1551.37 nm/193.24375 THz 6.25GHz spacing";
                }
                enum "1551.32" {
                  value 337;
                  description
                    "1551.32 nm/193.25000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1551.27" {
                  value 338;
                  description
                    "1551.27 nm/193.25625 THz 6.25GHz spacing";
                }
                enum "1551.22" {
                  value 339;
                  description
                    "1551.22 nm/193.26250 THz 6.25/12.5GHz spacing";
                }
                enum "1551.17" {
                  value 340;
                  description
                    "1551.17 nm/193.26875 THz 6.25GHz spacing";
                }
                enum "1551.12" {
                  value 341;
                  description
                    "1551.12 nm/193.27500 THz 6.25/12.5GHz spacing";
                }
                enum "1551.07" {
                  value 342;
                  description
                    "1551.07 nm/193.28125 THz 6.25GHz spacing";
                }
                enum "1551.02" {
                  value 343;
                  description
                    "1551.02 nm/193.28750 THz 6.25/12.5GHz spacing";
                }
                enum "1550.97" {
                  value 344;
                  description
                    "1550.97 nm/193.29375 THz 6.25GHz spacing";
                }
                enum "1550.92" {
                  value 345;
                  description
                    "1550.92 nm/193.30000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1550.87" {
                  value 346;
                  description
                    "1550.87 nm/193.30625 THz 6.25GHz spacing";
                }
                enum "1550.82" {
                  value 347;
                  description
                    "1550.82 nm/193.31250 THz 6.25/12.5GHz spacing";
                }
                enum "1550.77" {
                  value 348;
                  description
                    "1550.77 nm/193.31875 THz 6.25GHz spacing";
                }
                enum "1550.72" {
                  value 349;
                  description
                    "1550.72 nm/193.32500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1550.67" {
                  value 350;
                  description
                    "1550.67 nm/193.33125 THz 6.25GHz spacing";
                }
                enum "1550.62" {
                  value 351;
                  description
                    "1550.62 nm/193.33750 THz 6.25/12.5GHz spacing";
                }
                enum "1550.57" {
                  value 352;
                  description
                    "1550.57 nm/193.34375 THz 6.25GHz spacing";
                }
                enum "1550.52" {
                  value 353;
                  description
                    "1550.52 nm/193.35000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1550.47" {
                  value 354;
                  description
                    "1550.47 nm/193.35625 THz 6.25GHz spacing";
                }
                enum "1550.42" {
                  value 355;
                  description
                    "1550.42 nm/193.36250 THz 6.25/12.5GHz spacing";
                }
                enum "1550.37" {
                  value 356;
                  description
                    "1550.37 nm/193.36875 THz 6.25GHz spacing";
                }
                enum "1550.32" {
                  value 357;
                  description
                    "1550.32 nm/193.37500 THz 6.25/12.5GHz spacing";
                }
                enum "1550.27" {
                  value 358;
                  description
                    "1550.27 nm/193.38125 THz 6.25GHz spacing";
                }
                enum "1550.22" {
                  value 359;
                  description
                    "1550.22 nm/193.38750 THz 6.25/12.5GHz spacing";
                }
                enum "1550.17" {
                  value 360;
                  description
                    "1550.17 nm/193.39375 THz 6.25GHz spacing";
                }
                enum "1550.12" {
                  value 361;
                  description
                    "1550.12 nm/193.40000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1550.07" {
                  value 362;
                  description
                    "1550.07 nm/193.40625 THz 6.25GHz spacing";
                }
                enum "1550.02" {
                  value 363;
                  description
                    "1550.02 nm/193.41250 THz 6.25/12.5GHz spacing";
                }
                enum "1549.97" {
                  value 364;
                  description
                    "1549.97 nm/193.41875 THz 6.25GHz spacing";
                }
                enum "1549.92" {
                  value 365;
                  description
                    "1549.92 nm/193.42500 THz 6.25/12.5GHz spacing";
                }
                enum "1549.87" {
                  value 366;
                  description
                    "1549.87 nm/193.43125 THz 6.25GHz spacing";
                }
                enum "1549.82" {
                  value 367;
                  description
                    "1549.82 nm/193.43750 THz 6.25/12.5GHz spacing";
                }
                enum "1549.77" {
                  value 368;
                  description
                    "1549.77 nm/193.44375 THz 6.25GHz spacing";
                }
                enum "1549.72" {
                  value 369;
                  description
                    "1549.72 nm/193.45000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1549.67" {
                  value 370;
                  description
                    "1549.67 nm/193.45625 THz 6.25GHz spacing";
                }
                enum "1549.62" {
                  value 371;
                  description
                    "1549.62 nm/193.46250 THz 6.25/12.5GHz spacing";
                }
                enum "1549.57" {
                  value 372;
                  description
                    "1549.57 nm/193.46875 THz 6.25GHz spacing";
                }
                enum "1549.52" {
                  value 373;
                  description
                    "1549.52 nm/193.47500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1549.47" {
                  value 374;
                  description
                    "1549.47 nm/193.48125 THz 6.25GHz spacing";
                }
                enum "1549.42" {
                  value 375;
                  description
                    "1549.42 nm/193.48750 THz 6.25/12.5GHz spacing";
                }
                enum "1549.37" {
                  value 376;
                  description
                    "1549.37 nm/193.49375 THz 6.25GHz spacing";
                }
                enum "1549.32" {
                  value 377;
                  description
                    "1549.32 nm/193.50000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1549.26" {
                  value 378;
                  description
                    "1549.26 nm/193.50625 THz 6.25GHz spacing";
                }
                enum "1549.21" {
                  value 379;
                  description
                    "1549.21 nm/193.51250 THz 6.25/12.5GHz spacing";
                }
                enum "1549.16" {
                  value 380;
                  description
                    "1549.16 nm/193.51875 THz 6.25GHz spacing";
                }
                enum "1549.11" {
                  value 381;
                  description
                    "1549.11 nm/193.52500 THz 6.25/12.5GHz spacing";
                }
                enum "1549.06" {
                  value 382;
                  description
                    "1549.06 nm/193.53125 THz 6.25GHz spacing";
                }
                enum "1549.01" {
                  value 383;
                  description
                    "1549.01 nm/193.53750 THz 6.25/12.5GHz spacing";
                }
                enum "1548.96" {
                  value 384;
                  description
                    "1548.96 nm/193.54375 THz 6.25GHz spacing";
                }
                enum "1548.91" {
                  value 385;
                  description
                    "1548.91 nm/193.55000 THz 6.25/12.5/50G/75Hz spacing";
                }
                enum "1548.86" {
                  value 386;
                  description
                    "1548.86 nm/193.55625 THz 6.25GHz spacing";
                }
                enum "1548.81" {
                  value 387;
                  description
                    "1548.81 nm/193.56250 THz 6.25/12.5GHz spacing";
                }
                enum "1548.76" {
                  value 388;
                  description
                    "1548.76 nm/193.56875 THz 6.25GHz spacing";
                }
                enum "1548.71" {
                  value 389;
                  description
                    "1548.71 nm/193.57500 THz 6.25/12.5GHz spacing";
                }
                enum "1548.66" {
                  value 390;
                  description
                    "1548.66 nm/193.58125 THz 6.25GHz spacing";
                }
                enum "1548.61" {
                  value 391;
                  description
                    "1548.61 nm/193.58750 THz 6.25/12.5GHz spacing";
                }
                enum "1548.56" {
                  value 392;
                  description
                    "1548.56 nm/193.59375 THz 6.25GHz spacing";
                }
                enum "1548.51" {
                  value 393;
                  description
                    "1548.51 nm/193.60000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1548.46" {
                  value 394;
                  description
                    "1548.46 nm/193.60625 THz 6.25GHz spacing";
                }
                enum "1548.41" {
                  value 395;
                  description
                    "1548.41 nm/193.61250 THz 6.25/12.5GHz spacing";
                }
                enum "1548.36" {
                  value 396;
                  description
                    "1548.36 nm/193.61875 THz 6.25GHz spacing";
                }
                enum "1548.31" {
                  value 397;
                  description
                    "1548.31 nm/193.62500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1548.26" {
                  value 398;
                  description
                    "1548.26 nm/193.63125 THz 6.25GHz spacing";
                }
                enum "1548.21" {
                  value 399;
                  description
                    "1548.21 nm/193.63750 THz 6.25/12.5GHz spacing";
                }
                enum "1548.16" {
                  value 400;
                  description
                    "1548.16 nm/193.64375 THz 6.25GHz spacing";
                }
                enum "1548.11" {
                  value 401;
                  description
                    "1548.11 nm/193.65000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1548.06" {
                  value 402;
                  description
                    "1548.06 nm/193.65625 THz 6.25GHz spacing";
                }
                enum "1548.02" {
                  value 403;
                  description
                    "1548.02 nm/193.66250 THz 6.25/12.5GHz spacing";
                }
                enum "1547.97" {
                  value 404;
                  description
                    "1547.97 nm/193.66875 THz 6.25GHz spacing";
                }
                enum "1547.92" {
                  value 405;
                  description
                    "1547.92 nm/193.67500 THz 6.25/12.5GHz spacing";
                }
                enum "1547.87" {
                  value 406;
                  description
                    "1547.87 nm/193.68125 THz 6.25GHz spacing";
                }
                enum "1547.82" {
                  value 407;
                  description
                    "1547.82 nm/193.68750 THz 6.25/12.5GHz spacing";
                }
                enum "1547.77" {
                  value 408;
                  description
                    "1547.77 nm/193.69375 THz 6.25GHz spacing";
                }
                enum "1547.72" {
                  value 409;
                  description
                    "1547.72 nm/193.70000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1547.67" {
                  value 410;
                  description
                    "1547.67 nm/193.70625 THz 6.25GHz spacing";
                }
                enum "1547.62" {
                  value 411;
                  description
                    "1547.62 nm/193.71250 THz 6.25/12.5GHz spacing";
                }
                enum "1547.57" {
                  value 412;
                  description
                    "1547.57 nm/193.71875 THz 6.25GHz spacing";
                }
                enum "1547.52" {
                  value 413;
                  description
                    "1547.52 nm/193.72500 THz 6.25/12.5GHz spacing";
                }
                enum "1547.47" {
                  value 414;
                  description
                    "1547.47 nm/193.73125 THz 6.25GHz spacing";
                }
                enum "1547.42" {
                  value 415;
                  description
                    "1547.42 nm/193.73750 THz 6.25/12.5GHz spacing";
                }
                enum "1547.37" {
                  value 416;
                  description
                    "1547.37 nm/193.74375 THz 6.25GHz spacing";
                }
                enum "1547.32" {
                  value 417;
                  description
                    "1547.32 nm/193.75000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1547.27" {
                  value 418;
                  description
                    "1547.27 nm/193.75625 THz 6.25GHz spacing";
                }
                enum "1547.22" {
                  value 419;
                  description
                    "1547.22 nm/193.76250 THz 6.25/12.5GHz spacing";
                }
                enum "1547.17" {
                  value 420;
                  description
                    "1547.17 nm/193.76875 THz 6.25GHz spacing";
                }
                enum "1547.12" {
                  value 421;
                  description
                    "1547.12 nm/193.77500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1547.07" {
                  value 422;
                  description
                    "1547.07 nm/193.78125 THz 6.25GHz spacing";
                }
                enum "1547.02" {
                  value 423;
                  description
                    "1547.02 nm/193.78750 THz 6.25/12.5GHz spacing";
                }
                enum "1546.97" {
                  value 424;
                  description
                    "1546.97 nm/193.79375 THz 6.25GHz spacing";
                }
                enum "1546.92" {
                  value 425;
                  description
                    "1546.92 nm/193.80000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1546.87" {
                  value 426;
                  description
                    "1546.87 nm/193.80625 THz 6.25GHz spacing";
                }
                enum "1546.82" {
                  value 427;
                  description
                    "1546.82 nm/193.81250 THz 6.25/12.5GHz spacing";
                }
                enum "1546.77" {
                  value 428;
                  description
                    "1546.77 nm/193.81875 THz 6.25GHz spacing";
                }
                enum "1546.72" {
                  value 429;
                  description
                    "1546.72 nm/193.82500 THz 6.25/12.5GHz spacing";
                }
                enum "1546.67" {
                  value 430;
                  description
                    "1546.67 nm/193.83125 THz 6.25GHz spacing";
                }
                enum "1546.62" {
                  value 431;
                  description
                    "1546.62 nm/193.83750 THz 6.25/12.5GHz spacing";
                }
                enum "1546.57" {
                  value 432;
                  description
                    "1546.57 nm/193.84375 THz 6.25GHz spacing";
                }
                enum "1546.52" {
                  value 433;
                  description
                    "1546.52 nm/193.85000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1546.47" {
                  value 434;
                  description
                    "1546.47 nm/193.85625 THz 6.25GHz spacing";
                }
                enum "1546.42" {
                  value 435;
                  description
                    "1546.42 nm/193.86250 THz 6.25/12.5GHz spacing";
                }
                enum "1546.37" {
                  value 436;
                  description
                    "1546.37 nm/193.86875 THz 6.25GHz spacing";
                }
                enum "1546.32" {
                  value 437;
                  description
                    "1546.32 nm/193.87500 THz 6.25/12.5GHz spacing";
                }
                enum "1546.27" {
                  value 438;
                  description
                    "1546.27 nm/193.88125 THz 6.25GHz spacing";
                }
                enum "1546.22" {
                  value 439;
                  description
                    "1546.22 nm/193.88750 THz 6.25/12.5GHz spacing";
                }
                enum "1546.17" {
                  value 440;
                  description
                    "1546.17 nm/193.89375 THz 6.25GHz spacing";
                }
                enum "1546.12" {
                  value 441;
                  description
                    "1546.12 nm/193.90000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1546.07" {
                  value 442;
                  description
                    "1546.07 nm/193.90625 THz 6.25GHz spacing";
                }
                enum "1546.02" {
                  value 443;
                  description
                    "1546.02 nm/193.91250 THz 6.25/12.5GHz spacing";
                }
                enum "1545.97" {
                  value 444;
                  description
                    "1545.97 nm/193.91875 THz 6.25GHz spacing";
                }
                enum "1545.92" {
                  value 445;
                  description
                    "1545.92 nm/193.92500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1545.87" {
                  value 446;
                  description
                    "1545.87 nm/193.93125 THz 6.25GHz spacing";
                }
                enum "1545.82" {
                  value 447;
                  description
                    "1545.82 nm/193.93750 THz 6.25/12.5GHz spacing";
                }
                enum "1545.77" {
                  value 448;
                  description
                    "1545.77 nm/193.94375 THz 6.25GHz spacing";
                }
                enum "1545.72" {
                  value 449;
                  description
                    "1545.72 nm/193.95000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1545.67" {
                  value 450;
                  description
                    "1545.67 nm/193.95625 THz 6.25GHz spacing";
                }
                enum "1545.62" {
                  value 451;
                  description
                    "1545.62 nm/193.96250 THz 6.25/12.5GHz spacing";
                }
                enum "1545.57" {
                  value 452;
                  description
                    "1545.57 nm/193.96875 THz 6.25GHz spacing";
                }
                enum "1545.52" {
                  value 453;
                  description
                    "1545.52 nm/193.97500 THz 6.25/12.5GHz spacing";
                }
                enum "1545.47" {
                  value 454;
                  description
                    "1545.47 nm/193.98125 THz 6.25GHz spacing";
                }
                enum "1545.42" {
                  value 455;
                  description
                    "1545.42 nm/193.98750 THz 6.25/12.5GHz spacing";
                }
                enum "1545.37" {
                  value 456;
                  description
                    "1545.37 nm/193.99375 THz 6.25GHz spacing";
                }
                enum "1545.32" {
                  value 457;
                  description
                    "1545.32 nm/194.00000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1545.27" {
                  value 458;
                  description
                    "1545.27 nm/194.00625 THz 6.25GHz spacing";
                }
                enum "1545.22" {
                  value 459;
                  description
                    "1545.22 nm/194.01250 THz 6.25/12.5GHz spacing";
                }
                enum "1545.17" {
                  value 460;
                  description
                    "1545.17 nm/194.01875 THz 6.25GHz spacing";
                }
                enum "1545.12" {
                  value 461;
                  description
                    "1545.12 nm/194.02500 THz 6.25/12.5GHz spacing";
                }
                enum "1545.07" {
                  value 462;
                  description
                    "1545.07 nm/194.03125 THz 6.25GHz spacing";
                }
                enum "1545.02" {
                  value 463;
                  description
                    "1545.02 nm/194.03750 THz 6.25/12.5GHz spacing";
                }
                enum "1544.97" {
                  value 464;
                  description
                    "1544.97 nm/194.04375 THz 6.25GHz spacing";
                }
                enum "1544.92" {
                  value 465;
                  description
                    "1544.92 nm/194.05000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1544.87" {
                  value 466;
                  description
                    "1544.87 nm/194.05625 THz 6.25GHz spacing";
                }
                enum "1544.82" {
                  value 467;
                  description
                    "1544.82 nm/194.06250 THz 6.25/12.5GHz spacing";
                }
                enum "1544.77" {
                  value 468;
                  description
                    "1544.77 nm/194.06875 THz 6.25GHz spacing";
                }
                enum "1544.72" {
                  value 469;
                  description
                    "1544.72 nm/194.07500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1544.68" {
                  value 470;
                  description
                    "1544.68 nm/194.08125 THz 6.25GHz spacing";
                }
                enum "1544.63" {
                  value 471;
                  description
                    "1544.63 nm/194.08750 THz 6.25/12.5GHz spacing";
                }
                enum "1544.58" {
                  value 472;
                  description
                    "1544.58 nm/194.09375 THz 6.25GHz spacing";
                }
                enum "1544.53" {
                  value 473;
                  description
                    "1544.53 nm/194.10000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1544.48" {
                  value 474;
                  description
                    "1544.48 nm/194.10625 THz 6.25GHz spacing";
                }
                enum "1544.43" {
                  value 475;
                  description
                    "1544.43 nm/194.11250 THz 6.25/12.5GHz spacing";
                }
                enum "1544.38" {
                  value 476;
                  description
                    "1544.38 nm/194.11875 THz 6.25GHz spacing";
                }
                enum "1544.33" {
                  value 477;
                  description
                    "1544.33 nm/194.12500 THz 6.25/12.5GHz spacing";
                }
                enum "1544.28" {
                  value 478;
                  description
                    "1544.28 nm/194.13125 THz 6.25GHz spacing";
                }
                enum "1544.23" {
                  value 479;
                  description
                    "1544.23 nm/194.13750 THz 6.25/12.5GHz spacing";
                }
                enum "1544.18" {
                  value 480;
                  description
                    "1544.18 nm/194.14375 THz 6.25GHz spacing";
                }
                enum "1544.13" {
                  value 481;
                  description
                    "1544.13 nm/194.15000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1544.08" {
                  value 482;
                  description
                    "1544.08 nm/194.15625 THz 6.25GHz spacing";
                }
                enum "1544.03" {
                  value 483;
                  description
                    "1544.03 nm/194.16250 THz 6.25/12.5GHz spacing";
                }
                enum "1543.98" {
                  value 484;
                  description
                    "1543.98 nm/194.16875 THz 6.25GHz spacing";
                }
                enum "1543.93" {
                  value 485;
                  description
                    "1543.93 nm/194.17500 THz 6.25/12.5GHz spacing";
                }
                enum "1543.88" {
                  value 486;
                  description
                    "1543.88 nm/194.18125 THz 6.25GHz spacing";
                }
                enum "1543.83" {
                  value 487;
                  description
                    "1543.83 nm/194.18750 THz 6.25/12.5GHz spacing";
                }
                enum "1543.78" {
                  value 488;
                  description
                    "1543.78 nm/194.19375 THz 6.25GHz spacing";
                }
                enum "1543.73" {
                  value 489;
                  description
                    "1543.73 nm/194.20000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1543.68" {
                  value 490;
                  description
                    "1543.68 nm/194.20625 THz 6.25GHz spacing";
                }
                enum "1543.63" {
                  value 491;
                  description
                    "1543.63 nm/194.21250 THz 6.25/12.5GHz spacing";
                }
                enum "1543.58" {
                  value 492;
                  description
                    "1543.58 nm/194.21875 THz 6.25GHz spacing";
                }
                enum "1543.53" {
                  value 493;
                  description
                    "1543.53 nm/194.22500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1543.48" {
                  value 494;
                  description
                    "1543.48 nm/194.23125 THz 6.25GHz spacing";
                }
                enum "1543.43" {
                  value 495;
                  description
                    "1543.43 nm/194.23750 THz 6.25/12.5GHz spacing";
                }
                enum "1543.38" {
                  value 496;
                  description
                    "1543.38 nm/194.24375 THz 6.25GHz spacing";
                }
                enum "1543.33" {
                  value 497;
                  description
                    "1543.33 nm/194.25000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1543.28" {
                  value 498;
                  description
                    "1543.28 nm/194.25625 THz 6.25GHz spacing";
                }
                enum "1543.23" {
                  value 499;
                  description
                    "1543.23 nm/194.26250 THz 6.25/12.5GHz spacing";
                }
                enum "1543.18" {
                  value 500;
                  description
                    "1543.18 nm/194.26875 THz 6.25GHz spacing";
                }
                enum "1543.13" {
                  value 501;
                  description
                    "1543.13 nm/194.27500 THz 6.25/12.5GHz spacing";
                }
                enum "1543.08" {
                  value 502;
                  description
                    "1543.08 nm/194.28125 THz 6.25GHz spacing";
                }
                enum "1543.04" {
                  value 503;
                  description
                    "1543.04 nm/194.28750 THz 6.25/12.5GHz spacing";
                }
                enum "1542.99" {
                  value 504;
                  description
                    "1542.99 nm/194.29375 THz 6.25GHz spacing";
                }
                enum "1542.94" {
                  value 505;
                  description
                    "1542.94 nm/194.30000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1542.89" {
                  value 506;
                  description
                    "1542.89 nm/194.30625 THz 6.25GHz spacing";
                }
                enum "1542.84" {
                  value 507;
                  description
                    "1542.84 nm/194.31250 THz 6.25/12.5GHz spacing";
                }
                enum "1542.79" {
                  value 508;
                  description
                    "1542.79 nm/194.31875 THz 6.25GHz spacing";
                }
                enum "1542.74" {
                  value 509;
                  description
                    "1542.74 nm/194.32500 THz 6.25/12.5GHz spacing";
                }
                enum "1542.69" {
                  value 510;
                  description
                    "1542.69 nm/194.33125 THz 6.25GHz spacing";
                }
                enum "1542.64" {
                  value 511;
                  description
                    "1542.64 nm/194.33750 THz 6.25/12.5GHz spacing";
                }
                enum "1542.59" {
                  value 512;
                  description
                    "1542.59 nm/194.34375 THz 6.25GHz spacing";
                }
                enum "1542.54" {
                  value 513;
                  description
                    "1542.54 nm/194.35000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1542.49" {
                  value 514;
                  description
                    "1542.49 nm/194.35625 THz 6.25GHz spacing";
                }
                enum "1542.44" {
                  value 515;
                  description
                    "1542.44 nm/194.36250 THz 6.25/12.5GHz spacing";
                }
                enum "1542.39" {
                  value 516;
                  description
                    "1542.39 nm/194.36875 THz 6.25GHz spacing";
                }
                enum "1542.34" {
                  value 517;
                  description
                    "1542.34 nm/194.37500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1542.29" {
                  value 518;
                  description
                    "1542.29 nm/194.38125 THz 6.25GHz spacing";
                }
                enum "1542.24" {
                  value 519;
                  description
                    "1542.24 nm/194.38750 THz 6.25/12.5GHz spacing";
                }
                enum "1542.19" {
                  value 520;
                  description
                    "1542.19 nm/194.39375 THz 6.25GHz spacing";
                }
                enum "1542.14" {
                  value 521;
                  description
                    "1542.14 nm/194.40000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1542.09" {
                  value 522;
                  description
                    "1542.09 nm/194.40625 THz 6.25GHz spacing";
                }
                enum "1542.04" {
                  value 523;
                  description
                    "1542.04 nm/194.41250 THz 6.25/12.5GHz spacing";
                }
                enum "1541.99" {
                  value 524;
                  description
                    "1541.99 nm/194.41875 THz 6.25GHz spacing";
                }
                enum "1541.94" {
                  value 525;
                  description
                    "1541.94 nm/194.42500 THz 6.25/12.5GHz spacing";
                }
                enum "1541.89" {
                  value 526;
                  description
                    "1541.89 nm/194.43125 THz 6.25GHz spacing";
                }
                enum "1541.84" {
                  value 527;
                  description
                    "1541.84 nm/194.43750 THz 6.25/12.5GHz spacing";
                }
                enum "1541.80" {
                  value 528;
                  description
                    "1541.80 nm/194.44375 THz 6.25GHz spacing";
                }
                enum "1541.75" {
                  value 529;
                  description
                    "1541.75 nm/194.45000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1541.70" {
                  value 530;
                  description
                    "1541.70 nm/194.45625 THz 6.25GHz spacing";
                }
                enum "1541.65" {
                  value 531;
                  description
                    "1541.65 nm/194.46250 THz 6.25/12.5GHz spacing";
                }
                enum "1541.60" {
                  value 532;
                  description
                    "1541.60 nm/194.46875 THz 6.25GHz spacing";
                }
                enum "1541.55" {
                  value 533;
                  description
                    "1541.55 nm/194.47500 THz 6.25/12.5GHz spacing";
                }
                enum "1541.50" {
                  value 534;
                  description
                    "1541.50 nm/194.48125 THz 6.25GHz spacing";
                }
                enum "1541.45" {
                  value 535;
                  description
                    "1541.45 nm/194.48750 THz 6.25/12.5GHz spacing";
                }
                enum "1541.40" {
                  value 536;
                  description
                    "1541.40 nm/194.49375 THz 6.25GHz spacing";
                }
                enum "1541.35" {
                  value 537;
                  description
                    "1541.35 nm/194.50000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1541.30" {
                  value 538;
                  description
                    "1541.30 nm/194.50625 THz 6.25GHz spacing";
                }
                enum "1541.25" {
                  value 539;
                  description
                    "1541.25 nm/194.51250 THz 6.25/12.5GHz spacing";
                }
                enum "1541.20" {
                  value 540;
                  description
                    "1541.20 nm/194.51875 THz 6.25GHz spacing";
                }
                enum "1541.15" {
                  value 541;
                  description
                    "1541.15 nm/194.52500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1541.10" {
                  value 542;
                  description
                    "1541.10 nm/194.53125 THz 6.25GHz spacing";
                }
                enum "1541.05" {
                  value 543;
                  description
                    "1541.05 nm/194.53750 THz 6.25/12.5GHz spacing";
                }
                enum "1541.00" {
                  value 544;
                  description
                    "1541.00 nm/194.54375 THz 6.25GHz spacing";
                }
                enum "1540.95" {
                  value 545;
                  description
                    "1540.95 nm/194.55000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1540.90" {
                  value 546;
                  description
                    "1540.90 nm/194.55625 THz 6.25GHz spacing";
                }
                enum "1540.85" {
                  value 547;
                  description
                    "1540.85 nm/194.56250 THz 6.25/12.5GHz spacing";
                }
                enum "1540.80" {
                  value 548;
                  description
                    "1540.80 nm/194.56875 THz 6.25GHz spacing";
                }
                enum "1540.76" {
                  value 549;
                  description
                    "1540.76 nm/194.57500 THz 6.25/12.5GHz spacing";
                }
                enum "1540.71" {
                  value 550;
                  description
                    "1540.71 nm/194.58125 THz 6.25GHz spacing";
                }
                enum "1540.66" {
                  value 551;
                  description
                    "1540.66 nm/194.58750 THz 6.25/12.5GHz spacing";
                }
                enum "1540.61" {
                  value 552;
                  description
                    "1540.61 nm/194.59375 THz 6.25GHz spacing";
                }
                enum "1540.56" {
                  value 553;
                  description
                    "1540.56 nm/194.60000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1540.51" {
                  value 554;
                  description
                    "1540.51 nm/194.60625 THz 6.25GHz spacing";
                }
                enum "1540.46" {
                  value 555;
                  description
                    "1540.46 nm/194.61250 THz 6.25/12.5GHz spacing";
                }
                enum "1540.41" {
                  value 556;
                  description
                    "1540.41 nm/194.61875 THz 6.25GHz spacing";
                }
                enum "1540.36" {
                  value 557;
                  description
                    "1540.36 nm/194.62500 THz 6.25/12.5GHz spacing";
                }
                enum "1540.31" {
                  value 558;
                  description
                    "1540.31 nm/194.63125 THz 6.25GHz spacing";
                }
                enum "1540.26" {
                  value 559;
                  description
                    "1540.26 nm/194.63750 THz 6.25/12.5GHz spacing";
                }
                enum "1540.21" {
                  value 560;
                  description
                    "1540.21 nm/194.64375 THz 6.25GHz spacing";
                }
                enum "1540.16" {
                  value 561;
                  description
                    "1540.16 nm/194.65000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1540.11" {
                  value 562;
                  description
                    "1540.11 nm/194.65625 THz 6.25GHz spacing";
                }
                enum "1540.06" {
                  value 563;
                  description
                    "1540.06 nm/194.66250 THz 6.25/12.5GHz spacing";
                }
                enum "1540.01" {
                  value 564;
                  description
                    "1540.01 nm/194.66875 THz 6.25GHz spacing";
                }
                enum "1539.96" {
                  value 565;
                  description
                    "1539.96 nm/194.67500 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1539.91" {
                  value 566;
                  description
                    "1539.91 nm/194.68125 THz 6.25GHz spacing";
                }
                enum "1539.86" {
                  value 567;
                  description
                    "1539.86 nm/194.68750 THz 6.25/12.5GHz spacing";
                }
                enum "1539.82" {
                  value 568;
                  description
                    "1539.82 nm/194.69375 THz 6.25GHz spacing";
                }
                enum "1539.77" {
                  value 569;
                  description
                    "1539.77 nm/194.70000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1539.72" {
                  value 570;
                  description
                    "1539.72 nm/194.70625 THz 6.25GHz spacing";
                }
                enum "1539.67" {
                  value 571;
                  description
                    "1539.67 nm/194.71250 THz 6.25/12.5GHz spacing";
                }
                enum "1539.62" {
                  value 572;
                  description
                    "1539.62 nm/194.71875 THz 6.25GHz spacing";
                }
                enum "1539.57" {
                  value 573;
                  description
                    "1539.57 nm/194.72500 THz 6.25/12.5GHz spacing";
                }
                enum "1539.52" {
                  value 574;
                  description
                    "1539.52 nm/194.73125 THz 6.25GHz spacing";
                }
                enum "1539.47" {
                  value 575;
                  description
                    "1539.47 nm/194.73750 THz 6.25/12.5GHz spacing";
                }
                enum "1539.42" {
                  value 576;
                  description
                    "1539.42 nm/194.74375 THz 6.25GHz spacing";
                }
                enum "1539.37" {
                  value 577;
                  description
                    "1539.37 nm/194.75000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1539.32" {
                  value 578;
                  description
                    "1539.32 nm/194.75625 THz 6.25GHz spacing";
                }
                enum "1539.27" {
                  value 579;
                  description
                    "1539.27 nm/194.76250 THz 6.25/12.5GHz spacing";
                }
                enum "1539.22" {
                  value 580;
                  description
                    "1539.22 nm/194.76875 THz 6.25GHz spacing";
                }
                enum "1539.17" {
                  value 581;
                  description
                    "1539.17 nm/194.77500 THz 6.25/12.5GHz spacing";
                }
                enum "1539.12" {
                  value 582;
                  description
                    "1539.12 nm/194.78125 THz 6.25GHz spacing";
                }
                enum "1539.07" {
                  value 583;
                  description
                    "1539.07 nm/194.78750 THz 6.25/12.5GHz spacing";
                }
                enum "1539.03" {
                  value 584;
                  description
                    "1539.03 nm/194.79375 THz 6.25GHz spacing";
                }
                enum "1538.98" {
                  value 585;
                  description
                    "1538.98 nm/194.80000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1538.93" {
                  value 586;
                  description
                    "1538.93 nm/194.80625 THz 6.25GHz spacing";
                }
                enum "1538.88" {
                  value 587;
                  description
                    "1538.88 nm/194.81250 THz 6.25/12.5GHz spacing";
                }
                enum "1538.83" {
                  value 588;
                  description
                    "1538.83 nm/194.81875 THz 6.25GHz spacing";
                }
                enum "1538.78" {
                  value 589;
                  description
                    "1538.78 nm/194.82500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1538.73" {
                  value 590;
                  description
                    "1538.73 nm/194.83125 THz 6.25GHz spacing";
                }
                enum "1538.68" {
                  value 591;
                  description
                    "1538.68 nm/194.83750 THz 6.25/12.5GHz spacing";
                }
                enum "1538.63" {
                  value 592;
                  description
                    "1538.63 nm/194.84375 THz 6.25GHz spacing";
                }
                enum "1538.58" {
                  value 593;
                  description
                    "1538.58 nm/194.85000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1538.53" {
                  value 594;
                  description
                    "1538.53 nm/194.85625 THz 6.25GHz spacing";
                }
                enum "1538.48" {
                  value 595;
                  description
                    "1538.48 nm/194.86250 THz 6.25/12.5GHz spacing";
                }
                enum "1538.43" {
                  value 596;
                  description
                    "1538.43 nm/194.86875 THz 6.25GHz spacing";
                }
                enum "1538.38" {
                  value 597;
                  description
                    "1538.38 nm/194.87500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1538.33" {
                  value 598;
                  description
                    "1538.33 nm/194.88125 THz 6.25GHz spacing";
                }
                enum "1538.28" {
                  value 599;
                  description
                    "1538.28 nm/194.88750 THz 6.25/12.5GHz spacing";
                }
                enum "1538.24" {
                  value 600;
                  description
                    "1538.24 nm/194.89375 THz 6.25GHz spacing";
                }
                enum "1538.19" {
                  value 601;
                  description
                    "1538.19 nm/194.90000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1538.14" {
                  value 602;
                  description
                    "1538.14 nm/194.90625 THz 6.25GHz spacing";
                }
                enum "1538.09" {
                  value 603;
                  description
                    "1538.09 nm/194.91250 THz 6.25/12.5GHz spacing";
                }
                enum "1538.04" {
                  value 604;
                  description
                    "1538.04 nm/194.91875 THz 6.25GHz spacing";
                }
                enum "1537.99" {
                  value 605;
                  description
                    "1537.99 nm/194.92500 THz 6.25/12.5GHz spacing";
                }
                enum "1537.94" {
                  value 606;
                  description
                    "1537.94 nm/194.93125 THz 6.25GHz spacing";
                }
                enum "1537.89" {
                  value 607;
                  description
                    "1537.89 nm/194.93750 THz 6.25/12.5GHz spacing";
                }
                enum "1537.84" {
                  value 608;
                  description
                    "1537.84 nm/194.94375 THz 6.25GHz spacing";
                }
                enum "1537.79" {
                  value 609;
                  description
                    "1537.79 nm/194.95000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1537.74" {
                  value 610;
                  description
                    "1537.74 nm/194.95625 THz 6.25GHz spacing";
                }
                enum "1537.69" {
                  value 611;
                  description
                    "1537.69 nm/194.96250 THz 6.25/12.5GHz spacing";
                }
                enum "1537.64" {
                  value 612;
                  description
                    "1537.64 nm/194.96875 THz 6.25GHz spacing";
                }
                enum "1537.59" {
                  value 613;
                  description
                    "1537.59 nm/194.97500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1537.55" {
                  value 614;
                  description
                    "1537.55 nm/194.98125 THz 6.25GHz spacing";
                }
                enum "1537.50" {
                  value 615;
                  description
                    "1537.50 nm/194.98750 THz 6.25/12.5GHz spacing";
                }
                enum "1537.45" {
                  value 616;
                  description
                    "1537.45 nm/194.99375 THz 6.25GHz spacing";
                }
                enum "1537.40" {
                  value 617;
                  description
                    "1537.40 nm/195.00000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1537.35" {
                  value 618;
                  description
                    "1537.35 nm/195.00625 THz 6.25GHz spacing";
                }
                enum "1537.30" {
                  value 619;
                  description
                    "1537.30 nm/195.01250 THz 6.25/12.5GHz spacing";
                }
                enum "1537.25" {
                  value 620;
                  description
                    "1537.25 nm/195.01875 THz 6.25GHz spacing";
                }
                enum "1537.20" {
                  value 621;
                  description
                    "1537.20 nm/195.02500 THz 6.25/12.5GHz spacing";
                }
                enum "1537.15" {
                  value 622;
                  description
                    "1537.15 nm/195.03125 THz 6.25GHz spacing";
                }
                enum "1537.10" {
                  value 623;
                  description
                    "1537.10 nm/195.03750 THz 6.25/12.5GHz spacing";
                }
                enum "1537.05" {
                  value 624;
                  description
                    "1537.05 nm/195.04375 THz 6.25GHz spacing";
                }
                enum "1537.00" {
                  value 625;
                  description
                    "1537.00 nm/195.05000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1536.95" {
                  value 626;
                  description
                    "1536.95 nm/195.05625 THz 6.25GHz spacing";
                }
                enum "1536.90" {
                  value 627;
                  description
                    "1536.90 nm/195.06250 THz 6.25/12.5GHz spacing";
                }
                enum "1536.86" {
                  value 628;
                  description
                    "1536.86 nm/195.06875 THz 6.25GHz spacing";
                }
                enum "1536.81" {
                  value 629;
                  description
                    "1536.81 nm/195.07500 THz 6.25/12.5GHz spacing";
                }
                enum "1536.76" {
                  value 630;
                  description
                    "1536.76 nm/195.08125 THz 6.25GHz spacing";
                }
                enum "1536.71" {
                  value 631;
                  description
                    "1536.71 nm/195.08750 THz 6.25/12.5GHz spacing";
                }
                enum "1536.66" {
                  value 632;
                  description
                    "1536.66 nm/195.09375 THz 6.25GHz spacing";
                }
                enum "1536.61" {
                  value 633;
                  description
                    "1536.61 nm/195.10000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1536.56" {
                  value 634;
                  description
                    "1536.56 nm/195.10625 THz 6.25GHz spacing";
                }
                enum "1536.51" {
                  value 635;
                  description
                    "1536.51 nm/195.11250 THz 6.25/12.5GHz spacing";
                }
                enum "1536.46" {
                  value 636;
                  description
                    "1536.46 nm/195.11875 THz 6.25GHz spacing";
                }
                enum "1536.41" {
                  value 637;
                  description
                    "1536.41 nm/195.12500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1536.36" {
                  value 638;
                  description
                    "1536.36 nm/195.13125 THz 6.25GHz spacing";
                }
                enum "1536.31" {
                  value 639;
                  description
                    "1536.31 nm/195.13750 THz 6.25/12.5GHz spacing";
                }
                enum "1536.26" {
                  value 640;
                  description
                    "1536.26 nm/195.14375 THz 6.25GHz spacing";
                }
                enum "1536.22" {
                  value 641;
                  description
                    "1536.22 nm/195.15000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1536.17" {
                  value 642;
                  description
                    "1536.17 nm/195.15625 THz 6.25GHz spacing";
                }
                enum "1536.12" {
                  value 643;
                  description
                    "1536.12 nm/195.16250 THz 6.25/12.5GHz spacing";
                }
                enum "1536.07" {
                  value 644;
                  description
                    "1536.07 nm/195.16875 THz 6.25GHz spacing";
                }
                enum "1536.02" {
                  value 645;
                  description
                    "1536.02 nm/195.17500 THz 6.25/12.5GHz spacing";
                }
                enum "1535.97" {
                  value 646;
                  description
                    "1535.97 nm/195.18125 THz 6.25GHz spacing";
                }
                enum "1535.92" {
                  value 647;
                  description
                    "1535.92 nm/195.18750 THz 6.25/12.5GHz spacing";
                }
                enum "1535.87" {
                  value 648;
                  description
                    "1535.87 nm/195.19375 THz 6.25GHz spacing";
                }
                enum "1535.82" {
                  value 649;
                  description
                    "1535.82 nm/195.20000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1535.77" {
                  value 650;
                  description
                    "1535.77 nm/195.20625 THz 6.25GHz spacing";
                }
                enum "1535.72" {
                  value 651;
                  description
                    "1535.72 nm/195.21250 THz 6.25/12.5GHz spacing";
                }
                enum "1535.67" {
                  value 652;
                  description
                    "1535.67 nm/195.21875 THz 6.25GHz spacing";
                }
                enum "1535.63" {
                  value 653;
                  description
                    "1535.63 nm/195.22500 THz 6.25/12.5GHz spacing";
                }
                enum "1535.58" {
                  value 654;
                  description
                    "1535.58 nm/195.23125 THz 6.25GHz spacing";
                }
                enum "1535.53" {
                  value 655;
                  description
                    "1535.53 nm/195.23750 THz 6.25/12.5GHz spacing";
                }
                enum "1535.48" {
                  value 656;
                  description
                    "1535.48 nm/195.24375 THz 6.25GHz spacing";
                }
                enum "1535.43" {
                  value 657;
                  description
                    "1535.43 nm/195.25000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1535.38" {
                  value 658;
                  description
                    "1535.38 nm/195.25625 THz 6.25GHz spacing";
                }
                enum "1535.33" {
                  value 659;
                  description
                    "1535.33 nm/195.26250 THz 6.25/12.5GHz spacing";
                }
                enum "1535.28" {
                  value 660;
                  description
                    "1535.28 nm/195.26875 THz 6.25GHz spacing";
                }
                enum "1535.23" {
                  value 661;
                  description
                    "1535.23 nm/195.27500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1535.18" {
                  value 662;
                  description
                    "1535.18 nm/195.28125 THz 6.25GHz spacing";
                }
                enum "1535.13" {
                  value 663;
                  description
                    "1535.13 nm/195.28750 THz 6.25/12.5GHz spacing";
                }
                enum "1535.08" {
                  value 664;
                  description
                    "1535.08 nm/195.29375 THz 6.25GHz spacing";
                }
                enum "1535.04" {
                  value 665;
                  description
                    "1535.04 nm/195.30000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1534.99" {
                  value 666;
                  description
                    "1534.99 nm/195.30625 THz 6.25GHz spacing";
                }
                enum "1534.94" {
                  value 667;
                  description
                    "1534.94 nm/195.31250 THz 6.25/12.5GHz spacing";
                }
                enum "1534.89" {
                  value 668;
                  description
                    "1534.89 nm/195.31875 THz 6.25GHz spacing";
                }
                enum "1534.84" {
                  value 669;
                  description
                    "1534.84 nm/195.32500 THz 6.25/12.5GHz spacing";
                }
                enum "1534.79" {
                  value 670;
                  description
                    "1534.79 nm/195.33125 THz 6.25GHz spacing";
                }
                enum "1534.74" {
                  value 671;
                  description
                    "1534.74 nm/195.33750 THz 6.25/12.5GHz spacing";
                }
                enum "1534.69" {
                  value 672;
                  description
                    "1534.69 nm/195.34375 THz 6.25GHz spacing";
                }
                enum "1534.64" {
                  value 673;
                  description
                    "1534.64 nm/195.35000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1534.59" {
                  value 674;
                  description
                    "1534.59 nm/195.35625 THz 6.25GHz spacing";
                }
                enum "1534.54" {
                  value 675;
                  description
                    "1534.54 nm/195.36250 THz 6.25/12.5GHz spacing";
                }
                enum "1534.50" {
                  value 676;
                  description
                    "1534.50 nm/195.36875 THz 6.25GHz spacing";
                }
                enum "1534.45" {
                  value 677;
                  description
                    "1534.45 nm/195.37500 THz 6.25/12.5GHz spacing";
                }
                enum "1534.40" {
                  value 678;
                  description
                    "1534.40 nm/195.38125 THz 6.25GHz spacing";
                }
                enum "1534.35" {
                  value 679;
                  description
                    "1534.35 nm/195.38750 THz 6.25/12.5GHz spacing";
                }
                enum "1534.30" {
                  value 680;
                  description
                    "1534.30 nm/195.39375 THz 6.25GHz spacing";
                }
                enum "1534.25" {
                  value 681;
                  description
                    "1534.25 nm/195.40000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1534.20" {
                  value 682;
                  description
                    "1534.20 nm/195.40625 THz 6.25GHz spacing";
                }
                enum "1534.15" {
                  value 683;
                  description
                    "1534.15 nm/195.41250 THz 6.25/12.5GHz spacing";
                }
                enum "1534.10" {
                  value 684;
                  description
                    "1534.10 nm/195.41875 THz 6.25GHz spacing";
                }
                enum "1534.05" {
                  value 685;
                  description
                    "1534.05 nm/195.42500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1534.00" {
                  value 686;
                  description
                    "1534.00 nm/195.43125 THz 6.25GHz spacing";
                }
                enum "1533.96" {
                  value 687;
                  description
                    "1533.96 nm/195.43750 THz 6.25/12.5GHz spacing";
                }
                enum "1533.91" {
                  value 688;
                  description
                    "1533.91 nm/195.44375 THz 6.25GHz spacing";
                }
                enum "1533.86" {
                  value 689;
                  description
                    "1533.86 nm/195.45000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1533.81" {
                  value 690;
                  description
                    "1533.81 nm/195.45625 THz 6.25GHz spacing";
                }
                enum "1533.76" {
                  value 691;
                  description
                    "1533.76 nm/195.46250 THz 6.25/12.5GHz spacing";
                }
                enum "1533.71" {
                  value 692;
                  description
                    "1533.71 nm/195.46875 THz 6.25GHz spacing";
                }
                enum "1533.66" {
                  value 693;
                  description
                    "1533.66 nm/195.47500 THz 6.25/12.5GHz spacing";
                }
                enum "1533.61" {
                  value 694;
                  description
                    "1533.61 nm/195.48125 THz 6.25GHz spacing";
                }
                enum "1533.56" {
                  value 695;
                  description
                    "1533.56 nm/195.48750 THz 6.25/12.5GHz spacing";
                }
                enum "1533.51" {
                  value 696;
                  description
                    "1533.51 nm/195.49375 THz 6.25GHz spacing";
                }
                enum "1533.47" {
                  value 697;
                  description
                    "1533.47 nm/195.50000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1533.42" {
                  value 698;
                  description
                    "1533.42 nm/195.50625 THz 6.25GHz spacing";
                }
                enum "1533.37" {
                  value 699;
                  description
                    "1533.37 nm/195.51250 THz 6.25/12.5GHz spacing";
                }
                enum "1533.32" {
                  value 700;
                  description
                    "1533.32 nm/195.51875 THz 6.25GHz spacing";
                }
                enum "1533.27" {
                  value 701;
                  description
                    "1533.27 nm/195.52500 THz 6.25/12.5GHz spacing";
                }
                enum "1533.22" {
                  value 702;
                  description
                    "1533.22 nm/195.53125 THz 6.25GHz spacing";
                }
                enum "1533.17" {
                  value 703;
                  description
                    "1533.17 nm/195.53750 THz 6.25/12.5GHz spacing";
                }
                enum "1533.12" {
                  value 704;
                  description
                    "1533.12 nm/195.54375 THz 6.25GHz spacing";
                }
                enum "1533.07" {
                  value 705;
                  description
                    "1533.07 nm/195.55000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1533.02" {
                  value 706;
                  description
                    "1533.02 nm/195.55625 THz 6.25GHz spacing";
                }
                enum "1532.98" {
                  value 707;
                  description
                    "1532.98 nm/195.56250 THz 6.25/12.5GHz spacing";
                }
                enum "1532.93" {
                  value 708;
                  description
                    "1532.93 nm/195.56875 THz 6.25GHz spacing";
                }
                enum "1532.88" {
                  value 709;
                  description
                    "1532.88 nm/195.57500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1532.83" {
                  value 710;
                  description
                    "1532.83 nm/195.58125 THz 6.25GHz spacing";
                }
                enum "1532.78" {
                  value 711;
                  description
                    "1532.78 nm/195.58750 THz 6.25/12.5GHz spacing";
                }
                enum "1532.73" {
                  value 712;
                  description
                    "1532.73 nm/195.59375 THz 6.25GHz spacing";
                }
                enum "1532.68" {
                  value 713;
                  description
                    "1532.68 nm/195.60000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1532.63" {
                  value 714;
                  description
                    "1532.63 nm/195.60625 THz 6.25GHz spacing";
                }
                enum "1532.58" {
                  value 715;
                  description
                    "1532.58 nm/195.61250 THz 6.25/12.5GHz spacing";
                }
                enum "1532.53" {
                  value 716;
                  description
                    "1532.53 nm/195.61875 THz 6.25GHz spacing";
                }
                enum "1532.49" {
                  value 717;
                  description
                    "1532.49 nm/195.62500 THz 6.25/12.5GHz spacing";
                }
                enum "1532.44" {
                  value 718;
                  description
                    "1532.44 nm/195.63125 THz 6.25GHz spacing";
                }
                enum "1532.39" {
                  value 719;
                  description
                    "1532.39 nm/195.63750 THz 6.25/12.5GHz spacing";
                }
                enum "1532.34" {
                  value 720;
                  description
                    "1532.34 nm/195.64375 THz 6.25GHz spacing";
                }
                enum "1532.29" {
                  value 721;
                  description
                    "1532.29 nm/195.65000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1532.24" {
                  value 722;
                  description
                    "1532.24 nm/195.65625 THz 6.25GHz spacing";
                }
                enum "1532.19" {
                  value 723;
                  description
                    "1532.19 nm/195.66250 THz 6.25/12.5GHz spacing";
                }
                enum "1532.14" {
                  value 724;
                  description
                    "1532.14 nm/195.66875 THz 6.25GHz spacing";
                }
                enum "1532.09" {
                  value 725;
                  description
                    "1532.09 nm/195.67500 THz 6.25/12.5GHz spacing";
                }
                enum "1532.04" {
                  value 726;
                  description
                    "1532.04 nm/195.68125 THz 6.25GHz spacing";
                }
                enum "1532.00" {
                  value 727;
                  description
                    "1532.00 nm/195.68750 THz 6.25/12.5GHz spacing";
                }
                enum "1531.95" {
                  value 728;
                  description
                    "1531.95 nm/195.69375 THz 6.25GHz spacing";
                }
                enum "1531.90" {
                  value 729;
                  description
                    "1531.90 nm/195.70000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1531.85" {
                  value 730;
                  description
                    "1531.85 nm/195.70625 THz 6.25GHz spacing";
                }
                enum "1531.80" {
                  value 731;
                  description
                    "1531.80 nm/195.71250 THz 6.25/12.5GHz spacing";
                }
                enum "1531.75" {
                  value 732;
                  description
                    "1531.75 nm/195.71875 THz 6.25GHz spacing";
                }
                enum "1531.70" {
                  value 733;
                  description
                    "1531.70 nm/195.72500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1531.65" {
                  value 734;
                  description
                    "1531.65 nm/195.73125 THz 6.25GHz spacing";
                }
                enum "1531.60" {
                  value 735;
                  description
                    "1531.60 nm/195.73750 THz 6.25/12.5GHz spacing";
                }
                enum "1531.56" {
                  value 736;
                  description
                    "1531.56 nm/195.74375 THz 6.25GHz spacing";
                }
                enum "1531.51" {
                  value 737;
                  description
                    "1531.51 nm/195.75000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1531.46" {
                  value 738;
                  description
                    "1531.46 nm/195.75625 THz 6.25GHz spacing";
                }
                enum "1531.41" {
                  value 739;
                  description
                    "1531.41 nm/195.76250 THz 6.25/12.5GHz spacing";
                }
                enum "1531.36" {
                  value 740;
                  description
                    "1531.36 nm/195.76875 THz 6.25GHz spacing";
                }
                enum "1531.31" {
                  value 741;
                  description
                    "1531.31 nm/195.77500 THz 6.25/12.5GHz spacing";
                }
                enum "1531.26" {
                  value 742;
                  description
                    "1531.26 nm/195.78125 THz 6.25GHz spacing";
                }
                enum "1531.21" {
                  value 743;
                  description
                    "1531.21 nm/195.78750 THz 6.25/12.5GHz spacing";
                }
                enum "1531.16" {
                  value 744;
                  description
                    "1531.16 nm/195.79375 THz 6.25GHz spacing";
                }
                enum "1531.12" {
                  value 745;
                  description
                    "1531.12 nm/195.80000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1531.07" {
                  value 746;
                  description
                    "1531.07 nm/195.80625 THz 6.25GHz spacing";
                }
                enum "1531.02" {
                  value 747;
                  description
                    "1531.02 nm/195.81250 THz 6.25/12.5GHz spacing";
                }
                enum "1530.97" {
                  value 748;
                  description
                    "1530.97 nm/195.81875 THz 6.25GHz spacing";
                }
                enum "1530.92" {
                  value 749;
                  description
                    "1530.92 nm/195.82500 THz 6.25/12.5GHz spacing";
                }
                enum "1530.87" {
                  value 750;
                  description
                    "1530.87 nm/195.83125 THz 6.25GHz spacing";
                }
                enum "1530.82" {
                  value 751;
                  description
                    "1530.82 nm/195.83750 THz 6.25/12.5GHz spacing";
                }
                enum "1530.77" {
                  value 752;
                  description
                    "1530.77 nm/195.84375 THz 6.25GHz spacing";
                }
                enum "1530.72" {
                  value 753;
                  description
                    "1530.72 nm/195.85000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1530.68" {
                  value 754;
                  description
                    "1530.68 nm/195.85625 THz 6.25GHz spacing";
                }
                enum "1530.63" {
                  value 755;
                  description
                    "1530.63 nm/195.86250 THz 6.25/12.5GHz spacing";
                }
                enum "1530.58" {
                  value 756;
                  description
                    "1530.58 nm/195.86875 THz 6.25GHz spacing";
                }
                enum "1530.53" {
                  value 757;
                  description
                    "1530.53 nm/195.87500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1530.48" {
                  value 758;
                  description
                    "1530.48 nm/195.88125 THz 6.25GHz spacing";
                }
                enum "1530.43" {
                  value 759;
                  description
                    "1530.43 nm/195.88750 THz 6.25/12.5GHz spacing";
                }
                enum "1530.38" {
                  value 760;
                  description
                    "1530.38 nm/195.89375 THz 6.25GHz spacing";
                }
                enum "1530.33" {
                  value 761;
                  description
                    "1530.33 nm/195.90000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1530.29" {
                  value 762;
                  description
                    "1530.29 nm/195.90625 THz 6.25GHz spacing";
                }
                enum "1530.24" {
                  value 763;
                  description
                    "1530.24 nm/195.91250 THz 6.25/12.5GHz spacing";
                }
                enum "1530.19" {
                  value 764;
                  description
                    "1530.19 nm/195.91875 THz 6.25GHz spacing";
                }
                enum "1530.14" {
                  value 765;
                  description
                    "1530.14 nm/195.92500 THz 6.25/12.5GHz spacing";
                }
                enum "1530.09" {
                  value 766;
                  description
                    "1530.09 nm/195.93125 THz 6.25GHz spacing";
                }
                enum "1530.04" {
                  value 767;
                  description
                    "1530.04 nm/195.93750 THz 6.25/12.5GHz spacing";
                }
                enum "1529.99" {
                  value 768;
                  description
                    "1529.99 nm/195.94375 THz 6.25GHz spacing";
                }
                enum "1529.94" {
                  value 769;
                  description
                    "1529.94 nm/195.95000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1529.89" {
                  value 770;
                  description
                    "1529.89 nm/195.95625 THz 6.25GHz spacing";
                }
                enum "1529.85" {
                  value 771;
                  description
                    "1529.85 nm/195.96250 THz 6.25/12.5GHz spacing";
                }
                enum "1529.80" {
                  value 772;
                  description
                    "1529.80 nm/195.96875 THz 6.25GHz spacing";
                }
                enum "1529.75" {
                  value 773;
                  description
                    "1529.75 nm/195.97500 THz 6.25/12.5GHz spacing";
                }
                enum "1529.70" {
                  value 774;
                  description
                    "1529.70 nm/195.98125 THz 6.25GHz spacing";
                }
                enum "1529.65" {
                  value 775;
                  description
                    "1529.65 nm/195.98750 THz 6.25/12.5GHz spacing";
                }
                enum "1529.60" {
                  value 776;
                  description
                    "1529.60 nm/195.99375 THz 6.25GHz spacing";
                }
                enum "1529.55" {
                  value 777;
                  description
                    "1529.55 nm/196.00000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1529.50" {
                  value 778;
                  description
                    "1529.50 nm/196.00625 THz 6.25GHz spacing";
                }
                enum "1529.46" {
                  value 779;
                  description
                    "1529.46 nm/196.01250 THz 6.25/12.5GHz spacing";
                }
                enum "1529.41" {
                  value 780;
                  description
                    "1529.41 nm/196.01875 THz 6.25GHz spacing";
                }
                enum "1529.36" {
                  value 781;
                  description
                    "1529.36 nm/196.02500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1529.31" {
                  value 782;
                  description
                    "1529.31 nm/196.03125 THz 6.25GHz spacing";
                }
                enum "1529.26" {
                  value 783;
                  description
                    "1529.26 nm/196.03750 THz 6.25/12.5GHz spacing";
                }
                enum "1529.21" {
                  value 784;
                  description
                    "1529.21 nm/196.04375 THz 6.25GHz spacing";
                }
                enum "1529.16" {
                  value 785;
                  description
                    "1529.16 nm/196.05000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1529.11" {
                  value 786;
                  description
                    "1529.11 nm/196.05625 THz 6.25GHz spacing";
                }
                enum "1529.07" {
                  value 787;
                  description
                    "1529.07 nm/196.06250 THz 6.25/12.5GHz spacing";
                }
                enum "1529.02" {
                  value 788;
                  description
                    "1529.02 nm/196.06875 THz 6.25GHz spacing";
                }
                enum "1528.97" {
                  value 789;
                  description
                    "1528.97 nm/196.07500 THz 6.25/12.5GHz spacing";
                }
                enum "1528.92" {
                  value 790;
                  description
                    "1528.92 nm/196.08125 THz 6.25GHz spacing";
                }
                enum "1528.87" {
                  value 791;
                  description
                    "1528.87 nm/196.08750 THz 6.25/12.5GHz spacing";
                }
                enum "1528.82" {
                  value 792;
                  description
                    "1528.82 nm/196.09375 THz 6.25GHz spacing";
                }
                enum "1528.77" {
                  value 793;
                  description
                    "1528.77 nm/196.10000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1528.38" {
                  value 794;
                  description
                    "1528.38 nm/196.15040 THz 50Ghz spacing";
                }
              }
              description
                "Wavelength of the optics (nanometers) for 50Ghz/100Ghz spacing";
            }
    
            leaf tx-power {
              type string;
              units "dBm";
              description
                "Transmit laser output power";
            }
    
            leaf loopback {
              type empty;
              description
                "Put the optics in loopback mode";
            }
    
            leaf los-warning-threshold {
              type string;
              units "dBm";
              description
                "LOS warning threshold";
            }
    
            leaf los-alarm-threshold {
              type string;
              units "dBm";
              description "LOS alarm threshold";
            }
    
            leaf modulation-format {
              type enumeration {
                enum "16qam" {
                  value 0;
                  description
                    "16-QAM Modulation Format";
                }
                enum "8qam" {
                  value 1;
                  description
                    "8-QAM MOdulation Format";
                }
                enum "qpsk" {
                  value 2;
                  description
                    "QPSK Modulation Format";
                }
              }
              description
                "Type of Modulation Format";
            }
    
            choice laser-enable-choice {
              leaf laser-enable {
                type empty;
                description "Enable Laser";
              }
              leaf no-laser-enable {
                type empty;
                description "Don't enable Laser";
              }
            }  // choice laser-enable-choice
    
            choice is-ma-choice {
              leaf is-ma {
                type empty;
                description
                  "Link is enabled with alarms masked";
              }
              leaf no-is-ma {
                type empty;
                description
                  "Don't link is enabled with alarms masked";
              }
            }  // choice is-ma-choice
    
            leaf encoding {
              type enumeration {
                enum "differential" {
                  value 0;
                  description
                    "Differential phase line encoding";
                }
                enum "non-differential" {
                  value 1;
                  description
                    "Non-differential phase line encoding";
                }
              }
              description "Line encoding";
            }
    
            leaf fec {
              type enumeration {
                enum "sdfec" {
                  value 0;
                  description
                    "Sky-Compatible Soft Decision Forward Error Correction";
                }
                enum "sdfec25" {
                  value 1;
                  description
                    "Denali-Compatible Soft Decision Forward Error Correction with 25 percent overhead";
                }
                enum "hgfec" {
                  value 2;
                  description
                    "High Gain Forward Error Correction";
                }
                enum "sdfec15" {
                  value 3;
                  description
                    "Soft Decision Forward Error Correction with 15 percent overhead";
                }
              }
              description
                "Forward Error Correction mode";
            }
    
            leaf high-polarization {
              type empty;
              description
                "High polarization tracking mode";
            }
    
            container signal-degrade {
              description
                "Signal degrade thresholds";
              uses apply-advanced;
    
              leaf interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 1000";
                  }
                }
                units "milliseconds";
                default "10";
                description "Time interval";
              }
    
              leaf ber-threshold-clear {
                type string {
                  junos:posix-pattern "^[0-9]+(.[0-9]+)?e-[0-9]$";
                  junos:pattern-message "Ber threshold value in format: xe-n, x is an integer or decimal number, n = 0..9";
                }
                description
                  "Ber threshold for signal degrade clear (format: xe-n, example: 4.5e-3)";
              }
    
              leaf ber-threshold-signal-degrade {
                type string {
                  junos:posix-pattern "^[0-9]+(.[0-9]+)?e-[0-9]$";
                  junos:pattern-message "Ber threshold value in format: xe-n, x is an integer or decimal number, n = 0..9";
                }
                description
                  "Ber threshold for signal-degrade (format: xe-n, example: 4.5e-3)";
              }
    
              leaf q-threshold-signal-degrade-clear {
                type string;
                units "dB";
                description
                  "Q threshold for signal-degrade clear (e.g. 14.26)";
              }
    
              leaf q-threshold-signal-degrade {
                type string;
                units "dB";
                description
                  "Q threshold for signal-degrade (e.g. 9.26)";
              }
            }  // container signal-degrade
    
            list alarm {
              key "name";
              ordered-by user;
              description "Set optic alarms";
              leaf name {
                type enumeration {
                  enum "low-light-alarm" {
                    value 0;
                    description
                      "Enable low light alarm";
                  }
                }
              }
    
              uses apply-advanced;
    
              choice actiontype {
                leaf syslog {
                  type empty;
                }
                leaf link-down {
                  type empty;
                }
              }  // choice actiontype
            }  // list alarm
    
            container tca {
              description
                "Set tca for optic alarms";
              uses apply-advanced;
    
              container tx-power-high-tca {
                description "Tx power high TCA";
                uses apply-advanced;
    
                choice enable-tca-choice {
                  leaf enable-tca {
                    type empty;
                    description "Enable tca";
                  }
                  leaf no-enable-tca {
                    type empty;
                    description
                      "Don't enable tca";
                  }
                }  // choice enable-tca-choice
    
                leaf threshold {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 15 minute tx power high TCA in dBm";
                }
    
                leaf threshold-24hrs {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 24 hour tx power high TCA in dBm";
                }
              }  // container tx-power-high-tca
    
              container tx-power-low-tca {
                description "Tx power low TCA";
                uses apply-advanced;
    
                choice enable-tca-choice {
                  leaf enable-tca {
                    type empty;
                    description "Enable tca";
                  }
                  leaf no-enable-tca {
                    type empty;
                    description
                      "Don't enable tca";
                  }
                }  // choice enable-tca-choice
    
                leaf threshold {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 15 minute tx power low TCA in dBm";
                }
    
                leaf threshold-24hrs {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 24 hour tx power low TCA in dBm";
                }
              }  // container tx-power-low-tca
    
              container rx-power-high-tca {
                description "Rx power high TCA";
                uses apply-advanced;
    
                choice enable-tca-choice {
                  leaf enable-tca {
                    type empty;
                    description "Enable tca";
                  }
                  leaf no-enable-tca {
                    type empty;
                    description
                      "Don't enable tca";
                  }
                }  // choice enable-tca-choice
    
                leaf threshold {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 15 minute rx power high TCA in dBm";
                }
    
                leaf threshold-24hrs {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 24 hour rx power high TCA in dBm";
                }
              }  // container rx-power-high-tca
    
              container rx-power-low-tca {
                description "Rx power low TCA";
                uses apply-advanced;
    
                choice enable-tca-choice {
                  leaf enable-tca {
                    type empty;
                    description "Enable tca";
                  }
                  leaf no-enable-tca {
                    type empty;
                    description
                      "Don't enable tca";
                  }
                }  // choice enable-tca-choice
    
                leaf threshold {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 15 minute rx power low TCA in dBm";
                }
    
                leaf threshold-24hrs {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 24 hour rx power low TCA in dBm";
                }
              }  // container rx-power-low-tca
    
              container temperature-high-tca {
                description
                  "Temperature high TCA";
                uses apply-advanced;
    
                choice enable-tca-choice {
                  leaf enable-tca {
                    type empty;
                    description "Enable tca";
                  }
                  leaf no-enable-tca {
                    type empty;
                    description
                      "Don't enable tca";
                  }
                }  // choice enable-tca-choice
    
                leaf threshold {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 15 minute high temperature TCA in celsius";
                }
    
                leaf threshold-24hrs {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 24 hour high temperature TCA in celsius";
                }
              }  // container temperature-high-tca
    
              container temperature-low-tca {
                description
                  "Temperature low TCA";
                uses apply-advanced;
    
                choice enable-tca-choice {
                  leaf enable-tca {
                    type empty;
                    description "Enable tca";
                  }
                  leaf no-enable-tca {
                    type empty;
                    description
                      "Don't enable tca";
                  }
                }  // choice enable-tca-choice
    
                leaf threshold {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 15 minute low temperature TCA in celsius";
                }
    
                leaf threshold-24hrs {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 24 hour low temperature TCA in celsius";
                }
              }  // container temperature-low-tca
    
              container carrier-frequency-offset-high-tca {
                description
                  "Carrier frequency offset high TCA";
                uses apply-advanced;
    
                choice enable-tca-choice {
                  leaf enable-tca {
                    type empty;
                    description "Enable tca";
                  }
                  leaf no-enable-tca {
                    type empty;
                    description
                      "Don't enable tca";
                  }
                }  // choice enable-tca-choice
    
                leaf threshold {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 15 minute frequency offset high TCA in MHz";
                }
    
                leaf threshold-24hrs {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 24 hour frequency offset high TCA in MHz";
                }
              }  // container carrier-frequency-offset-high-tca
    
              container carrier-frequency-offset-low-tca {
                description
                  "Carrier frequency offset low TCA";
                uses apply-advanced;
    
                choice enable-tca-choice {
                  leaf enable-tca {
                    type empty;
                    description "Enable tca";
                  }
                  leaf no-enable-tca {
                    type empty;
                    description
                      "Don't enable tca";
                  }
                }  // choice enable-tca-choice
    
                leaf threshold {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 15 minute frequency offset low TCA in MHz";
                }
    
                leaf threshold-24hrs {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 24 hour frequency offset low TCA in MHz";
                }
              }  // container carrier-frequency-offset-low-tca
    
              container fec-ber {
                description
                  "Optics Errored Seconds Threshold crossing defect trigger";
                choice enable-tca-choice {
                  leaf enable-tca {
                    type empty;
                    description
                      "Enable the Optics errored seconds threshold crossing alert";
                  }
                  leaf no-enable-tca {
                    type empty;
                    description
                      "Don't enable the Optics errored seconds threshold crossing alert";
                  }
                }  // choice enable-tca-choice
    
                leaf threshold {
                  type string {
                    junos:posix-pattern "^[0-9]+(\.[0-9]+)?e-[0-9]$";
                    junos:pattern-message "FEC BER threshold value in format: xe-n, x is an integer or decimal number, n = 0..9";
                  }
                  default "10e-3";
                  description
                    "TCA threshold for BER value in format: xe-n, x is an integer or decimal number, n = 0..9";
                }
    
                leaf threshold-24hrs {
                  type string {
                    junos:posix-pattern "^[0-9]+(\.[0-9]+)?e-[0-9]$";
                    junos:pattern-message "FEC BER threshold value in format: xe-n, x is an integer or decimal number, n = 0..9";
                  }
                  default "10e-3";
                  description
                    "TCA threshold for BER value in format: xe-n, x is an integer or decimal number, n = 0..9";
                }
              }  // container fec-ber
    
              container tec-current-high-tca {
                description
                  "TEC Current high TCA";
                uses apply-advanced;
    
                choice enable-tca-choice {
                  leaf enable-tca {
                    type empty;
                    description "Enable tca";
                  }
                  leaf no-enable-tca {
                    type empty;
                    description
                      "Don't enable tca";
                  }
                }  // choice enable-tca-choice
    
                leaf threshold {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 15 minute TEC Current high TCA in mA";
                }
    
                leaf threshold-24hrs {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 24 hour TEC Current high TCA in mA";
                }
              }  // container tec-current-high-tca
    
              container tec-current-low-tca {
                description
                  "TEC Current low TCA";
                uses apply-advanced;
    
                choice enable-tca-choice {
                  leaf enable-tca {
                    type empty;
                    description "Enable tca";
                  }
                  leaf no-enable-tca {
                    type empty;
                    description
                      "Don't enable tca";
                  }
                }  // choice enable-tca-choice
    
                leaf threshold {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 15 minute TEC Current low TCA in mA";
                }
    
                leaf threshold-24hrs {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 24 hour TEC Current low TCA in mA";
                }
              }  // container tec-current-low-tca
    
              container residual-isi-high-tca {
                description
                  "Residual ISI high TCA";
                uses apply-advanced;
    
                choice enable-tca-choice {
                  leaf enable-tca {
                    type empty;
                    description "Enable tca";
                  }
                  leaf no-enable-tca {
                    type empty;
                    description
                      "Don't enable tca";
                  }
                }  // choice enable-tca-choice
    
                leaf threshold {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 15 minute Residual ISI high TCA in ps/nm";
                }
    
                leaf threshold-24hrs {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 24 hour Residual ISI high TCA in ps/nm";
                }
              }  // container residual-isi-high-tca
    
              container residual-isi-low-tca {
                description
                  "Residual ISI low TCA";
                uses apply-advanced;
    
                choice enable-tca-choice {
                  leaf enable-tca {
                    type empty;
                    description "Enable tca";
                  }
                  leaf no-enable-tca {
                    type empty;
                    description
                      "Don't enable tca";
                  }
                }  // choice enable-tca-choice
    
                leaf threshold {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 15 minute Residual ISI low TCA in ps/nm";
                }
    
                leaf threshold-24hrs {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 24 hour Residual ISI low TCA in ps/nm";
                }
              }  // container residual-isi-low-tca
    
              container pam-histogram-high-tca {
                description
                  "PAM Histogram high TCA";
                uses apply-advanced;
    
                choice enable-tca-choice {
                  leaf enable-tca {
                    type empty;
                    description "Enable tca";
                  }
                  leaf no-enable-tca {
                    type empty;
                    description
                      "Don't enable tca";
                  }
                }  // choice enable-tca-choice
    
                leaf threshold {
                  type string {
                    junos:posix-pattern "^[0-9]+$";
                    junos:pattern-message "must be an unsigned integer";
                  }
                  description
                    "Threshold for 15 minute PAM Histogram high TCA";
                }
    
                leaf threshold-24hrs {
                  type string {
                    junos:posix-pattern "^[0-9]+$";
                    junos:pattern-message "must be an unsigned integer";
                  }
                  description
                    "Threshold for 24 hour PAM Histogram high TCA";
                }
              }  // container pam-histogram-high-tca
    
              container snr-low-tca {
                description "SNR low TCA";
                uses apply-advanced;
    
                choice enable-tca-choice {
                  leaf enable-tca {
                    type empty;
                    description "Enable tca";
                  }
                  leaf no-enable-tca {
                    type empty;
                    description
                      "Don't enable tca";
                  }
                }  // choice enable-tca-choice
    
                leaf threshold {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 15 minute SNR low TCA in dBm ";
                }
    
                leaf threshold-24hrs {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 24 hour SNR low TCA in dBm";
                }
              }  // container snr-low-tca
    
              container fec-corrected-errors-high-tca {
                description
                  "FEC Corrected Error High Threshold crossing defect trigger";
                uses apply-advanced;
    
                choice enable-tca-choice {
                  leaf enable-tca {
                    type empty;
                    description
                      "Enable the FEC Corrected Errors threshold crossing alert";
                  }
                  leaf no-enable-tca {
                    type empty;
                    description
                      "Don't enable the FEC Corrected Errors threshold crossing alert";
                  }
                }  // choice enable-tca-choice
    
                leaf threshold {
                  type string {
                    junos:posix-pattern "^[0-9]+(\.[0-9]+)?e-[0-9]$";
                    junos:pattern-message "FEC Corrected-Errs threshold value in format: xe-n, x is an integer or decimal number, n = 0..9";
                  }
                  default "10e-3";
                  description
                    "FEC Corrected-Errs value in format: xe-n, x is an integer or decimal number, n = 0..9";
                }
    
                leaf threshold-24hrs {
                  type string {
                    junos:posix-pattern "^[0-9]+(\.[0-9]+)?e-[0-9]$";
                    junos:pattern-message "FEC Corrected-Errs threshold value in format: xe-n, x is an integer or decimal number, n = 0..9";
                  }
                  default "10e-3";
                  description
                    "FEC Corrected-Errs value in format: xe-n, x is an integer or decimal number, n = 0..9";
                }
              }  // container fec-corrected-errors-high-tca
    
              container fec-ucorrected-words-high-tca {
                description
                  "FEC UCorrected Words High Threshold crossing defect trigger";
                uses apply-advanced;
    
                choice enable-tca-choice {
                  leaf enable-tca {
                    type empty;
                    description
                      "Enable the FEC UCorrected Words threshold crossing alert";
                  }
                  leaf no-enable-tca {
                    type empty;
                    description
                      "Don't enable the FEC UCorrected Words threshold crossing alert";
                  }
                }  // choice enable-tca-choice
    
                leaf threshold {
                  type string {
                    junos:posix-pattern "^[0-9]+(\.[0-9]+)?e-[0-9]$";
                    junos:pattern-message "FEC UCorrected-Words threshold value in format: xe-n, x is an integer or decimal number, n = 0..9";
                  }
                  default "10e-3";
                  description
                    "FEC UCorrected-Words value in format: xe-n, x is an integer or decimal number, n = 0..9";
                }
    
                leaf threshold-24hrs {
                  type string {
                    junos:posix-pattern "^[0-9]+(\.[0-9]+)?e-[0-9]$";
                    junos:pattern-message "FEC UCorrected-Words threshold value in format: xe-n, x is an integer or decimal number, n = 0..9";
                  }
                  default "10e-3";
                  description
                    "FEC UCorrected-Words value in format: xe-n, x is an integer or decimal number, n = 0..9";
                }
              }  // container fec-ucorrected-words-high-tca
    
              container laser-frequency-error-high-tca {
                description
                  "Laser frequency error high TCA";
                uses apply-advanced;
    
                choice enable-tca-choice {
                  leaf enable-tca {
                    type empty;
                    description "Enable tca";
                  }
                  leaf no-enable-tca {
                    type empty;
                    description
                      "Don't enable tca";
                  }
                }  // choice enable-tca-choice
    
                leaf threshold {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 15 minute frequency error high TCA in MHz";
                }
    
                leaf threshold-24hrs {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 24 hour frequency error high TCA in MHz";
                }
              }  // container laser-frequency-error-high-tca
    
              container laser-frequency-error-low-tca {
                description
                  "Laser frequency error low TCA";
                uses apply-advanced;
    
                choice enable-tca-choice {
                  leaf enable-tca {
                    type empty;
                    description "Enable tca";
                  }
                  leaf no-enable-tca {
                    type empty;
                    description
                      "Don't enable tca";
                  }
                }  // choice enable-tca-choice
    
                leaf threshold {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 15 minute frequency error low TCA in MHz";
                }
    
                leaf threshold-24hrs {
                  type string {
                    junos:posix-pattern "^[+-]?[0-9]+(\.[0-9]+)?$";
                    junos:pattern-message "numerical value must be specified with optional leading sign and optional decimal point";
                  }
                  description
                    "Threshold for 24 hour frequency error low TCA in MHz";
                }
              }  // container laser-frequency-error-low-tca
            }  // container tca
    
            list warning {
              key "name";
              ordered-by user;
              description "Set optic warnings";
              leaf name {
                type enumeration {
                  enum "low-light-warning" {
                    value 0;
                    description
                      "Enable low light warning";
                  }
                }
              }
    
              uses apply-advanced;
    
              choice actiontype {
                leaf syslog {
                  type empty;
                  description
                    "Set action as syslog";
                }
                leaf link-down {
                  type empty;
                  description
                    "Set action as link-down";
                }
              }  // choice actiontype
            }  // list warning
    
            choice lane-info {
              case case_1 {
              }  // case case_1
    
              case case_2 {
              }  // case case_2
            }  // choice lane-info
          }  // container optics-options
    
          container tdm-options {
            description
              "Time division multiplexing (TDM) interface-specific options";
            uses tdm_options_type;
          }  // container tdm-options
    
          container och-options {
            description
              "Optical channel configuration options";
            uses och-attributes;
          }  // container och-options
    
          container otu-options {
            description
              "Optical transmission unit configuration options";
            uses otu-attributes;
          }  // container otu-options
    
          container odu-options {
            description
              "Optical data unit configuration options";
            uses odu-attributes;
          }  // container odu-options
    
          container ett-options {
            description
              "Transport ethernet client configuration options";
            uses ett-attributes;
          }  // container ett-options
    
          container fastether-options {
            description
              "Fast Ethernet interface-specific options";
            uses apply-advanced;
    
            choice loopback-choice {
              leaf loopback {
                type empty;
                description "Enable loopback";
              }
              leaf no-loopback {
                type empty;
                description
                  "Don't enable loopback";
              }
            }  // choice loopback-choice
    
            choice flow-control-choice {
              leaf flow-control {
                type empty;
                description
                  "Enable flow control";
              }
              leaf no-flow-control {
                type empty;
                description
                  "Don't enable flow control";
              }
            }  // choice flow-control-choice
    
            choice source-filtering-choice {
              leaf source-filtering {
                type empty;
                description
                  "Enable source address filtering";
              }
              leaf no-source-filtering {
                type empty;
                description
                  "Don't enable source address filtering";
              }
            }  // choice source-filtering-choice
    
            leaf ingress-rate-limit {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 100";
                }
              }
              units "megabits per second";
              description "Ingress rate at port";
            }
    
            list source-address-filter {
              key "name";
              ordered-by user;
              description
                "Source address filters";
              leaf name {
                type jt:mac-addr;
                description "Remote MAC address";
              }
            }  // list source-address-filter
    
            container ieee-802.3ad {
              junos:must "(!("system autoinstallation"))";
              junos:must-message "incompatible with 'system autoinstallation'";
              description "IEEE 802.3ad";
              uses apply-advanced;
    
              container lacp {
                description
                  "Link Aggregation Control Protocol configuration";
                uses apply-advanced;
    
                leaf port-priority {
                  type union {
                    type uint16;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description
                    "Priority of the port (0 ... 65535)";
                }
              }  // container lacp
    
              leaf bundle {
                junos:must "(!(".. .. .. vlan-offload"))";
                junos:must-message "ae child device vlan-offload is not allowed";
                junos:must "(!(".. .. .. flow-control"))";
                junos:must-message "Setting flow-control on ae child device is not allowed";
                junos:must "(!(".. .. .. mtu"))";
                junos:must-message "Setting mtu on ae child device is not allowed";
                junos:must "(!(".. .. .. vlan-vci-tagging"))";
                junos:must-message "ae child device vlan-vci-tagging is not allowed";
                junos:must "(!(".. .. .. stacked-vlan-tagging"))";
                junos:must-message "ae child device stacked-vlan-tagging is not allowed";
                junos:must "(!(".. .. .. flexible-vlan-tagging"))";
                junos:must-message "ae child device flexible-vlan-tagging is not allowed";
                junos:must "(!(".. .. .. vlan-tagging"))";
                junos:must-message "ae child device vlan-tagging is not allowed";
                type union {
                  type jt:interface-device;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Join an aggregated Ethernet interface";
              }
    
              choice type {
                leaf primary {
                  type empty;
                  description
                    "Primary interface for link-protection mode";
                }
                leaf backup {
                  type empty;
                  description
                    "Backup interface for link-protection mode";
                }
              }  // choice type
            }  // container ieee-802.3ad
    
            container mpls {
              description "MPLS options";
              uses mpls_ifd_options;
            }  // container mpls
    
            leaf ignore-l3-incompletes {
              type empty;
              description
                "Ignore L3 incomplete errors";
            }
          }  // container fastether-options
    
          container aggregated-ether-options {
            description
              "Aggregated Ethernet interface-specific options";
            uses apply-advanced;
    
            choice loopback-choice {
              leaf loopback {
                type empty;
                description "Enable loopback";
              }
              leaf no-loopback {
                type empty;
                description
                  "Don't enable loopback";
              }
            }  // choice loopback-choice
    
            choice flow-control-choice {
              leaf flow-control {
                type empty;
                description
                  "Enable flow control";
              }
              leaf no-flow-control {
                type empty;
                description
                  "Don't enable flow control";
              }
            }  // choice flow-control-choice
    
            choice source-filtering-choice {
              leaf source-filtering {
                type empty;
                description
                  "Enable source address filtering";
              }
              leaf no-source-filtering {
                type empty;
                description
                  "Don't enable source address filtering";
              }
            }  // choice source-filtering-choice
    
            leaf autostate-exclude {
              type empty;
              description
                "Interface will not contribute to IRB state";
            }
    
            container link-protection {
              presence "enable link-protection";
              description
                "Enable link protection mode";
              uses apply-advanced;
    
              leaf revertive {
                junos:must "(!("interfaces ${interface} aggregated-ether-options link-protection non-revertive"))";
                junos:must-message "link-protection revertive and non-revertive are mutually exclusive";
                junos:must "(!("chassis aggregated-devices ethernet lacp"))";
                junos:must-message "link-protection revertive and LACP are mutually exclusive";
                junos:must "(!("interfaces ${interface} aggregated-ether-options lacp"))";
                junos:must-message "link-protection revertive and LACP are mutually exclusive";
                type empty;
                description
                  "Revert back from active backup link to primary, if primary is UP";
              }
    
              leaf non-revertive {
                junos:must "(!("interfaces ${interface} aggregated-ether-options link-protection revertive"))";
                junos:must-message "link-protection revertive and non-revertive are mutually exclusive";
                junos:must "(!("chassis aggregated-devices ethernet lacp"))";
                junos:must-message "link-protection revertive and LACP are mutually exclusive";
                junos:must "(!("interfaces ${interface} aggregated-ether-options lacp"))";
                junos:must-message "link-protection revertive and LACP are mutually exclusive";
                type empty;
                description
                  "Do not revert back (default mode) from active backup link to primary, if primary is UP";
              }
    
              leaf backup-state {
                type enumeration {
                  enum "accept-data" {
                    value 0;
                    description
                      "Accept data on receive channel of backup link";
                  }
                  enum "discard-data" {
                    value 1;
                    description
                      "Discard data on receive channel of backup link";
                  }
                  enum "down" {
                    junos:must "(!("chassis aggregated-devices ethernet lacp"))";
                    junos:must-message "backup-state down and LACP are mutually exclusive";
                    junos:must "(!("interfaces ${interface} aggregated-ether-options lacp"))";
                    junos:must-message "backup-state down and LACP are mutually exclusive";
                    value 2;
                    description
                      "Backup link is marked down";
                  }
                }
                default "accept-data";
                description
                  "Link protection backup link state";
              }
    
              container rtg-config {
                presence "enable rtg-config";
                description "RTG enable on AE";
                uses apply-advanced;
    
                leaf preempt-cutover-timer {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 255";
                    }
                  }
                  default "1";
                  description
                    "RTG preempt-cutover-timer in seconds";
                }
              }  // container rtg-config
            }  // container link-protection
    
            choice fcoe-lag-choice {
              leaf fcoe-lag {
                type empty;
                description
                  "Enable FIP/FCoE LAG";
              }
              leaf no-fcoe-lag {
                type empty;
                description
                  "Don't enable FIP/FCoE LAG";
              }
            }  // choice fcoe-lag-choice
    
            list source-address-filter {
              key "name";
              ordered-by user;
              description
                "Source address filters";
              leaf name {
                type jt:mac-addr;
                description "Remote MAC address";
              }
            }  // list source-address-filter
    
            container load-balance {
              uses aggregate-load-balance;
            }  // container load-balance
    
            container bfd-liveness-detection {
              junos:must "(!(".. lacp fast-failover"))";
              junos:must-message "BFD not supported with lacp with fast-failover mode";
              junos:must "(!(".. lacp link-protection"))";
              junos:must-message "BFD not supported with lacp link protection";
              junos:must "(!(".. link-protection"))";
              junos:must-message "BFD not supported with link protection";
              description
                "Bidirectional Forwarding Detection (BFD) options";
              uses apply-advanced;
    
              leaf version {
                type enumeration {
                  enum "0" {
                    value 0;
                    description
                      "BFD version 0 (deprecated)";
                  }
                  enum "1" {
                    value 1;
                    description "BFD version 1";
                  }
                  enum "automatic" {
                    value 2;
                    description
                      "Choose BFD version automatically";
                  }
                }
                default "automatic";
                description
                  "BFD protocol version number";
              }
    
              leaf minimum-interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "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 authentication {
                description
                  "Authentication options";
                uses apply-advanced;
    
                leaf key-chain {
                  junos:must "(".. algorithm")";
                  junos:must-message "May not be configured without algorithm";
                  junos:must "("security authentication-key-chains key-chain $$")";
                  junos:must-message "Referenced key-chain must be defined";
                  type string;
                  description "Key chain name";
                }
    
                leaf algorithm {
                  junos:must "(".. key-chain")";
                  junos:must-message "May not be configured without key-chain";
                  type enumeration {
                    enum "simple-password" {
                      value 0;
                      description
                        "Simple password";
                    }
                    enum "keyed-md5" {
                      value 1;
                      description
                        "Keyed message Digest 5";
                    }
                    enum "meticulous-keyed-md5" {
                      value 2;
                      description
                        "Meticulous keyed message Digest 5";
                    }
                    enum "keyed-sha-1" {
                      value 3;
                      description
                        "Keyed secure hash algorithm (SHA1) ";
                    }
                    enum
                      "meticulous-keyed-sha-1" {
                      value 4;
                      description
                        "Meticulous keyed secure hash algorithm (SHA1) ";
                    }
                  }
                  description "Algorithm name";
                }
    
                leaf loose-check {
                  type empty;
                  description
                    "Verify authentication only if authentication is negotiated";
                }
              }  // container authentication
    
              leaf neighbor {
                type jt:ipaddr;
                description
                  "BFD neighbor address";
              }
    
              leaf local-address {
                type jt:ipaddr;
                description "BFD local address";
              }
    
              leaf holddown-interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 255000";
                  }
                }
                units "milliseconds";
                description
                  "Time to hold the session-UP notification to the client";
              }
            }  // container bfd-liveness-detection
    
            leaf minimum-links {
              junos:must "(!("interfaces ${interface} aggregated-ether-options link-speed mixed"))";
              junos:must-message "Minimum-links option is not compatible with link-speed mixed";
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16;
              }
              description
                "Minimum number of aggregated links";
            }
    
            container minimum-bandwidth {
              junos:must "(!("interfaces ${interface}  aggregated-ether-options optimize-aggregate-frr"))";
              junos:must-message "Minimum-bandwidth and optimize-aggregate-frr are mutually exclusive";
              junos:must "(!("interfaces ${interface}  aggregated-ether-options minimum-links"))";
              junos:must-message "Minimum-bandwidth and minimum-links are mutually exclusive";
              presence
                "enable minimum-bandwidth";
              description
                "Minimum bandwidth configured for aggregated bundle";
              uses apply-advanced;
    
              leaf bw-value {
                type union {
                  type uint64;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                default "1";
                description "Bandwidth value";
              }
    
              leaf bw-unit {
                type enumeration {
                  enum "bps" {
                    value 0;
                    description
                      "Links are in bits per sec";
                  }
                  enum "kbps" {
                    value 1;
                    description
                      "Links are in kilo bits per sec";
                  }
                  enum "mbps" {
                    value 2;
                    description
                      "Links are in mega bits per sec";
                  }
                  enum "gbps" {
                    value 3;
                    description
                      "Links are in giga bits per sec ";
                  }
                }
                description "Bandwidth unit";
              }
            }  // container minimum-bandwidth
    
            choice redundancy_choice {
              case case_1 {
              }  // case case_1
    
              case case_2 {
              }  // case case_2
            }  // choice redundancy_choice
    
            container rebalance-periodic {
              uses apply-advanced;
            }  // container rebalance-periodic
    
            leaf link-speed {
              type enumeration {
                enum "10m" {
                  value 0;
                  description "Links are 10M";
                }
                enum "100m" {
                  value 1;
                  description "Links are 100M";
                }
                enum "1g" {
                  value 2;
                  description "Links are 1G";
                }
                enum "2.5g" {
                  value 3;
                  description "Links are 2.5G";
                }
                enum "5g" {
                  value 4;
                  description "Links are 5G";
                }
                enum "8g" {
                  value 5;
                  description "Links are 8G";
                }
                enum "10g" {
                  value 6;
                  description "Links are 10G";
                }
                enum "25g" {
                  value 7;
                  description "Links are 25G";
                }
                enum "40g" {
                  value 8;
                  description "Links are 40G";
                }
                enum "50g" {
                  value 9;
                  description "Links are 50G";
                }
                enum "80g" {
                  value 10;
                  description "Links are 80G";
                }
                enum "100g" {
                  value 11;
                  description "Links are 100G";
                }
                enum "400g" {
                  value 12;
                  description "Links are 400G";
                }
                enum "oc192" {
                  value 13;
                  description "Links are OC-192";
                }
                enum "mixed" {
                  junos:must "(!("interfaces ${interface} per-unit-scheduler"))";
                  junos:must-message "per-unit-scheduler is incompatible with link-speed mixed";
                  junos:must "(!(".. resilient-hash"))";
                  junos:must-message "Mixed-rate AE is not supported along with Resilient Hashing  mode";
                  junos:must "(!(".. load-balance adaptive"))";
                  junos:must-message "Mixed-rate AE is not supported along with Adaptive Load balance mode";
                  value 14;
                  description
                    "Links are various speeds";
                }
              }
              description
                "Link speed of individual interface that joins the AE";
            }
    
            container local-bias {
              presence "enable local-bias";
              description
                "Turn on local bias functionality";
              uses apply-advanced;
    
              leaf disable {
                type empty;
                description "Disable local-bias";
              }
            }  // container local-bias
    
            container dlb {
              junos:must "(!(".. resilient-hash"))";
              junos:must-message "Dynamic Load Balancing AE is not supported along with resilient hash";
              description "Enable DLB on LAG";
              uses apply-advanced;
    
              choice mode {
                leaf per-packet {
                  type empty;
                  description
                    "Per-packet link assignment";
                }
                leaf assigned-flow {
                  type empty;
                  description
                    "Fixed link assignment";
                }
                container flowlet {
                  presence "enable flowlet";
                  description
                    "Inactivity-based link assignment";
                  uses apply-advanced;
    
                  leaf inactivity-interval {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "16 .. 100000";
                      }
                    }
                    default "256";
                    description
                      " Minimum inactivity interval in micro-seconds for link re-assignment";
                  }
                }  // container flowlet
              }  // choice mode
            }  // container dlb
    
            container lacp {
              description
                "Link Aggregation Control Protocol configuration";
              uses apply-advanced;
    
              choice mode {
                leaf active {
                  type empty;
                  description
                    "Initiate transmission of LACP packets";
                }
                leaf passive {
                  type empty;
                  description
                    "Respond to LACP packets";
                }
              }  // choice mode
    
              leaf periodic {
                type enumeration {
                  enum "fast" {
                    value 0;
                    description
                      "Receive packets every second";
                  }
                  enum "slow" {
                    value 1;
                    description
                      "Receive packets every 30 seconds";
                  }
                }
                description
                  "Timer interval for periodic transmission of LACP packets";
              }
    
              leaf multiplier {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "3 .. 30";
                  }
                }
                description
                  "LACP timeout detection multiplier";
              }
    
              container link-protection {
                junos:must "(!(".. .. link-protection"))";
                junos:must-message "LACP and non LACP based link-protection not allowed together";
                presence
                  "enable link-protection";
                uses apply-advanced;
    
                leaf disable {
                  type empty;
                  description
                    "To turn off LACP link-protection";
                }
    
                choice mode {
                  leaf revertive {
                    type empty;
                    description
                      "Switch links when better priority link comes up";
                  }
                  leaf non-revertive {
                    type empty;
                    description
                      "Do not switch links when better priority link comes up";
                  }
                }  // choice mode
    
                container rtg-config {
                  presence "enable rtg-config";
                  description
                    "RTG Feature enable on AE";
                  uses apply-advanced;
    
                  leaf preempt-cutover-timer {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 255";
                      }
                    }
                    default "1";
                    description
                      "RTG preempt-cutover-timer in seconds";
                  }
                }  // container rtg-config
              }  // container link-protection
    
              leaf sync-reset {
                type enumeration {
                  enum "disable" {
                    value 0;
                    description
                      "To disable minimum-link failure handling at LACP level";
                  }
                  enum "enable" {
                    value 1;
                    description
                      "To enable minimum-link failure handling at LACP level";
                  }
                }
                description
                  "On minimum-link failure notify out of sync to peer";
              }
    
              leaf system-priority {
                type string;
                description
                  "Priority of the system (0 ... 65535)";
              }
    
              leaf system-id {
                type jt:mac-addr;
                description
                  "Node's System ID, encoded as a MAC address";
              }
    
              leaf admin-key {
                type union {
                  type uint16;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Node's administrative key";
              }
            }  // container lacp
    
            list link-protection-sub-group {
              key "name";
              ordered-by user;
              description
                "Link Protection subgroup configuration";
              leaf name {
                type string {
                  length "2 .. 64";
                }
                description
                  "Name of the subgroup";
              }
    
              uses apply-advanced;
    
              choice type {
                leaf primary {
                  type empty;
                  description
                    "Primary subgroup for N:N link-protection mode";
                }
                leaf backup {
                  type empty;
                  description
                    "Backup subgroup for N:N link-protection mode";
                }
              }  // choice type
            }  // list link-protection-sub-group
    
            container ethernet-switch-profile {
              description
                "Ethernet virtual LAN/media access control-level options";
              uses apply-advanced;
    
              leaf-list tag-protocol-id {
                type string;
                ordered-by user;
                description
                  "IEEE 802.1q Tag Protocol Identifier values for VLAN-tagged frames";
              }
    
              leaf mac-learn-enable {
                type empty;
                description
                  "Learn MAC addresses dynamically";
              }
            }  // container ethernet-switch-profile
    
            container mc-ae {
              junos:must "(!((".. link-protection" || ".. lacp link-protection")))";
              junos:must-message "MC-AE and link-protection on AE can not co-exist";
              junos:must "(".. lacp admin-key")";
              junos:must-message "LACP admin-key must be configured for MC-AE";
              junos:must "(".. lacp system-id")";
              junos:must-message "LACP system-id must be configured for MC-AE";
              junos:must "(!(".. .. encapsulation vlan-ccc"))";
              junos:must-message "Encapsulation vlan-ccc is not supported with MC-AE";
              description
                "Multi-chassis aggregation (MC-AE) network device configuration";
              uses apply-advanced;
    
              leaf mc-ae-id {
                junos:must "(unique "interfaces <*>  aggregated-ether-options mc-ae mc-ae-id $$")";
                junos:must-message "MC-AE id alredy being used";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 65535";
                  }
                }
                description "MC-AE group id";
              }
    
              leaf redundancy-group {
                junos:must "((any "protocols iccp peer <*> redundancy-group-id-list $$" || any "logical-systems <*> protocols iccp peer <*> redundancy-group-id-list $$"))";
                junos:must-message "The redundancy group must match with one defined at <protocols iccp peer redundancy-group-id-list>";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 4294967294";
                  }
                }
                description
                  "Redundancy group id";
              }
    
              leaf chassis-id {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "0 .. 1";
                  }
                }
                description
                  "Chassis id of MC-AE network device";
              }
    
              leaf mode {
                type enumeration {
                  enum "active-standby" {
                    value 0;
                    description
                      "MC-AE in active-standby mode";
                  }
                  enum "active-active" {
                    junos:must "(!(any "interfaces ${interface} unit <*> family inet6"))";
                    junos:must-message "family inet6 is not supported with MC-AE active-active";
                    junos:must "(!(any "interfaces ${interface} unit <*> family inet"))";
                    junos:must-message "family inet is not supported with MC-AE active-active";
                    value 1;
                    description
                      "MC-AE in active-active mode";
                  }
                }
                description "Mode of the MC-AE";
              }
    
              leaf status-control {
                type enumeration {
                  enum "active" {
                    value 0;
                    description
                      "Chassis is Active";
                  }
                  enum "standby" {
                    value 1;
                    description
                      "Chassis is Standby";
                  }
                }
                description
                  "Status of the MC-AE chassis";
              }
    
              leaf switchover-mode {
                type enumeration {
                  enum "revertive" {
                    junos:must "(".. .. mc-ae mode active-standby")";
                    junos:must-message "Only Supported in Active-Standby mode.";
                    junos:must "(!(".. .. mc-ae status-control standby"))";
                    junos:must-message "Supported only when status control is Active";
                    value 0;
                    description
                      "Switch mcae node when preferred link comes up";
                  }
                  enum "non-revertive" {
                    junos:must "(".. .. mc-ae mode active-standby")";
                    junos:must-message "Only Supported in Active-Standby mode.";
                    junos:must "(".. .. mc-ae status-control active")";
                    junos:must-message "Supported only when status control is Active";
                    value 1;
                    description
                      "Do not switch mcae node when preferred link comes up";
                  }
                }
                description "Switchover mode";
              }
    
              leaf revert-time {
                junos:must "(".. .. mc-ae mode active-standby")";
                junos:must-message "Only Supported in Active-Standby mode.";
                junos:must "(".. .. mc-ae status-control active")";
                junos:must-message "Supported only when status control is Active";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 10";
                  }
                }
                units "minute";
                default "3";
                description
                  "Wait interval before performing switchover";
              }
    
              container events {
                presence "enable events";
                description
                  "MCAE related events";
                uses apply-advanced;
    
                container iccp-peer-down {
                  presence
                    "enable iccp-peer-down";
                  description
                    "Define behavior in the event of ICCP peer down";
                  uses apply-advanced;
    
                  leaf force-icl-down {
                    type empty;
                    description
                      "Bring down ICL logical interface";
                  }
    
                  leaf prefer-status-control-active {
                    type empty;
                    description
                      "Keep this node up (recommended only on status-control active)";
                  }
                }  // container iccp-peer-down
              }  // container events
            }  // container mc-ae
          }  // container aggregated-ether-options
    
          container es-options {
            description
              "ES PIC interface-specific options";
            uses apply-advanced;
    
            leaf backup-interface {
              type union {
                type jt:interface-device;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description
                "Name of backup interface";
            }
          }  // container es-options
    
          container vdsl-options {
            description
              "VDSL interface-specific options";
            uses apply-advanced;
    
            leaf vdsl-profile {
              type enumeration {
                enum "auto" {
                  value 0;
                  description "Auto";
                }
                enum "8a" {
                  value 1;
                  description "Profile 8a";
                }
                enum "8b" {
                  value 2;
                  description "Profile 8b";
                }
                enum "8c" {
                  value 3;
                  description "Profile 8c";
                }
                enum "8d" {
                  value 4;
                  description "Profile 8d";
                }
                enum "12a" {
                  value 5;
                  description "Profile 12a";
                }
                enum "12b" {
                  value 6;
                  description "Profile 12b";
                }
                enum "17a" {
                  value 7;
                  description "Profile 17a";
                }
              }
              description "VDSL profile";
            }
    
            leaf sra {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable SRA";
                }
                enum "disable" {
                  value 1;
                  description "Disable SRA";
                }
              }
              default "disable";
              description "DSL SRA";
            }
    
            leaf v43 {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable V43";
                }
                enum "disable" {
                  value 1;
                  description "Disable V43";
                }
              }
              default "enable";
              description "DSL V43 tones";
            }
    
            leaf sos {
              type empty;
              description "Enable SOS";
            }
          }  // container vdsl-options
    
          container dsl-sfp-options {
            description "DSL SFP options";
            uses apply-advanced;
    
            container adsl-options {
              description "ADSL options";
              uses apply-advanced;
    
              leaf vpi {
                junos:must "(".. vci")";
                junos:must-message "vci must be specified";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 255";
                  }
                }
                description
                  "Virtual path identifier";
              }
    
              leaf vci {
                junos:must "(".. vpi")";
                junos:must-message "vpi must be specified";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "32 .. 65535";
                  }
                }
                description
                  "Virtual circuit identifier";
              }
    
              leaf encap {
                junos:must "((".. vci" && ".. vpi"))";
                junos:must-message "vci and vpi must be specified";
                type enumeration {
                  enum "bypass" {
                    value 0;
                    description "Bypass";
                  }
                  enum
                    "llcsnap-bridged-802dot1q" {
                    value 1;
                    description
                      "LLCSNAP bridged 802.1q";
                  }
                  enum "llcsnap-routed-ip" {
                    value 2;
                    description
                      "LLCSNAP routed ip";
                  }
                  enum "vc-mux-bridged" {
                    value 3;
                    description "VC MUX bridged";
                  }
                  enum "vc-mux-routed-ip" {
                    value 4;
                    description
                      "VC MUX routed ip";
                  }
                  enum "generic" {
                    value 5;
                    description "Generic";
                  }
                }
                description "Encapsulation";
              }
    
              leaf annex {
                junos:must "((".. vci" && ".. vpi"))";
                junos:must-message "vci and vpi must be specified";
                type enumeration {
                  enum "auto" {
                    value 0;
                    description
                      "Annex type auto";
                  }
                  enum "annexj-off" {
                    value 1;
                    description
                      "Annex type annexj turn off";
                  }
                }
                description "Annex type";
              }
            }  // container adsl-options
    
            container vdsl-options {
              description "VDSL options";
              uses apply-advanced;
    
              leaf profile {
                type enumeration {
                  enum "auto" {
                    value 0;
                    description "Automatic";
                  }
                  enum "8a" {
                    value 1;
                    description "Profile 8a";
                  }
                  enum "8b" {
                    value 2;
                    description "Profile 8b";
                  }
                  enum "8c" {
                    value 3;
                    description "Profile 8c";
                  }
                  enum "8d" {
                    value 4;
                    description "Profile 8d";
                  }
                  enum "12a" {
                    value 5;
                    description "Profile 12a";
                  }
                  enum "12b" {
                    value 6;
                    description "Profile 12b";
                  }
                  enum "17a" {
                    value 7;
                    description "Profile 17a";
                  }
                  enum "30a" {
                    value 8;
                    description "Profile 30a";
                  }
                }
                description "VDSL profile";
              }
    
              leaf carrier {
                type enumeration {
                  enum "auto" {
                    value 0;
                    description "Automatic";
                  }
                  enum "a43" {
                    value 1;
                    description "Carrier A43";
                  }
                  enum "b43" {
                    value 2;
                    description "Carrier B43";
                  }
                }
                description "Carrier setting";
              }
            }  // container vdsl-options
    
            container gfast-options {
              description "G.fast options";
              uses apply-advanced;
    
              leaf carrier {
                type enumeration {
                  enum "a43" {
                    value 0;
                    description "Carrier A43";
                  }
                  enum "a43c" {
                    value 1;
                    description "Carrier A43C";
                  }
                  enum "b43" {
                    value 2;
                    description "Carrier B43";
                  }
                  enum "b43c" {
                    value 3;
                    description "Carrier B43C";
                  }
                }
                description "Carrier setting";
              }
            }  // container gfast-options
          }  // container dsl-sfp-options
    
          container shdsl-options {
            junos:must "(!("interfaces ${interface} vdsl-options"))";
            junos:must-message "VDSL options cannot co-exist with SHDSL options on the same interface";
            junos:must "(!("interfaces ${interface} dsl-options"))";
            junos:must-message "DSL options cannot co-exist with SHDSL options on the same interface";
            description
              "SHDSL interface-specific options";
            uses apply-advanced;
    
            leaf annex {
              type enumeration {
                enum "annex-a" {
                  value 0;
                  description "Annex-a PIC";
                }
                enum "annex-b" {
                  value 1;
                  description "Annex-b PIC";
                }
                enum "annex-f" {
                  value 2;
                  description "Annex-f PIC";
                }
                enum "annex-g" {
                  value 3;
                  description "Annex-g PIC";
                }
                enum "annex-auto" {
                  value 4;
                  description "Annex-auto PIC";
                }
              }
              default "annex-b";
              description "Type of SHDSL annex";
            }
    
            leaf line-rate {
              type string;
              description "SHDSL line rate";
            }
    
            leaf loopback {
              type enumeration {
                enum "local" {
                  value 0;
                  description "Local loopback";
                }
                enum "remote" {
                  value 1;
                  description "Remote loopback";
                }
              }
              description "Loopback mode";
            }
    
            container snr-margin {
              presence "enable snr-margin";
              description
                "Signal to noise ratio margin";
              uses apply-advanced;
    
              leaf current {
                type string;
                units "dB";
                description
                  "Current signal to noise ratio margin";
              }
    
              leaf snext {
                type string;
                units "dB";
                description
                  "SNEXT signal to noise ratio margin";
              }
            }  // container snr-margin
          }  // container shdsl-options
    
          container container-options {
            description
              "Container interface specific options";
            uses apply-advanced;
    
            container container-type {
              presence "enable container-type";
              description
                "Protocol type of the container interface";
              uses apply-advanced;
    
              choice container-type-choice {
                container aps {
                  junos:must "((".. .. member-interface-type sonet" || (".. .. member-interface-type atm" || (".. .. member-interface-type channelized-sonet" || ".. .. member-interface-type channelized-sdh"))))";
                  junos:must-message "APS can be enabled on Sonet, Channelized-Sonet, Channelized-SDH  or ATM interfaces only";
                  presence "enable aps";
                  description
                    "APS options on the container";
                  uses aps_type;
                }  // container aps
              }  // choice container-type-choice
            }  // container container-type
    
            container member-interface-type {
              description
                "Link type of members of container";
              uses apply-advanced;
    
              choice member_interface_type_choice {
                container sonet {
                  uses apply-advanced;
    
                  leaf member-interface-speed {
                    type enumeration {
                      enum "oc3" {
                        value 0;
                        description
                          "Links are OC-3";
                      }
                      enum "oc12" {
                        value 1;
                        description
                          "Links are OC-12";
                      }
                      enum "oc48" {
                        value 2;
                        description
                          "Links are OC-48";
                      }
                      enum "oc192" {
                        value 3;
                        description
                          "Links are OC-192";
                      }
                      enum "oc768" {
                        value 4;
                        description
                          "Links are OC-768";
                      }
                      enum "mixed" {
                        value 5;
                        description
                          "Links are of different speeds";
                      }
                    }
                    description
                      "Link speed of members of container";
                  }
                }  // container sonet
                container atm {
                  uses apply-advanced;
    
                  leaf member-interface-speed {
                    type enumeration {
                      enum "oc3" {
                        value 0;
                        description
                          "Links are OC-3";
                      }
                      enum "oc12" {
                        value 1;
                        description
                          "Links are OC-12";
                      }
                      enum "oc48" {
                        value 2;
                        description
                          "Links are OC-48";
                      }
                    }
                    description
                      "Link speed of members of container";
                  }
                }  // container atm
                container channelized-sonet {
                  uses apply-advanced;
    
                  leaf member-interface-speed {
                    type enumeration {
                      enum "coc3" {
                        value 0;
                        description
                          "Links are COC-3";
                      }
                      enum "coc12" {
                        value 1;
                        description
                          "Links are COC-12";
                      }
                      enum "coc48" {
                        value 2;
                        description
                          "Links are COC-48";
                      }
                      enum "coc192" {
                        value 3;
                        description
                          "Links are COC-192";
                      }
                      enum "coc768" {
                        value 4;
                        description
                          "Links are COC-768";
                      }
                    }
                    description
                      "Link speed of members of container";
                  }
                }  // container channelized-sonet
                container channelized-sdh {
                  uses apply-advanced;
    
                  leaf member-interface-speed {
                    type enumeration {
                      enum "cstm1" {
                        value 0;
                        description
                          "Links are cstm-1";
                      }
                      enum "cstm4" {
                        value 1;
                        description
                          "Links are cstm-4";
                      }
                      enum "cstm16" {
                        value 2;
                        description
                          "Links are cstm-16";
                      }
                      enum "coc64" {
                        value 3;
                        description
                          "Links are cstm-64";
                      }
                      enum "cstm256" {
                        value 4;
                        description
                          "Links are cstm256";
                      }
                    }
                    description
                      "Link speed of members of container";
                  }
                }  // container channelized-sdh
              }  // choice member_interface_type_choice
            }  // container member-interface-type
    
            container redundancy {
              description
                "Container interface redundancy options";
              uses apply-advanced;
    
              container hold-time {
                description
                  "Hold time for link up and link down";
                leaf up {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 65534";
                    }
                  }
                  units "milliseconds";
                  description
                    "Link up hold time";
                }
    
                leaf down {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 65534";
                    }
                  }
                  units "milliseconds";
                  description
                    "Link down hold time";
                }
              }  // container hold-time
            }  // container redundancy
    
            leaf-list container-list {
              type union {
                type jt:interface-device;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              ordered-by user;
              description
                "List of container interfaces this member link is associated to";
            }
    
            choice redundancy-type {
              choice aps-redundancy {
                leaf primary {
                  type empty;
                  description
                    "This member link is primary interface of the container";
                }
                leaf standby {
                  type empty;
                  description
                    "This member link is standby interface of the container";
                }
              }  // choice aps-redundancy
            }  // choice redundancy-type
    
            leaf fast-aps {
              type empty;
              description "Fast APS switch";
            }
    
            leaf allow-configuration-override {
              type empty;
              description
                "Allow physical configuration of member link to override container configuration";
            }
          }  // container container-options
    
          list unit {
            key "name";
            description "Logical interface";
            leaf name {
              type string;
            }
    
            uses apply-advanced;
    
            leaf alias {
              junos:must "(!("interfaces interface-range $$"))";
              junos:must-message "Interface alias cannot be an existing interface range name";
              type string;
              description "Interface alias";
            }
    
            container peer-psd {
              presence "enable peer-psd";
              description "Peer psd";
              leaf psd-name {
                junos:must "(".. .. peer-interface")";
                junos:must-message "peer-interface must be configured on this interface";
                type string;
                description "Peer psd name";
              }
            }  // container peer-psd
    
            container peer-interface {
              presence "enable peer-interface";
              description "Peer interface";
              uses apply-advanced;
    
              leaf interface-name {
                junos:must "((".. .. peer-psd" || "interfaces $$-IFL peer-interface"))";
                junos:must-message "Peer interface or peer psd must be configured";
                type union {
                  type jt:interface-unit;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Peer interface name";
              }
            }  // container peer-interface
    
            container interface-shared-with {
              junos:must "("chassis system-domains")";
              junos:must-message "Chassis system-domains must be configured";
              presence
                "enable interface-shared-with";
              description
                "Specify which PSD owns this logical interface";
              uses apply-advanced;
    
              leaf psd-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)";
              }
            }  // container interface-shared-with
    
            choice enable-disable {
              leaf disable {
                type empty;
                description
                  "Disable this logical interface";
              }
            }  // choice enable-disable
    
            leaf passive-monitor-mode {
              type empty;
              description
                "Use interface to tap packets from another router";
            }
    
            leaf clear-dont-fragment-bit {
              type empty;
              description
                "Clear DF bit in packet (AS PIC and J-series only as well as MIF)";
            }
    
            leaf description {
              type string;
              description
                "Text description of interface";
            }
    
            leaf encapsulation {
              type enumeration {
                enum "atm-nlpid" {
                  value 0;
                  description
                    "ATM NLPID encapsulation";
                }
                enum "atm-cisco-nlpid" {
                  value 1;
                  description
                    "Cisco-compatible ATM NLPID encapsulation";
                }
                enum "atm-snap" {
                  value 2;
                  description
                    "ATM LLC/SNAP encapsulation";
                }
                enum "atm-vc-mux" {
                  value 3;
                  description
                    "ATM VC multiplexing";
                }
                enum "atm-ccc-vc-mux" {
                  value 4;
                  description "ATM VC for CCC";
                }
                enum "atm-tcc-vc-mux" {
                  value 5;
                  description
                    "ATM VC for translational cross-connect";
                }
                enum "atm-tcc-snap" {
                  value 6;
                  description
                    "ATM LLC/SNAP for translational cross-connect";
                }
                enum "atm-ccc-cell-relay" {
                  value 7;
                  description
                    "ATM cell relay for CCC";
                }
                enum "vlan-vci-ccc" {
                  value 8;
                  description
                    "CCC for VLAN Q-in-Q and ATM VPI/VCI interworking";
                }
                enum "ether-over-atm-llc" {
                  value 9;
                  description
                    "Ethernet over ATM (LLC/SNAP) encapsulation";
                }
                enum "ether-vpls-over-atm-llc" {
                  value 10;
                  description
                    "Ethernet VPLS over ATM (bridging) encapsulation";
                }
                enum
                  "ppp-over-ether-over-atm-llc" {
                  value 11;
                  description
                    "PPPoE over ATM (LLC/SNAP) encapsulation";
                }
                enum "ppp-over-ether" {
                  junos:must "(!("forwarding-options hyper-mode"))";
                  junos:must-message "To configure encapsulation ppp-over-ether, 'forwarding-options hyper-mode' should not be configured";
                  junos:must "(!(".. family"))";
                  junos:must-message "Can't configure protocol family with encapsulation ppp-over-ether";
                  value 12;
                  description
                    "PPPoE encapsulation";
                }
                enum "atm-ppp-vc-mux" {
                  value 13;
                  description
                    "ATM PPP over raw AAL5";
                }
                enum "atm-ppp-llc" {
                  value 14;
                  description
                    "ATM PPP over AAL5/LLC";
                }
                enum "atm-mlppp-llc" {
                  value 15;
                  description
                    "ATM MLPPP over AAL5/LLC";
                }
                enum "frame-relay-ppp" {
                  junos:must "(!(".. family inet6"))";
                  junos:must-message "family inet6 is not supported on encapsulation frame-relay-ppp";
                  junos:must "(!(".. family inet"))";
                  junos:must-message "family inet is not supported on encapsulation frame-relay-ppp";
                  junos:must "(".. .. encapsulation frame-relay")";
                  junos:must-message "Physical link-layer encapsulation must be frame-relay";
                  value 16;
                  description
                    "PPP over Frame Relay";
                }
                enum "frame-relay-ccc" {
                  value 17;
                  description
                    "Frame Relay DLCI for CCC";
                }
                enum "frame-relay" {
                  value 18;
                  description "Frame Relay DLCI";
                }
                enum "frame-relay-tcc" {
                  value 19;
                  description
                    "Frame Relay DLCI for translational cross-connect";
                }
                enum "frame-relay-ether-type" {
                  junos:must "((".. .. encapsulation flexible-frame-relay" || (".. .. encapsulation frame-relay-ether-type" || ".. .. encapsulation frame-relay-ether-type-tcc")))";
                  junos:must-message "Interface encapsulation must be cisco-compatible or flexible frame relay";
                  value 20;
                  description
                    "Cisco-compatible Frame Relay Encapsulation DLCI";
                }
                enum
                  "frame-relay-ether-type-tcc" {
                  value 21;
                  description
                    "Cisco-compatible Frame Relay Encapsulation DLCI for TCC";
                }
                enum "ether-vpls-fr" {
                  value 22;
                  description
                    "Ethernet VPLS over Frame Relay (bridging) encapsulation";
                }
                enum "vlan-ccc" {
                  value 23;
                  description
                    "802.1q tagging for a cross-connect";
                }
                enum "ethernet-ccc" {
                  value 24;
                  description
                    "Ethernet for a cross-connect";
                }
                enum "vlan-vpls" {
                  value 25;
                  description
                    "VLAN virtual private LAN service";
                }
                enum "vlan-bridge" {
                  value 26;
                  description
                    "VLAN layer-2 bridging";
                }
                enum "ethernet-tcc" {
                  value 27;
                  description
                    "Ethernet translational cross-connect";
                }
                enum "dix" {
                  value 28;
                  description
                    "Ethernet DIXv2 (RFC 894)";
                }
                enum "ethernet" {
                  value 29;
                  description
                    "Ethernet II (RFC 894)";
                }
                enum "ethernet-vpls" {
                  value 30;
                  description
                    "Ethernet II virtual private LAN service";
                }
                enum "ethernet-bridge" {
                  value 31;
                  description
                    "Ethernet II bridging";
                }
                enum "vlan" {
                  value 32;
                  description
                    "802.1q-tagged Ethernet";
                }
                enum "vlan-tcc" {
                  value 33;
                  description
                    "802.1q tagging for a translational cross-connect";
                }
                enum "multilink-ppp" {
                  value 34;
                  description "Multilink PPP";
                }
                enum
                  "multilink-frame-relay-end-to-end" {
                  value 35;
                  description
                    "Multilink Frame Relay end-to-end (FRF.15)";
                }
                enum "ppp-ccc" {
                  value 36;
                  description
                    "Serial PPP device for a cross-connect";
                }
              }
              description
                "Logical link-layer encapsulation";
            }
    
            leaf mtu {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32;
              }
              description
                "Maximum transmission unit packet size";
            }
    
            choice pointedness {
              leaf point-to-point {
                type empty;
                description
                  "Point-to-point connection";
              }
              leaf multipoint {
                type empty;
                description
                  "Multipoint connection";
              }
            }  // choice pointedness
    
            leaf bandwidth {
              type string;
              description
                "Logical unit bandwidth (informational only)";
            }
    
            choice traps-choice {
              leaf traps {
                type empty;
                description
                  "Enable SNMP notifications on state changes";
              }
              leaf no-traps {
                type empty;
                description
                  "Don't enable SNMP notifications on state changes";
              }
            }  // choice traps-choice
    
            choice routing-services-choice {
              leaf routing-services {
                type empty;
                status deprecated;
                description
                  "Enable routing services";
              }
              leaf no-routing-services {
                type empty;
                status deprecated;
                description
                  "Don't enable routing services";
              }
            }  // choice routing-services-choice
    
            container routing-service {
              description
                "Routing Services on this interface";
              uses apply-advanced;
    
              choice enable-disable {
                leaf enable {
                  type empty;
                  description
                    "Enable Routing Service";
                }
                leaf disable {
                  type empty;
                  description
                    "Disable Routing Service";
                }
              }  // choice enable-disable
            }  // container routing-service
    
            container arp-resp {
              presence "enable arp-resp";
              description
                "Knob to control ARP response on the interface, default is restricted";
              choice arp-response-options {
                leaf unrestricted {
                  type empty;
                  description
                    "Enable unrestricted ARP respone on the interface";
                }
                leaf restricted {
                  type empty;
                  description
                    "Enable restricted proxy ARP response on the interface";
                }
              }  // choice arp-response-options
            }  // container arp-resp
    
            container proxy-arp {
              junos:must "(!("switch-options no-arp-trap "))";
              junos:must-message "Cannot enable proxy ARP with no-arp-trap";
              presence "enable proxy-arp";
              description
                "Enable proxy ARP on the interface, default is unrestricted";
              choice proxyarp-options {
                leaf unrestricted {
                  type empty;
                  description
                    "Enable unrestricted proxy ARP on the interface";
                }
                leaf restricted {
                  type empty;
                  description
                    "Enable restricted proxy ARP on the interface";
                }
              }  // choice proxyarp-options
            }  // container proxy-arp
    
            choice vlan_choice {
              leaf vlan-id {
                junos:must "(!("interfaces ${interface} stacked-vlan-tagging"))";
                junos:must-message "vlan-id is not supported on stacked-vlan-tagging mode";
                type string;
                description
                  "Virtual LAN identifier value for 802.1q VLAN tags";
              }
              leaf vlan-id-range {
                junos:must "(("interfaces ${interface} vlan-tagging" || "interfaces ${interface} flexible-vlan-tagging"))";
                junos:must-message "valid only with vlan-tagging or flexible-vlan-tagging mode";
                type jt:vlan-range;
                description
                  "Virtual LAN identifier range of form vid1-vid2";
              }
              leaf-list inner-vlan-id-swap-ranges {
                type jt:vlan-range;
                description
                  "Inner vlan-id swap range(s) of form vid1-vid2 for dynamic L2 VLANs";
              }
              leaf-list vlan-id-list {
                junos:must "((" .. encapsulation vlan-ccc" || ("interfaces ${interface} encapsulation extended-vlan-ccc" || (" .. encapsulation vlan-vpls" || ("interfaces ${interface} encapsulation extended-vlan-vpls" || (" .. encapsulation vlan-bridge" || "interfaces ${interface} encapsulation extended-vlan-bridge"))))))";
                junos:must-message "valid only with ccc/vpls/bridge encapsulation";
                junos:must "(("interfaces ${interface} vlan-tagging" || "interfaces ${interface} flexible-vlan-tagging"))";
                junos:must-message "valid only with vlan-tagging or flexible-vlan-tagging mode";
                type jt:vlan-range;
                description
                  "List of VLAN identifiers";
              }
              leaf-list vlan-tag {
                type string;
                ordered-by user;
                status deprecated;
                description
                  "IEEE 802.1q tag list for VLAN tagged frames";
              }
              container vlan-tags {
                junos:must "((!("interfaces ${interface} vlan-tagging") || !((". inner" || (". inner-range" || ". inner-list")))))";
                junos:must-message "inner/inner-range/inner-list is valid only on stacked-vlan-tagging and flexible-vlan-tagging mode";
                junos:must "((!("interfaces ${interface} stacked-vlan-tagging") || (". inner" || (". inner-range" || ". inner-list"))))";
                junos:must-message "inner/inner-range/inner-list must be defined for stacked-vlan-tagging mode";
                junos:must "((".. demux-options" || ("interfaces ${interface} vlan-tagging" || ("interfaces ${interface} stacked-vlan-tagging" || "interfaces ${interface} flexible-vlan-tagging"))))";
                junos:must-message "valid only with vlan-tagging, stacked-vlan-tagging or flexible-vlan-tagging mode";
                presence "enable vlan-tags";
                description "IEEE 802.1q tags";
                leaf outer {
                  type string;
                  description
                    "[tpid.]vlan-id, tpid format is 0xNNNN and is optional";
                }
    
                choice inner_choice {
                  leaf inner {
                    type string;
                    description
                      "[tpid.]vlan-id, tpid format is 0xNNNN and is optional";
                  }
                  leaf inner-range {
                    type string {
                      junos:posix-pattern "^((0[Xx][0-9A-Fa-f]{4}.){0,1}([1-9][0-9]{0,2}|[1-3][0-9]{3}|40[0-8][0-9]|409[0-4])-([1-9][0-9]{0,2}|[1-3][0-9]{3}|40[0-8][0-9]|409[0-4]))$";
                      junos:pattern-message "vid in vlan-tag ([0xNNNN.]vid1-vid2) must be 1 to 4094";
                    }
                    description
                      "[tpid.]vid1-vid2, tpid format is 0xNNNN and is optional";
                  }
                  leaf-list inner-list {
                    junos:must "((" .. .. encapsulation vlan-ccc" || ("interfaces ${interface} encapsulation extended-vlan-ccc" || (" .. .. encapsulation vlan-vpls" || ("interfaces ${interface} encapsulation extended-vlan-vpls" || (" .. .. encapsulation vlan-bridge" || "interfaces ${interface} encapsulation extended-vlan-bridge"))))))";
                    junos:must-message "valid only with ccc/vpls/bridge encapsulation";
                    type jt:vlan-range;
                    description
                      "List of VLAN identifiers";
                  }
                }  // choice inner_choice
              }  // container vlan-tags
            }  // choice vlan_choice
    
            leaf deep-vlan-qualified-learning {
              junos:must "((".. vlan-tags outer" && ".. vlan-tags inner"))";
              junos:must-message "deep-vlan-qualified-learning can be specified only with one outer and one inner vlan tags";
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "3";
                }
              }
              description
                "Enable qualified MAC-address learning on the specified vlan tag";
            }
    
            leaf native-inner-vlan-id {
              junos:must "((".. vlan-tags" || ".. family bridge inner-vlan-id-list"))";
              junos:must-message "native-inner-vlan-id can be specified only on a dual vlan tagged unit";
              junos:must "("interfaces ${interface} flexible-vlan-tagging")";
              junos:must-message "native-inner-vlan-id can be specified only with flexible-vlan-tagging mode";
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 4094";
                }
              }
              description
                "Native virtual LAN identifier for singly tagged frames";
            }
    
            container inner-vlan-id-range {
              junos:must "("interfaces ${interface} encapsulation vlan-vci-ccc")";
              junos:must-message "inner-vlan-id-range valid only for vlan-vci-ccc encapsulation";
              description
                "Inner vlan-id range start <start-vlan-id> end <end-vlan-id>";
              leaf start {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "32 .. 4094";
                  }
                }
                description
                  "Inner vlan-id range's start value";
              }
    
              leaf end {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "32 .. 4094";
                  }
                }
                description
                  "Inner vlan-id range's end value";
              }
            }  // container inner-vlan-id-range
    
            container accept-source-mac {
              junos:must "(".. family ethernet-switching")";
              junos:must-message "source mac filters are allowed only on interfaces with family ethernet-switching";
              description
                "Remote media access control address to/from which to accept traffic";
              uses apply-advanced;
    
              list mac-address {
                key "name";
                description "Remote MAC address";
                uses mac_list;
              }  // list mac-address
            }  // container accept-source-mac
    
            container input-vlan-map {
              description
                "VLAN map operation on input";
              uses vlan_map;
            }  // container input-vlan-map
    
            container output-vlan-map {
              description
                "VLAN map operation on output";
              uses vlan_map;
            }  // container output-vlan-map
    
            leaf swap-by-poppush {
              type empty;
              description
                "Pop original vlan tag and then push a new vlan tag";
            }
    
            leaf receive-lsp {
              type string;
              description
                "Name of incoming label-switched path";
            }
    
            leaf transmit-lsp {
              type string;
              description
                "Name of outgoing label-switched path";
            }
    
            leaf dlci {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 1022";
                }
              }
              description
                "Frame Relay data-link control identifier";
            }
    
            leaf multicast-dlci {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 1022";
                }
              }
              description
                "Frame Relay data-link control identifier for multicast packets";
            }
    
            choice vci_type {
              leaf vci {
                junos:must "(!(".. encapsulation vlan-vci-ccc"))";
                junos:must-message "'vci-range' must be used with encapsulation vlan-vci-ccc";
                type jt:atm-vci;
                description
                  "ATM point-to-point virtual circuit identifier ([vpi.]vci)";
              }
              leaf allow-any-vci {
                type empty;
                description
                  "Allow all VCIs to open in atm-ccc-cell-relay mode";
              }
              leaf vpi {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 255";
                  }
                }
                description
                  "ATM point-to-point virtual path identifier (vpi)";
              }
              leaf trunk-id {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 31";
                  }
                }
                description
                  "ATM trunk identifier";
              }
            }  // choice vci_type
    
            choice psn_vci_type {
              case case_1 {
              }  // case case_1
    
              case case_2 {
              }  // case case_2
            }  // choice psn_vci_type
    
            container atm-l2circuit-mode {
              description
                "Select ATM Layer 2 circuit transport mode";
              choice mode_choice {
                leaf cell {
                  type empty;
                  description
                    "ATM Layer 2 circuit cell mode";
                }
                leaf aal5 {
                  type empty;
                  description
                    "ATM Layer 2 circuit AAL5 mode";
                }
              }  // choice mode_choice
            }  // container atm-l2circuit-mode
    
            container vci-range {
              junos:must "(!(".. vci"))";
              junos:must-message "'vci-range' and 'vci' statements cannot co-exist";
              description
                "ATM VCI range start <start-vci> end <end-vci>";
              leaf start {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "32 .. 4094";
                  }
                }
                description
                  "ATM VCI range's start value";
              }
    
              leaf end {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "32 .. 4094";
                  }
                }
                description
                  "ATM VCI range's end value";
              }
            }  // container vci-range
    
            leaf trunk-bandwidth {
              type string;
              units "bits per second";
              description "ATM trunk bandwidth";
            }
    
            leaf multicast-vci {
              type jt:atm-vci;
              description
                "ATM virtual circuit identifier for multicast packets";
            }
    
            container shaping {
              description
                "Virtual circuit traffic-shaping options";
              uses dcd_shaping_config;
            }  // container shaping
    
            container oam-period {
              description "OAM cell period";
              choice oam_period_choices {
                leaf oam-period {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 900";
                    }
                  }
                  units "seconds";
                  description "OAM cell period";
                }
                container disable {
                  presence "enable disable";
                  description
                    "Disable F5 OAM loopback";
                }  // container disable
              }  // choice oam_period_choices
            }  // container oam-period
    
            container oam-liveness {
              description
                "OAM virtual circuit liveness parameters";
              uses apply-advanced;
    
              leaf up-count {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 255";
                  }
                }
                description
                  "Number of OAM cells to consider VC up";
              }
    
              leaf down-count {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 255";
                  }
                }
                description
                  "Number of OAM cells to consider VC down";
              }
            }  // container oam-liveness
    
            container ppp-options {
              description
                "Point-to-Point Protocol interface-specific options";
              uses ppp_options_type;
            }  // container ppp-options
    
            choice keepalive_choices {
              container keepalives {
                presence "enable keepalives";
                description
                  "Send or demand keepalive messages";
                uses keepalives_type;
              }  // container keepalives
              leaf no-keepalives {
                type empty;
                description
                  "Do not send or demand keepalive messages";
              }
            }  // choice keepalive_choices
    
            leaf inverse-arp {
              type empty;
              description "Enable inverse ARP";
            }
    
            leaf transmit-weight {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 32767";
                }
              }
              description
                "ATM2 transmit weight for VC under VP tunnel";
            }
    
            container epd-threshold {
              description
                "Early packet discard threshold for ATM2";
              uses epd_threshold_config;
            }  // container epd-threshold
    
            leaf cell-bundle-size {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 176";
                }
              }
              units "cells";
              description
                "L2 circuit cell bundle size";
            }
    
            leaf cell-bundle-timeout {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 512";
                }
              }
              units "microseconds";
              description
                "L2 circuit cell bundle timeout";
            }
    
            leaf plp-to-clp {
              type empty;
              description
                "Enable ATM2 PLP to CLP copy";
            }
    
            leaf atm-scheduler-map {
              type union {
                type string {
                  pattern "default";
                }
                type string;
              }
              description
                "Assign ATM2 CoS scheduling map";
            }
    
            leaf mrru {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1500 .. 4500";
                }
              }
              units "bytes";
              description
                "Maximum received reconstructed unit";
            }
    
            leaf short-sequence {
              type empty;
              description
                "Short sequence number header format (MLPPP only)";
            }
    
            leaf fragment-threshold {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "64 .. 4500";
                }
              }
              units "bytes";
              description
                "Fragmentation threshold";
            }
    
            leaf drop-timeout {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "0 .. 2000";
                }
              }
              units "milliseconds";
              description "Drop timeout";
            }
    
            leaf disable-mlppp-inner-ppp-pfc {
              type empty;
              description
                "Disable compression for inner PPP header in MLPPP payload";
            }
    
            leaf minimum-links {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16;
              }
              description
                "Minimum number of links to sustain the bundle";
            }
    
            leaf multilink-max-classes {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16;
              }
              description
                "Number of multilink classes";
            }
    
            leaf interleave-fragments {
              type empty;
              description
                "Interleave long packets with high priority ones";
            }
    
            leaf link-layer-overhead {
              type jt:unsigned-float;
              description
                "Link layer bit stuffing overhead (0.0 .. 50.0 percent)";
            }
    
            leaf accounting-profile {
              junos:must "(("accounting-options interface-profile $$" || "accounting-options flat-file-profile $$"))";
              junos:must-message "referenced accounting profile must be defined";
              type string;
              description
                "Accounting profile name";
            }
    
            leaf peer-unit {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 16385";
                }
              }
              description "Peer unit number";
            }
    
            container tunnel {
              description "Tunnel parameters";
              uses apply-advanced;
    
              container encapsulation {
                presence "enable encapsulation";
                description
                  "Encapsulation over tunnel";
                container vxlan-gpe {
                  junos:must "((!(".. udp") && !(".. ipip")))";
                  junos:must-message "Only one encapsulation can  be set per IFL";
                  presence "enable vxlan-gpe";
                  uses apply-advanced;
    
                  container source {
                    uses apply-advanced;
    
                    leaf address {
                      junos:must "(!(".. interface"))";
                      junos:must-message "To configure address interface must be not set";
                      type jt:ipv4addr;
                      description
                        "Interface address prefix";
                    }
    
                    leaf mac-address {
                      type jt:mac-addr;
                      description
                        "Interface source mac address";
                    }
    
                    leaf interface {
                      type union {
                        type jt:interface-name;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Name of the interface";
                    }
                  }  // container source
    
                  container destination {
                    uses apply-advanced;
    
                    leaf address {
                      type jt:ipv4addr;
                      description
                        "Interface address prefix";
                    }
    
                    leaf mac-address {
                      type jt:mac-addr;
                      description
                        "Interface destination mac address";
                    }
                  }  // container destination
    
                  leaf tunnel-endpoint {
                    type enumeration {
                      enum "vxlan" {
                        value 0;
                        description
                          "To configure vxlan tunnel-end-point";
                      }
                    }
                    description
                      "Tunnel end point type";
                  }
    
                  leaf destination-udp-port {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65535";
                      }
                    }
                    description
                      "Value to write to the destination-udp-port field";
                  }
    
                  leaf vni {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 16777214";
                      }
                    }
                    description
                      "Value to write to the vni field";
                  }
                }  // container vxlan-gpe
              }  // container encapsulation
    
              leaf source {
                type jt:ipaddr;
                description "Tunnel source";
              }
    
              leaf destination {
                type jt:ipaddr;
                description "Tunnel destination";
              }
    
              leaf key {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 4294967295";
                  }
                }
                description "Tunnel key";
              }
    
              leaf backup-destination {
                junos:must "(!(".. destination $$"))";
                junos:must-message "Backup and primary tunnel destinations must be different";
                type jt:ipaddr;
                description
                  "Backup tunnel destination";
              }
    
              choice fragmentation {
                leaf allow-fragmentation {
                  type empty;
                  description
                    "Do not set DF bit on packets";
                }
                leaf do-not-fragment {
                  type empty;
                  description
                    "Set DF bit on packets";
                }
              }  // choice fragmentation
    
              leaf ttl {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 255";
                  }
                }
                description "Time to live";
              }
    
              leaf traffic-class {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 255";
                  }
                }
                description
                  "TOS/Traffic class field of IP-header";
              }
    
              leaf flow-label {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 1048575";
                  }
                }
                description
                  "Flow label field of IP6-header";
              }
    
              choice path-mtu-discovery-choice {
                leaf path-mtu-discovery {
                  type empty;
                  description
                    "Enable path MTU discovery for tunnels";
                }
                leaf no-path-mtu-discovery {
                  type empty;
                  description
                    "Don't enable path MTU discovery for tunnels";
                }
              }  // choice path-mtu-discovery-choice
    
              container routing-instance {
                description
                  "Routing instance to which tunnel ends belong";
                uses apply-advanced;
    
                leaf destination {
                  junos:must "(("routing-instances $$" || any "tenants <*> routing-instances $$"))";
                  junos:must-message "referenced routing-instance must be defined";
                  type string {
                    junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
                    junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
                  }
                  description
                    "Routing instance of tunnel destination";
                }
              }  // container routing-instance
            }  // container tunnel
    
            leaf compression-device {
              type union {
                type jt:interface-unit;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description
                "Logical interface used for compression";
            }
    
            container layer2-policer {
              junos:must "(".. family")";
              junos:must-message "Family must be defined for a unit with layer2-policer";
              description
                "Layer2 policing for logical interface";
              uses apply-advanced;
    
              choice layer2-input-policer-choice {
                leaf input-policer {
                  junos:must "(!("firewall policer $$ then forwarding-class"))";
                  junos:must-message "Forwarding class cannot be modified for Layer 2 policer";
                  junos:must "(!("firewall policer $$ then loss-priority medium-low"))";
                  junos:must-message "Loss priority 'medium-low' is not valid for Layer 2 policer";
                  junos:must "(!("firewall policer $$ then loss-priority low"))";
                  junos:must-message "Loss priority 'low' is not valid for Layer 2 policer";
                  junos:must "("firewall policer $$ logical-interface-policer")";
                  junos:must-message "Layer 2 policer must be a logical interface policer";
                  type string;
                  description
                    "Two-color policer for received packets";
                }
    
                case case_2 {
                }  // case case_2
                leaf input-three-color {
                  junos:must "(("firewall three-color-policer $$ single-rate color-blind" || ("firewall three-color-policer $$ single-packet-rate color-blind" || ("firewall three-color-policer $$ two-rate color-blind" || "firewall three-color-policer $$ two-packet-rate color-blind"))))";
                  junos:must-message "Layer 2 input three-color policer must be color-blind";
                  junos:must "("firewall three-color-policer $$ logical-interface-policer")";
                  junos:must-message "Layer 2 three-color policer must be a logical interface policer";
                  type string;
                  description
                    "Color-blind three-color policer for received packets";
                }
              }  // choice layer2-input-policer-choice
    
              choice layer2-output-policer-choice {
                leaf output-policer {
                  junos:must "(!("firewall policer $$ then forwarding-class"))";
                  junos:must-message "Forwarding class cannot be modified for Layer 2 policer";
                  junos:must "(!("firewall policer $$ then loss-priority medium-low"))";
                  junos:must-message "Loss priority 'medium-low' is not valid for Layer 2 policer";
                  junos:must "(!("firewall policer $$ then loss-priority low"))";
                  junos:must-message "Loss priority 'low' is not valid for Layer 2 policer";
                  junos:must "("firewall policer $$ logical-interface-policer")";
                  junos:must-message "Layer 2 policer must be a logical interface policer";
                  type string;
                  description
                    "Two-color policer for transmitted packets";
                }
                leaf output-three-color {
                  junos:must "("firewall three-color-policer $$ logical-interface-policer")";
                  junos:must-message "Layer 2 three-color policer must be a logical interface policer";
                  type string;
                  description
                    "Three-color policer for transmitted packets";
                }
              }  // choice layer2-output-policer-choice
            }  // container layer2-policer
    
            choice virtual-gateway {
              leaf no-auto-virtual-gateway-esi {
                junos:must "((any ".. family inet address <*> virtual-gateway-address" || any ".. family inet6 address <*> virtual-gateway-address"))";
                junos:must-message "Only when virtual gateway address is configured";
                type empty;
                description
                  "Disable auto ESI generation for virtual gateway address";
              }
              container virtual-gateway-esi {
                description
                  "ESI configuration of virtual gateway";
                uses apply-advanced;
    
                leaf identifier {
                  junos:must "(unique "interfaces <*> unit <*> virtual-gateway-esi $$")";
                  junos:must-message "virtual-gateway-esi value must be unique under all IFDs and IFLs";
                  junos:must "(unique "interfaces <*> unit <*> esi $$")";
                  junos:must-message "ESI value must be unique under all IFDs and IFLs";
                  type jt:esi;
                  description
                    "ESI value for the interface";
                }
    
                choice mode {
                  leaf single-active {
                    type empty;
                    description
                      "Single-active mode";
                  }
                  leaf all-active {
                    type empty;
                    description
                      "All-active mode";
                  }
                }  // choice mode
              }  // container virtual-gateway-esi
            }  // choice virtual-gateway
    
            container service {
              description "Service operations";
              uses apply-advanced;
    
              list pcef {
                key "name";
                ordered-by user;
                description "PCEF configuration";
                leaf name {
                  junos:must "((".. family inet service" || ".. family inet6 service"))";
                  junos:must-message "Must be configured along with a family inet/inet6 service.";
                  type string;
                  description
                    "PCEF Profile name";
                }
    
                uses apply-advanced;
    
                leaf activate-all {
                  junos:must "(!("activate"))";
                  junos:must-message "Can't be configured with activate-rule or activate- rulebase.";
                  type empty;
                  description
                    "Activate all rules and rulebases in the pcef profile";
                }
    
                list activate {
                  key "name";
                  ordered-by user;
                  description
                    "Name of pcef profile rule or rulebase to activate";
                  leaf name {
                    type string;
                    description
                      "Name of pcef profile rule or rulebase to activate";
                  }
    
                  uses apply-advanced;
                }  // list activate
              }  // list pcef
            }  // container service
    
            choice generate-eui64-choice {
              leaf generate-eui64 {
                junos:must "(".. family inet6 unnumbered-address")";
                junos:must-message "generate-eui64 attribute must be set when unnumbered-address is configured under family inet6";
                type empty;
                description
                  "To generate Link Local EUI-64 addresses";
              }
              leaf no-generate-eui64 {
                junos:must "(".. family inet6 unnumbered-address")";
                junos:must-message "generate-eui64 attribute must be set when unnumbered-address is configured under family inet6";
                type empty;
                description
                  "Don't to generate Link Local EUI-64 addresses";
              }
            }  // choice generate-eui64-choice
    
            container family {
              junos:must "(!(".. encapsulation ppp-over-ether"))";
              junos:must-message "Can't configure protocol family with encapsulation ppp-over-ether";
              description "Protocol family";
              container inet {
                junos:must "(!(".. .. .. encapsulation vlan-vpls"))";
                junos:must-message "Can't configure protocol family inet with encapsulation vpls";
                presence "enable inet";
                description "IPv4 parameters";
                uses apply-advanced;
    
                container dhcp {
                  junos:must "(!(any "forwarding-options dhcp-relay group <*> interface ${interface}.${unit}"))";
                  junos:must-message "Incompatible with the interface configured under 'forwarding-options dhcp-relay group'";
                  junos:must "(!("system services dhcp"))";
                  junos:must-message "Incompatible with the dhcp server configured under 'system services dhcp'";
                  junos:must "(!("system autoinstallation interfaces"))";
                  junos:must-message "Incompatible with 'system autoinstallation interfaces'";
                  junos:must "(!(".. address"))";
                  junos:must-message "Incompatible with interface assigned with address";
                  presence "enable dhcp";
                  description
                    "Dynamic Host Configuration Protocol client configuration";
                  uses dhcp-client-type;
                }  // container dhcp
    
                container targeted-broadcast {
                  presence
                    "enable targeted-broadcast";
                  description
                    "Directed broadcast";
                  uses apply-advanced;
    
                  choice targeted-bcast-choice {
                    leaf forward-and-send-to-re {
                      type empty;
                      description
                        "Allow packets to be forwarded and sent to re";
                    }
                    leaf forward-only {
                      type empty;
                      description
                        "Allow packets only to be forwarded";
                    }
                  }  // choice targeted-bcast-choice
                }  // container targeted-broadcast
    
                leaf destination-class-usage {
                  type empty;
                  status deprecated;
                  description
                    "Enable destination class usage on this interface";
                }
    
                leaf transit-options-packets {
                  type empty;
                  status deprecated;
                  description
                    "Transit IP options packets (don't send to Routing Engine)";
                }
    
                leaf transit-ttl-exceeded {
                  type empty;
                  status deprecated;
                  description
                    "Transit IP TTL-exceeded packets (don't send to Routing Engine)";
                }
    
                leaf receive-options-packets {
                  type empty;
                  description
                    "Receive IP options packets (don't send to Routing Engine)";
                }
    
                leaf receive-ttl-exceeded {
                  type empty;
                  description
                    "Receive IP TTL-exceeded packets (don't send to Routing Engine)";
                }
    
                container accounting {
                  description
                    "Configure interface-based accounting options";
                  uses apply-advanced;
    
                  container source-class-usage {
                    description
                      "Enable source class usage on this interface";
                    uses apply-advanced;
    
                    leaf input {
                      type empty;
                      description
                        "Specify this interface for source-class-usage input";
                    }
    
                    leaf output {
                      type empty;
                      description
                        "Specify this interface for source-class-usage output";
                    }
                  }  // container source-class-usage
    
                  leaf destination-class-usage {
                    type empty;
                    description
                      "Enable destination class usage on this interface";
                  }
                }  // container accounting
    
                container rpf-check {
                  presence "enable rpf-check";
                  description
                    "Enable reverse-path-forwarding checks on this interface";
                  uses apply-advanced;
    
                  leaf fail-filter {
                    type string;
                    description
                      "Name of filter applied to packets failing RPF check";
                  }
    
                  container mode {
                    description
                      "Mode for reverse path forwarding";
                    leaf loose {
                      type empty;
                      description
                        "Reverse-path-forwarding loose mode";
                    }
                  }  // container mode
                }  // container rpf-check
    
                leaf mtu {
                  type union {
                    type uint32;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description
                    "Protocol family maximum transmission unit";
                }
    
                leaf arp-max-cache {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 2000000";
                    }
                  }
                  description
                    "Max interface ARP nexthop cache size";
                }
    
                leaf arp-new-hold-limit {
                  junos:must "(".. arp-max-cache")";
                  junos:must-message "Interface max ARP cache size must be configured";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 2000000";
                    }
                  }
                  description
                    "Max no. of new unresolved nexthops";
                }
    
                leaf no-redirects {
                  type empty;
                  description
                    "Do not redirect traffic";
                }
    
                leaf no-neighbor-learn {
                  type empty;
                  description
                    "Disable neighbor address learning on interface";
                }
    
                leaf unconditional-src-learn {
                  type empty;
                  description
                    "Glean from arp packets even when source cannot be validated";
                }
    
                leaf multicast-only {
                  type empty;
                  description
                    "Allow only multicast traffic (tunnels only)";
                }
    
                leaf primary {
                  type empty;
                  description
                    "Candidate for primary interface in system";
                }
    
                leaf ipsec-sa {
                  type string {
                    length "1 .. 32";
                  }
                  description
                    "Name of security association";
                }
    
                leaf allow-filter-on-re {
                  type empty;
                  description
                    "Enable kernel filter on network ports";
                }
    
                container filter {
                  description "Packet filtering";
                  uses apply-advanced;
    
                  choice input_choice {
                    container input {
                      description
                        "Filter to be applied to received packets";
                      leaf filter-name {
                        type string;
                        description
                          "Name of the filter";
                      }
    
                      leaf shared-name {
                        type string;
                        description
                          "Filter shared-name of instances of interface-shared filter";
                      }
    
                      leaf precedence {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "0 .. 255";
                          }
                        }
                        description
                          "Precedence of the filter";
                      }
                    }  // container input
                    leaf-list input-list {
                      type string;
                      ordered-by user;
                      description
                        "List of filter modules applied to received packets ";
                    }
                  }  // choice input_choice
    
                  choice output_choice {
                    container output {
                      description
                        "Filter to be applied to transmitted packets";
                      leaf filter-name {
                        type string;
                        description
                          "Name of the filter";
                      }
    
                      leaf shared-name {
                        type string;
                        description
                          "Filter shared-name of instances of interface-shared filter";
                      }
    
                      leaf precedence {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "0 .. 255";
                          }
                        }
                        description
                          "Precedence of the filter";
                      }
                    }  // container output
                    leaf-list output-list {
                      type string;
                      ordered-by user;
                      description
                        "List of filter modules applied to transmitted packets ";
                    }
                  }  // choice output_choice
    
                  container adf {
                    description
                      "Ascend Data Filter definition";
                    uses apply-advanced;
    
                    list rule {
                      key "name";
                      ordered-by user;
                      description
                        "Set of ADF rules";
                      leaf name {
                        type string;
                        description
                          "Value for a single rule";
                      }
    
                      uses apply-advanced;
                    }  // list rule
    
                    leaf counter {
                      type empty;
                      description
                        "Add a counter to each rule";
                    }
    
                    leaf input-precedence {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "0 .. 255";
                        }
                      }
                      description
                        "Precedence of the input rules";
                    }
    
                    leaf not-mandatory {
                      type empty;
                      description
                        "No errors will be reported if no rules are present";
                    }
    
                    leaf output-precedence {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "0 .. 255";
                        }
                      }
                      description
                        "Precedence of the output rules";
                    }
                  }  // container adf
    
                  leaf group {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 255";
                      }
                    }
                    description
                      "Group to which interface belongs";
                  }
                }  // container filter
    
                container simple-filter {
                  description
                    "Filter for doing multifield classification";
                  uses apply-advanced;
    
                  leaf input {
                    type string;
                    description
                      "Name of simple filter applied to received packets";
                  }
                }  // container simple-filter
    
                container policer {
                  description
                    "Interface policing";
                  uses apply-advanced;
    
                  leaf arp {
                    junos:must "(!(".. disable-arp-policer"))";
                    junos:must-message "Interface configuration can have either disable-arp-policer or arp policer configured";
                    junos:must "((!(".. .. .. .. peer-unit") || (".. .. .. .. encapsulation ethernet" || ".. .. .. .. encapsulation vlan")))";
                    junos:must-message "Interface encapsulation must be ethernet or vlan";
                    type string;
                    description
                      "Name of policer applied to received ARP packets";
                  }
    
                  leaf input {
                    junos:must "(!(".. .. input-hierarchical-policer"))";
                    junos:must-message "Both input policer and input hierarchical policer can not be applied on the same family";
                    type string;
                    description
                      "Name of policer applied to received packets";
                  }
    
                  leaf output {
                    type string;
                    description
                      "Name of policer applied to transmitted packets";
                  }
                }  // container policer
    
                container sampling {
                  junos:must "(("forwarding-options sampling family inet" || ("forwarding-options packet-capture" || any "forwarding-options sampling instance <*> family inet")))";
                  junos:must-message "Requires forwarding-options sampling or packet-capture config";
                  description
                    "Interface sampling";
                  uses apply-advanced;
    
                  leaf input {
                    type empty;
                    description
                      "Sample all packets input on this interface";
                  }
    
                  leaf output {
                    type empty;
                    description
                      "Sample all packets output on this interface";
                  }
                }  // container sampling
    
                container service {
                  junos:must "((!(".. rpf-check") || "chassis network-services enhanced-ip"))";
                  junos:must-message "rpf-check can not be enabled with interface services";
                  description
                    "Service operations";
                  uses apply-advanced;
    
                  container input {
                    description
                      "Service sets to consider for received packets";
                    uses apply-advanced;
    
                    list service-set {
                      key "name";
                      ordered-by user;
                      description
                        "Service set to consider for received packets";
                      leaf name {
                        junos:must "((!(".. .. .. .. .. .. demux-source") && !(".. .. .. .. .. .. demux-destination")))";
                        junos:must-message "Service set cannot be configured on interfaces with demux-source or demux-destination";
                        junos:must "("services service-set $$ interface-service")";
                        junos:must-message "this service set must be an interface service";
                        type string {
                          junos:posix-pattern "^[[:alnum:]][[:alnum:]/.:_-]*$";
                          junos:pattern-message "Must be a string beginning with a number or letter and consisting of letters, numbers, dashes, underscores, forward slashes, colons and dots.";
                        }
                        description
                          "Name of service set";
                      }
    
                      uses apply-advanced;
    
                      leaf service-filter {
                        type string;
                        description
                          "Name of service filter";
                      }
                    }  // list service-set
    
                    leaf post-service-filter {
                      type string;
                      description
                        "Post-service filter to apply to received packets";
                    }
                  }  // container input
    
                  container output {
                    description
                      "Service sets to consider for transmitted packets";
                    uses apply-advanced;
    
                    list service-set {
                      key "name";
                      ordered-by user;
                      description
                        "Service set to consider for transmitted packets";
                      leaf name {
                        type string {
                          junos:posix-pattern "^[[:alnum:]][[:alnum:]/.:_-]*$";
                          junos:pattern-message "Must be a string beginning with a number or letter and consisting of letters, numbers, dashes, underscores, forward slashes, colons and dots.";
                        }
                        description
                          "Name of service set";
                      }
    
                      uses apply-advanced;
    
                      leaf service-filter {
                        type string;
                        description
                          "Name of service filter";
                      }
                    }  // list service-set
                  }  // container output
                }  // container service
    
                list next-hop-tunnel {
                  key "name";
                  ordered-by user;
                  description
                    "One or more next-hop tunnel tables";
                  leaf name {
                    type string;
                    description
                      "Next-hop tunnel gateway address";
                  }
    
                  uses apply-advanced;
    
                  leaf ipsec-vpn {
                    junos:must "("security ipsec vpn $$")";
                    junos:must-message "Referenced IPSec vpn must be defined under [edit security ipsec vpn] hierarchy level";
                    junos:must "(unique "interfaces st0 unit <*> family inet next-hop-tunnel <*> ipsec-vpn $$")";
                    junos:must-message "Referenced IPSec vpn must be unique";
                    type string;
                    description
                      "Name of IPSec VPN";
                  }
                }  // list next-hop-tunnel
    
                container tunnel-termination {
                  presence
                    "enable tunnel-termination";
                  description
                    "Tunnel termination";
                }  // container tunnel-termination
    
                list address {
                  junos:must "((!(".. unnumbered-address") && !(".. location-pool-address")))";
                  junos:must-message "address cannot be defined with unnumbered-address or location-pool-address simultaneously";
                  key "name";
                  ordered-by user;
                  description
                    "Interface address/destination prefix";
                  leaf name {
                    type jt:ipv4prefix;
                    description
                      "Interface address/destination prefix";
                  }
    
                  uses apply-advanced;
    
                  leaf destination {
                    type jt:ipv4addr;
                    description
                      "Destination address";
                  }
    
                  leaf destination-profile {
                    junos:must "("access group-profile $$ ppp")";
                    junos:must-message "referenced group-profile must be defined and must contain ppp statement";
                    type string;
                    description
                      "Profile to use for destination address";
                  }
    
                  leaf broadcast {
                    type jt:ipv4addr;
                    description
                      "Broadcast address";
                  }
    
                  leaf primary {
                    type empty;
                    description
                      "Candidate for primary address in system";
                  }
    
                  leaf preferred {
                    type empty;
                    description
                      "Preferred address on interface";
                  }
    
                  leaf master-only {
                    type empty;
                    description
                      "Master management IP address for router";
                  }
    
                  list multipoint-destination {
                    key "name";
                    ordered-by user;
                    description
                      "Multipoint NBMA destination";
                    leaf name {
                      type jt:ipv4addr;
                      description
                        "Destination address";
                    }
    
                    uses apply-advanced;
    
                    choice link-address {
                      leaf dlci {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 1022";
                          }
                        }
                        description
                          "Frame Relay data-link control identifier";
                      }
                      leaf vci {
                        type jt:atm-vci;
                        description
                          "ATM virtual circuit identifier ([vpi.]vci)";
                      }
                    }  // choice link-address
    
                    container shaping {
                      description
                        "Virtual circuit traffic-shaping options";
                      uses dcd_shaping_config;
                    }  // container shaping
    
                    container oam-period {
                      description
                        "OAM cell period";
                      choice oam_period_choices {
                        leaf oam_period {
                          type union {
                            type string {
                              pattern "<.*>|$.*";
                            }
                            type uint32 {
                              range "1 .. 900";
                            }
                          }
                          units "seconds";
                          description
                            "OAM cell period";
                        }
                        container disable {
                          presence
                            "enable disable";
                          description
                            "Disable OAM loopback";
                        }  // container disable
                      }  // choice oam_period_choices
                    }  // container oam-period
    
                    container oam-liveness {
                      description
                        "OAM virtual circuit liveness parameters";
                      uses apply-advanced;
    
                      leaf up-count {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 255";
                          }
                        }
                        description
                          "Number of OAM cells to consider VC up";
                      }
    
                      leaf down-count {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 255";
                          }
                        }
                        description
                          "Number of OAM cells to consider VC down";
                      }
                    }  // container oam-liveness
    
                    leaf inverse-arp {
                      type empty;
                      description
                        "Enable inverse ARP reply messages";
                    }
    
                    leaf transmit-weight {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint16 {
                          range "1 .. 32767";
                        }
                      }
                      description
                        "ATM2 transmit weight for VC under VP tunnel";
                    }
    
                    container epd-threshold {
                      description
                        "Early packet discard threshold for ATM2";
                      uses epd_threshold_config;
                    }  // container epd-threshold
                  }  // list multipoint-destination
    
                  list arp {
                    key "name";
                    ordered-by user;
                    description
                      "Static Address Resolution Protocol entries";
                    leaf name {
                      type jt:ipv4addr;
                      description
                        "Destination IP address";
                    }
    
                    leaf l2-interface {
                      type union {
                        type jt:interface-name;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Layer 2 interface name for ARP entry";
                    }
    
                    choice mac_address_type {
                      leaf mac {
                        type jt:mac-unicast;
                        description
                          "MAC address";
                      }
                      leaf multicast-mac {
                        type jt:mac-multicast;
                        description
                          "Multicast MAC address";
                      }
                    }  // choice mac_address_type
    
                    leaf publish {
                      junos:must "((".. mac" || ".. multicast-mac"))";
                      junos:must-message "mac or multicast-mac must be configured to publish";
                      type empty;
                      description
                        "Reply to ARP requests for this entry";
                    }
                  }  // list arp
    
                  list vrrp-group {
                    key "name";
                    ordered-by user;
                    description "VRRP group";
                    uses vrrp-group;
                  }  // list vrrp-group
    
                  leaf virtual-gateway-address {
                    junos:must "(!(".. vrrp-group"))";
                    junos:must-message "vrrp configuration incompatible with virtual gateway address";
                    type jt:ipv4addr;
                    description
                      "Virtual Gateway IP address";
                  }
                }  // list address
    
                container unnumbered-address {
                  description
                    "Unnumbered interface address/destination prefix";
                  leaf source {
                    junos:must "("interfaces $$-IFL family inet address")";
                    junos:must-message "referred interface must have address configured under family inet";
                    type union {
                      type jt:interface-unit;
                      type string {
                        pattern "<.*>|$.*";
                      }
                    }
                    description
                      "Interface from which to take local address";
                  }
    
                  leaf preferred-source-address {
                    type string;
                    description
                      "Preferred address on the donor interface";
                  }
    
                  leaf destination {
                    type jt:ipv4addr;
                    description
                      "Destination address";
                  }
    
                  leaf destination-profile {
                    junos:must "("access group-profile $$ ppp")";
                    junos:must-message "referenced group-profile must be defined and must contain ppp statement";
                    type string;
                    description
                      "Profile to use for destination address";
                  }
                }  // container unnumbered-address
    
                leaf negotiate-address {
                  junos:must "(!(".. .. .. .. encapsulation multilink-frame-relay-uni-nni"))";
                  junos:must-message "negotiate-address is not supported with family mlfr-uni-nni ";
                  junos:must "(!(".. .. .. encapsulation multilink-frame-relay-end-to-end"))";
                  junos:must-message "negotiate-address is not supported with family mlfr-end-to-end ";
                  junos:must "(!(".. location-pool-address"))";
                  junos:must-message "negotiate-address and location-pool-address must not be defined simultaneously";
                  junos:must "(!(".. unnumbered-address"))";
                  junos:must-message "negotiate-address and unnumbered-address must not be defined simultaneously";
                  junos:must "(!(".. address"))";
                  junos:must-message "negotiate-address and address must not be defined simultaneously";
                  type empty;
                  description
                    "Negotiate address with remote";
                }
    
                leaf destination-udp-port {
                  junos:must "(".. .. .. tunnel encapsulation udp")";
                  junos:must-message "destination-udp-port can be configured only for encapsulation udp on fti interface";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "10000 .. 10009";
                    }
                  }
                  description
                    "Choose destination UDP port number";
                }
              }  // container inet
    
              container iso {
                junos:must "(!(".. .. encapsulation frame-relay-ppp"))";
                junos:must-message "family iso is not supported on encapsulation frame-relay-ppp";
                presence "enable iso";
                description
                  "OSI ISO protocol parameters";
                uses apply-advanced;
    
                list address {
                  key "name";
                  ordered-by user;
                  description
                    "Interface address";
                  leaf name {
                    type jt:isoaddr;
                    description
                      "Interface address";
                  }
    
                  uses apply-advanced;
                }  // list address
    
                leaf mtu {
                  type union {
                    type uint32;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description
                    "Protocol family maximum transmission unit";
                }
    
                leaf destination-udp-port {
                  junos:must "(".. .. .. tunnel encapsulation udp")";
                  junos:must-message "destination-udp-port can be configured only for encapsulation udp on fti interface";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "10030 .. 10039";
                    }
                  }
                  description
                    "Choose destination UDP port number";
                }
              }  // container iso
    
              container inet6 {
                presence "enable inet6";
                description
                  "IPv6 protocol parameters";
                uses apply-advanced;
    
                container dhcpv6-client {
                  junos:must "(!("system services dhcp"))";
                  junos:must-message "Incompatible with the dhcp server configured under 'system services dhcp'";
                  junos:must "(!("system autoinstallation"))";
                  junos:must-message "Incompatible with 'system autoinstallation'";
                  junos:must "(!(".. address"))";
                  junos:must-message "Incompatible with interface assigned with address";
                  junos:must "(!(any "forwarding-options dhcp-relay dhcpv6  group <*> interface ${interface}.${unit}"))";
                  junos:must-message "DHCPv6 client and relay cannot be configured on the same interface ";
                  junos:must "(!(any "system services dhcp-local-server dhcpv6 group <*> interface ${interface}.${unit}"))";
                  junos:must-message "DHCPv6 client and server cannot be configured on the same interface ";
                  description
                    "Dynamic Host Configuration Protocol DHCPv6 client configuration";
                  uses apply-advanced;
    
                  leaf client-type {
                    type enumeration {
                      enum "stateful" {
                        value 0;
                        description
                          "Stateful client type for address assignment.";
                      }
                      enum "autoconfig" {
                        junos:must "("protocols router-advertisement interface ${interface}.${unit}")";
                        junos:must-message "Interface for ra messages is must for auto mode";
                        junos:must "(!("interfaces ${interface} unit ${unit} family inet6 dhcpv6-client update-router-advertisement"))";
                        junos:must-message "Incompatible with 'dhcpv6-client update-router-advertisement'";
                        junos:must "(!("interfaces ${interface} unit ${unit} family inet6 dhcpv6-client client-ia-type ia-pd"))";
                        junos:must-message "Incompatible with 'client-ia-type ia-pd'";
                        value 1;
                        description
                          "Autoconfig  client type for router-advertisement";
                      }
                    }
                    description
                      "DHCPv6 client type";
                  }
    
                  list client-ia-type {
                    key "name";
                    ordered-by user;
                    description
                      "DHCPv6 client identity association type";
                    leaf name {
                      type enumeration {
                        enum "ia-na" {
                          value 0;
                          description
                            "Identity Association-Non-temporary Address";
                        }
                        enum "ia-pd" {
                          value 1;
                          description
                            "Identity Association-Prefix Address";
                        }
                      }
                    }
    
                    uses apply-advanced;
                  }  // list client-ia-type
    
                  container rapid-commit {
                    presence
                      "enable rapid-commit";
                    description
                      "Option is used to signal the use of the two message exchange for address assignment";
                  }  // container rapid-commit
    
                  container prefix-delegating {
                    junos:must "("interfaces ${interface} unit ${unit} family inet6 dhcpv6-client client-ia-type ia-pd")";
                    junos:must-message "Incompatible with out 'client-ia-type ia-pd'";
                    description
                      "Prefix delegating parameters";
                    uses apply-advanced;
    
                    leaf preferred-prefix-length {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "0 .. 64";
                        }
                      }
                      description
                        "Client preferred prefix length";
                    }
    
                    leaf sub-prefix-length {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 127";
                        }
                      }
                      description
                        "The sub prefix length for LAN interfaces";
                    }
                  }  // container prefix-delegating
    
                  container client-identifier {
                    description
                      "DHCP Server identifies a client by client-identifier value ";
                    leaf duid-type {
                      type enumeration {
                        enum "duid-llt" {
                          value 0;
                          description
                            "Link-layer address plus time";
                        }
                        enum "vendor" {
                          value 1;
                          description
                            "Vendor-assigned unique ID based on Enterprise Number";
                        }
                        enum "duid-ll" {
                          value 2;
                          description
                            "Link-layer address";
                        }
                      }
                      description
                        "DUID identifying a client";
                    }
                  }  // container client-identifier
    
                  leaf vendor-id {
                    type string {
                      length "1 .. 60";
                    }
                    description
                      "Vendor class id for the dhcpv6 client";
                  }
    
                  list req-option {
                    key "name";
                    ordered-by user;
                    description
                      "DHCPV6 client requested option configuration";
                    leaf name {
                      type enumeration {
                        enum "dns-server" {
                          value 0;
                          description
                            "Dns-server option";
                        }
                        enum "domain" {
                          value 1;
                          description
                            "Dns-server option";
                        }
                        enum "ntp-server" {
                          value 2;
                          description
                            "Ntp-server option";
                        }
                        enum "time-zone" {
                          value 3;
                          description
                            "Time-zone option";
                        }
                        enum "sip-server" {
                          value 4;
                          description
                            "Sip-server option";
                        }
                        enum "sip-domain" {
                          value 5;
                          description
                            "Sip-domain option";
                        }
                        enum "nis-server" {
                          value 6;
                          description
                            "Nis-server option";
                        }
                        enum "nis-domain" {
                          value 7;
                          description
                            "Nis-domain option";
                        }
                        enum "fqdn" {
                          value 8;
                          description
                            "Fully-qualified-domain option";
                        }
                        enum "vendor-spec" {
                          value 9;
                          description
                            "Vendor-spec option";
                        }
                        enum
                          "zero-touch-redirect" {
                          value 10;
                          description
                            "Zero-touch-redirect";
                        }
                        enum "bootfile-url" {
                          value 11;
                          description
                            "Bootfile url";
                        }
                        enum "bootfile-param" {
                          value 12;
                          description
                            "Bootfile param";
                        }
                      }
                    }
    
                    uses apply-advanced;
                  }  // list req-option
    
                  container options {
                    description "DHCP options";
                    uses apply-advanced;
    
                    list number {
                      key "name";
                      description
                        "DHCP option code";
                      leaf name {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 254";
                          }
                        }
                        description
                          "DHCP option identifier code";
                      }
    
                      choice option-type-choice {
                        leaf hex-string {
                          type string {
                            junos:posix-pattern "^[[:xdigit:]]+$";
                            junos:pattern-message "Must be hexadecimal digits (0-9, a-f, A-F)";
                            length "1 .. 510";
                          }
                          description
                            "Hexadecimal string";
                        }
                      }  // choice option-type-choice
                    }  // list number
                  }  // container options
    
                  leaf retransmission-attempt {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 50000";
                      }
                    }
                    default "9";
                    description
                      "Number of attempts to retransmit the DHCPV6 client protocol packet";
                  }
                }  // container dhcpv6-client
    
                container rpf-check {
                  presence "enable rpf-check";
                  description
                    "Enable reverse-path-forwarding checks on this interface";
                  uses apply-advanced;
    
                  leaf fail-filter {
                    type string;
                    description
                      "Name of filter applied to packets failing RPF check";
                  }
    
                  container mode {
                    description
                      "Mode for reverse path forwarding";
                    leaf loose {
                      type empty;
                      description
                        "Reverse-path-forwarding loose mode";
                    }
                  }  // container mode
                }  // container rpf-check
    
                container accounting {
                  description
                    "Interface-based accounting options";
                  uses apply-advanced;
    
                  container source-class-usage {
                    uses apply-advanced;
    
                    leaf input {
                      type empty;
                      description
                        "Interface for source-class-usage input";
                    }
    
                    leaf output {
                      type empty;
                      description
                        "Interface for source-class-usage output";
                    }
                  }  // container source-class-usage
    
                  leaf destination-class-usage {
                    type empty;
                    description
                      "Enable destination class usage on this interface";
                  }
                }  // container accounting
    
                leaf mtu {
                  type union {
                    type uint32;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description
                    "Protocol family maximum transmission unit";
                }
    
                leaf nd6-stale-time {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 18000";
                    }
                  }
                  units "seconds";
                  description
                    "Stale time to reconfirm reachability with inet6 neighbour";
                }
    
                leaf no-neighbor-learn {
                  type empty;
                  description
                    "Disable neighbor address learning on interface";
                }
    
                container ndp-proxy {
                  description
                    "Enable ndp proxy on interface";
                  uses apply-advanced;
    
                  leaf interface-restricted {
                    type empty;
                    description
                      "Enable ndp interface proxy restricted to interface";
                  }
                }  // container ndp-proxy
    
                container dad-proxy {
                  junos:must "(".. ndp-proxy")";
                  junos:must-message "ndp-proxy must be configured";
                  description
                    "DAD proxy on interface";
                  uses apply-advanced;
    
                  leaf interface-restricted {
                    type empty;
                    description
                      "Enable DAD interface proxy restricted to interface";
                  }
                }  // container dad-proxy
    
                leaf nd6-max-cache {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 2000000";
                    }
                  }
                  description
                    "Max interface ND nexthop cache size";
                }
    
                leaf nd6-new-hold-limit {
                  junos:must "(".. nd6-max-cache")";
                  junos:must-message "Interface max ND cache size must be configured";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 2000000";
                    }
                  }
                  description
                    "Max no. of new unresolved nexthops";
                }
    
                leaf no-redirects {
                  type empty;
                  description
                    "Do not redirect traffic";
                }
    
                leaf allow-filter-on-re {
                  type empty;
                  description
                    "Enable kernel filter on network ports";
                }
    
                container filter {
                  description "Packet filtering";
                  uses apply-advanced;
    
                  choice input_choice {
                    container input {
                      description
                        "Filter to be applied to received packets";
                      leaf filter-name {
                        type string;
                        description
                          "Name of the filter";
                      }
    
                      leaf shared-name {
                        type string;
                        description
                          "Filter shared-name of instances of interface-shared filter";
                      }
    
                      leaf precedence {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "0 .. 255";
                          }
                        }
                        description
                          "Precedence of the filter";
                      }
                    }  // container input
                    leaf-list input-list {
                      type string;
                      ordered-by user;
                      description
                        "List of filter modules applied to received packets ";
                    }
                  }  // choice input_choice
    
                  choice output_choice {
                    container output {
                      description
                        "Filter to be applied to transmitted packets";
                      leaf filter-name {
                        type string;
                        description
                          "Name of the filter";
                      }
    
                      leaf shared-name {
                        type string;
                        description
                          "Filter shared-name of instances of interface-shared filter";
                      }
    
                      leaf precedence {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "0 .. 255";
                          }
                        }
                        description
                          "Precedence of the filter";
                      }
                    }  // container output
                    leaf-list output-list {
                      type string;
                      ordered-by user;
                      description
                        "List of filter modules applied to transmitted packets ";
                    }
                  }  // choice output_choice
    
                  container adf {
                    description
                      "Ascend Data Filter definition";
                    uses apply-advanced;
    
                    list rule {
                      key "name";
                      ordered-by user;
                      description
                        "Set of ADF rules";
                      leaf name {
                        type string;
                        description
                          "Value for a single rule";
                      }
    
                      uses apply-advanced;
                    }  // list rule
    
                    leaf counter {
                      type empty;
                      description
                        "Add a counter to each rule";
                    }
    
                    leaf input-precedence {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "0 .. 255";
                        }
                      }
                      description
                        "Precedence of the input rules";
                    }
    
                    leaf not-mandatory {
                      type empty;
                      description
                        "No errors will be reported if no rules are present";
                    }
    
                    leaf output-precedence {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "0 .. 255";
                        }
                      }
                      description
                        "Precedence of the output rules";
                    }
                  }  // container adf
    
                  leaf group {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 255";
                      }
                    }
                    description
                      "Group to which interface belongs";
                  }
                }  // container filter
    
                container policer {
                  description
                    "Interface policing";
                  uses apply-advanced;
    
                  leaf input {
                    type string;
                    description
                      "Name of policer applied to received packets";
                  }
    
                  leaf output {
                    type string;
                    description
                      "Name of policer applied to transmitted packets";
                  }
                }  // container policer
    
                container service {
                  description
                    "Service operations";
                  uses apply-advanced;
    
                  container input {
                    description
                      "Service sets to consider for received packets";
                    uses apply-advanced;
    
                    list service-set {
                      key "name";
                      ordered-by user;
                      description
                        "Service set to consider for received packets";
                      leaf name {
                        junos:must "((!(".. .. .. .. .. .. demux-source") && !(".. .. .. .. .. .. demux-destination")))";
                        junos:must-message "Service set cannot be configured on interfaces with demux-source or demux-destination";
                        junos:must "("services service-set $$ interface-service")";
                        junos:must-message "this service set must be an interface service";
                        type string {
                          junos:posix-pattern "^[[:alnum:]][[:alnum:]/.:_-]*$";
                          junos:pattern-message "Must be a string beginning with a number or letter and consisting of letters, numbers, dashes, underscores, forward slashes, colons and dots.";
                        }
                        description
                          "Name of service set";
                      }
    
                      uses apply-advanced;
    
                      leaf service-filter {
                        type string;
                        description
                          "Name of service filter";
                      }
                    }  // list service-set
    
                    leaf post-service-filter {
                      type string;
                      description
                        "Post-service filter to apply to received packets";
                    }
                  }  // container input
    
                  container output {
                    description
                      "Service sets to consider for transmitted packets";
                    uses apply-advanced;
    
                    list service-set {
                      key "name";
                      ordered-by user;
                      description
                        "Service set to consider for transmitted packets";
                      leaf name {
                        type string {
                          junos:posix-pattern "^[[:alnum:]][[:alnum:]/.:_-]*$";
                          junos:pattern-message "Must be a string beginning with a number or letter and consisting of letters, numbers, dashes, underscores, forward slashes, colons and dots.";
                        }
                        description
                          "Name of service set";
                      }
    
                      uses apply-advanced;
    
                      leaf service-filter {
                        type string;
                        description
                          "Name of service filter";
                      }
                    }  // list service-set
                  }  // container output
                }  // container service
    
                container tunnel-termination {
                  presence
                    "enable tunnel-termination";
                  description
                    "Tunnel termination";
                }  // container tunnel-termination
    
                list address {
                  junos:must "(!(".. unnumbered-address"))";
                  junos:must-message "ipv6 unnumbered-address and ipv6 address must not be defined simultaneously";
                  key "name";
                  ordered-by user;
                  description
                    "Interface address or destination prefix";
                  leaf name {
                    type jt:ipv6prefix;
                    description
                      "Interface address or destination prefix";
                  }
    
                  uses apply-advanced;
    
                  leaf destination {
                    type jt:ipv6addr;
                    description
                      "Destination address";
                  }
    
                  leaf eui-64 {
                    type empty;
                    description
                      "Generate EUI-64 interface ID";
                  }
    
                  leaf primary {
                    type empty;
                    description
                      "Candidate for primary address in system";
                  }
    
                  leaf preferred {
                    type empty;
                    description
                      "Preferred address on interface";
                  }
    
                  leaf master-only {
                    type empty;
                    description
                      "Master management IP address for router";
                  }
    
                  list ndp {
                    key "name";
                    ordered-by user;
                    description
                      "Static Neighbor Discovery Protocol  entries";
                    leaf name {
                      type jt:ipv6addr;
                      description
                        "Destination IP address";
                    }
    
                    leaf l2-interface {
                      type union {
                        type jt:interface-name;
                        type string {
                          pattern "<.*>|$.*";
                        }
                      }
                      description
                        "Layer 2 interface name for NDP entry";
                    }
    
                    choice mac_address_type {
                      leaf mac {
                        type jt:mac-unicast;
                        description
                          "MAC address";
                      }
                      leaf multicast-mac {
                        type jt:mac-multicast;
                        description
                          "Multicast MAC address";
                      }
                    }  // choice mac_address_type
    
                    leaf publish {
                      junos:must "((".. mac" || ".. multicast-mac"))";
                      junos:must-message "either 'mac' or 'multicast-mac' must be configured along with 'publish' statment";
                      type empty;
                      description
                        "Reply to NDP requests for this entry";
                    }
                  }  // list ndp
    
                  list vrrp-inet6-group {
                    junos:must "(!(".. eui-64"))";
                    junos:must-message "'vrrp-inet6-group' is not supported when 'eui-64' is configured";
                    key "name";
                    ordered-by user;
                    description "VRRP group";
                    uses vrrp-group;
                  }  // list vrrp-inet6-group
    
                  leaf virtual-gateway-address {
                    junos:must "(!(".. vrrp-inet6-group"))";
                    junos:must-message "vrrp configuration incompatible with virtual gateway address";
                    type jt:ipv6addr;
                    description
                      "Virtual Gateway IP address";
                  }
    
                  leaf subnet-router-anycast {
                    type empty;
                    description
                      "Create a subnet roter anycast address for this address.";
                  }
                }  // list address
    
                choice dad-disable-choice {
                  leaf dad-disable {
                    type empty;
                    description
                      "Disable duplicate-address-detection";
                  }
                  leaf no-dad-disable {
                    type empty;
                    description
                      "Don't disable duplicate-address-detection";
                  }
                }  // choice dad-disable-choice
    
                leaf destination-udp-port {
                  junos:must "(".. .. .. tunnel encapsulation udp")";
                  junos:must-message "destination-udp-port can be configured only for encapsulation udp on fti interface";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "10010 .. 10019";
                    }
                  }
                  description
                    "Choose destination UDP port number";
                }
              }  // container inet6
    
              container mpls {
                junos:must "(!(".. .. encapsulation frame-relay-ppp"))";
                junos:must-message "family mpls is not supported on encapsulation frame-relay-ppp";
                presence "enable mpls";
                description
                  "MPLS protocol parameters";
                uses apply-advanced;
    
                leaf mtu {
                  type union {
                    type uint32;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description
                    "Protocol family maximum transmission unit";
                }
    
                container filter {
                  description "Packet filtering";
                  uses apply-advanced;
    
                  choice input_choice {
                    leaf input {
                      type string;
                      description
                        "Name of filter applied to received packets";
                    }
                    leaf-list input-list {
                      type string;
                      ordered-by user;
                      description
                        "List of filter modules applied to received packets ";
                    }
                  }  // choice input_choice
    
                  leaf-list input-chain {
                    type string;
                    ordered-by user;
                    description
                      "List of filter modules applied to received packets ";
                  }
    
                  choice output_choice {
                    leaf output {
                      type string;
                      description
                        "Name of filter applied to transmitted packets";
                    }
                    leaf-list output-list {
                      type string;
                      ordered-by user;
                      description
                        "List of filter modules applied to transmitted packets ";
                    }
                  }  // choice output_choice
    
                  leaf-list output-chain {
                    type string;
                    ordered-by user;
                    description
                      "List of filter modules applied to transmitted packets ";
                  }
    
                  leaf group {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 255";
                      }
                    }
                    description
                      "Interface group to which interface belongs";
                  }
                }  // container filter
    
                container policer {
                  description
                    "Interface policing";
                  uses apply-advanced;
    
                  leaf input {
                    type string;
                    description
                      "Name of policer applied to received packets";
                  }
    
                  leaf output {
                    type string;
                    description
                      "Name of policer applied to transmitted packets";
                  }
                }  // container policer
    
                leaf destination-udp-port {
                  junos:must "(".. .. .. tunnel encapsulation udp")";
                  junos:must-message "destination-udp-port can be configured only for encapsulation udp on fti interface";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "10020 .. 10029";
                    }
                  }
                  description
                    "Choose destination UDP port number";
                }
              }  // container mpls
    
              container mlppp {
                junos:must "(!("interfaces ${interface} container-options"))";
                junos:must-message "mlppp is not supported for container interfaces";
                description
                  "Multilink PPP protocol parameters";
                uses apply-advanced;
    
                leaf bundle {
                  junos:must "((!(".. .. .. dial-options") || "interfaces $$-IFL encapsulation multilink-ppp"))";
                  junos:must-message "Bundle interface must be configured";
                  junos:must "((!(".. .. .. pppoe-options") || "interfaces $$-IFL encapsulation multilink-ppp"))";
                  junos:must-message "Bundle interface must be configured";
                  type string;
                  description
                    "Logical interface name this link will join";
                }
    
                choice anchor-points {
                  case case_1 {
                  }  // case case_1
    
                  case case_2 {
                  }  // case case_2
                }  // choice anchor-points
    
                leaf dynamic-profile {
                  junos:must "("dynamic-profiles $$")";
                  junos:must-message "referenced dynamic-profile must be defined";
                  type string {
                    length "1 .. 80";
                  }
                  description
                    " dynamic profile for interface to use";
                }
              }  // container mlppp
    
              container mlfr-end-to-end {
                junos:must "(!(".. .. encapsulation frame-relay-ppp"))";
                junos:must-message "family mlfr-end-to-end is not supported on encapsulation frame-relay-ppp";
                presence
                  "enable mlfr-end-to-end";
                description
                  "Multilink Frame Relay end-to-end protocol parameters";
                uses apply-advanced;
    
                leaf bundle {
                  type union {
                    type jt:interface-unit;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description
                    "Logical interface name this link will join";
                }
              }  // container mlfr-end-to-end
    
              container mlfr-uni-nni {
                junos:must "(!(".. .. encapsulation frame-relay-ppp"))";
                junos:must-message "family mlfr-uni-uni is not supported on encapsulation frame-relay-ppp";
                presence "enable mlfr-uni-nni";
                description
                  "Multilink Frame Relay UNI NNI protocol parameters";
                uses apply-advanced;
    
                leaf bundle {
                  type union {
                    type jt:interface-unit;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description
                    "Logical interface name this link will join";
                }
              }  // container mlfr-uni-nni
    
              container ccc {
                junos:must "(!(".. .. encapsulation frame-relay-ppp"))";
                junos:must-message "family ccc is not supported on encapsulation frame-relay-ppp";
                presence "enable ccc";
                description
                  "Circuit cross-connect parameters";
                uses apply-advanced;
    
                container filter {
                  description "Packet filtering";
                  uses apply-advanced;
    
                  choice input_choice {
                    leaf input {
                      type string;
                      description
                        "Name of filter applied to received packets";
                    }
                    leaf-list input-list {
                      type string;
                      ordered-by user;
                      description
                        "List of filter modules applied to received packets ";
                    }
                  }  // choice input_choice
    
                  leaf-list input-chain {
                    type string;
                    ordered-by user;
                    description
                      "List of filter modules applied to received packets ";
                  }
    
                  choice output_choice {
                    leaf output {
                      type string;
                      description
                        "Name of filter applied to transmitted packets";
                    }
                    leaf-list output-list {
                      type string;
                      ordered-by user;
                      description
                        "List of filter modules applied to transmitted packets ";
                    }
                  }  // choice output_choice
    
                  leaf-list output-chain {
                    type string;
                    ordered-by user;
                    description
                      "List of filter modules applied to transmitted packets ";
                  }
    
                  leaf group {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 255";
                      }
                    }
                    description
                      "Interface group to which interface belongs";
                  }
                }  // container filter
    
                container policer {
                  description
                    "Interface policing";
                  uses apply-advanced;
    
                  leaf input {
                    type string;
                    description
                      "Name of policer applied to received packets";
                  }
    
                  leaf output {
                    type string;
                    description
                      "Name of policer applied to transmitted packets";
                  }
                }  // container policer
    
                leaf translate-fecn-and-becn {
                  type empty;
                  description
                    "Translate FECN and BECN bits";
                }
    
                choice de-or-plp {
                  leaf translate-discard-eligible {
                    type empty;
                    description
                      "Translate DE bit";
                  }
    
                  case case_2 {
                  }  // case case_2
                }  // choice de-or-plp
    
                leaf keep-address-and-control {
                  type empty;
                  description
                    "Don't strip PPP address and control bytes";
                }
              }  // container ccc
    
              container tcc {
                junos:must "(!(".. .. encapsulation frame-relay-ppp"))";
                junos:must-message "family tcc is not supported on encapsulation frame-relay-ppp";
                presence "enable tcc";
                description
                  "Translational cross-connect parameters";
                uses apply-advanced;
    
                container policer {
                  description
                    "Interface policing";
                  uses apply-advanced;
    
                  leaf input {
                    type string;
                    description
                      "Name of policer applied to received packets";
                  }
    
                  leaf output {
                    type string;
                    description
                      "Name of policer applied to transmitted packets";
                  }
                }  // container policer
    
                container proxy {
                  presence "enable proxy";
                  uses apply-advanced;
    
                  leaf inet-address {
                    type jt:ipv4addr;
                    description
                      "Remote host address on non-Ethernet side of Ethernet TCC";
                  }
                }  // container proxy
    
                container remote {
                  presence "enable remote";
                  uses apply-advanced;
    
                  leaf inet-address {
                    type jt:ipv4addr;
                    description
                      "Remote host address on Ethernet side of Ethernet TCC";
                  }
    
                  leaf mac-address {
                    type jt:mac-addr;
                    description
                      "Remote host MAC address on Ethernet side of Ethernet TCC";
                  }
                }  // container remote
              }  // container tcc
    
              container vpls {
                presence "enable vpls";
                description
                  "Virtual private LAN service parameters";
                uses apply-advanced;
    
                leaf core-facing {
                  type empty;
                  description
                    "Interface is core facing";
                }
              }  // container vpls
    
              container bridge {
                junos:must "((!(".. vpls") && (!(".. inet") && (!(".. inet6") && (!(".. ccc") && (!(".. ethernet-switching") && (!(".. iso") && (!(".. llc2") && (!(".. mpls") && (!(".. tcc") && (!(".. pppoe") && !(".. gre"))))))))))))";
                junos:must-message "family bridge and rest of the families are mutually exclusive";
                presence "enable bridge";
                description
                  "Layer-2 bridging parameters";
                uses apply-advanced;
    
                leaf core-facing {
                  type empty;
                  description
                    "Interface is core facing";
                }
    
                leaf interface-mode {
                  type enumeration {
                    enum "access" {
                      junos:must "((!("interfaces ${interface} vlan-tagging") && (!("interfaces ${interface} flexible-vlan-tagging") && !("interfaces ${interface} stacked-vlan-tagging"))))";
                      junos:must-message "interface-mode access is allowed only for untagged interfaces";
                      value 0;
                      description
                        "Interface mode is access";
                    }
                    enum "trunk" {
                      junos:must "(!("interfaces ${interface} no-native-vlan-insert"))";
                      junos:must-message "'interface-mode trunk' must not be configured with 'no-native-vlan-insert'";
                      junos:must "((("protocols mvrp interface ${interface}" || any "routing-instances <*> protocols mvrp interface ${interface}") || (".. vlan-id-list" || (".. isid-list" || (".. inner-vlan-id-list" || (".. vlan members" || ("..inner-vlan members" || (".. vlan-id" || ".. vlan-auto-sense"))))))))";
                      junos:must-message "'interface-mode trunk' must be defined with either 'vlan-id-list','isid-list', 'inner-vlan-id-list' or the interface must be configured for 'protocols mvrp' or 'vlan-auto-sense'";
                      value 1;
                      description
                        "Interface mode is trunk";
                    }
                  }
                  description
                    "Interface mode (access or trunk)";
                }
    
                leaf vlan-auto-sense {
                  junos:must "(".. interface-mode trunk")";
                  junos:must-message "vlan-auto-sense can be enabled only on trunk interfaces";
                  type empty;
                  description
                    "Enable VLAN auto sense on this interface";
                }
    
                leaf bridge-domain-type {
                  type enumeration {
                    enum "svlan" {
                      junos:must "(".. isid-list all-service-groups")";
                      junos:must-message "bridge-domain-type svlan is allowed only for isid tagged interfaces";
                      junos:must "(".. interface-mode trunk")";
                      junos:must-message "bridge-domain-type svlan is allowed only for trunk interfaces";
                      value 0;
                      description
                        "Bridge domain type svlan";
                    }
                    enum "bvlan" {
                      junos:must "(".. isid-list all")";
                      junos:must-message "bridge-domain-type bvlan is allowed only for isid tagged interfaces";
                      junos:must "(".. interface-mode trunk")";
                      junos:must-message "bridge-domain-type bvlan is allowed only for trunk interfaces";
                      value 1;
                      description
                        "Bridge domain type bvlan";
                    }
                  }
                  description
                    "Bridge domain type (svlan or bvlan)";
                }
    
                leaf inter-switch-link {
                  junos:must "(".. interface-mode trunk")";
                  junos:must-message "'Inter switch link' is supported only under trunk interface mode";
                  type empty;
                  description
                    "PVLAN inter switch link";
                }
    
                choice vlan_list {
                  leaf vlan-id {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 4094";
                      }
                    }
                    description
                      "Access mode and trunk mode VLAN membership";
                  }
                  leaf-list vlan-id-list {
                    junos:must "((!(".. .. .. vlan-id") && !(".. .. .. vlan-tags")))";
                    junos:must-message "'vlan-id-list' cannot be used on interface with vlan-id/vlan-tags";
                    junos:must "(!("interfaces ${interface} stacked-vlan-tagging"))";
                    junos:must-message "'vlan-id-list' is not supported on stacked-vlan-tagging mode";
                    junos:must "(".. interface-mode trunk")";
                    junos:must-message "'vlan-id-list' statement supported only under trunk interface mode";
                    type jt:vlan-range;
                    description
                      "Trunk mode VLAN membership for this interface";
                  }
                  leaf-list inner-vlan-id-list {
                    junos:must "((!(".. .. .. vlan-tags inner") && !(".. .. .. vlan-tags inner-range")))";
                    junos:must-message "'inner-vlan-id-list' cannot be used on interface with vlan-tags inner/inner-range";
                    junos:must "((".. .. .. vlan-id" || ".. .. .. vlan-tags"))";
                    junos:must-message "'inner-vlan-id-list' can be used only on interface with vlan-id/vlan-tags";
                    junos:must "("interfaces ${interface} flexible-vlan-tagging")";
                    junos:must-message "'inner-vlan-id-list' is supported only on flexible-vlan-tagging mode";
                    junos:must "(".. interface-mode trunk")";
                    junos:must-message "'inner-vlan-id-list' statement supported only under trunk interface mode";
                    type jt:vlan-range;
                    description
                      "Trunk mode VLAN membership for this interface based on inner VLAN tag";
                  }
                }  // choice vlan_list
    
                container vlan-rewrite {
                  junos:must "((".. inner-vlan-id-list" || ".. vlan-id-list"))";
                  junos:must-message "'vlan-rewrite' statement can be used only with 'vlan-id-list' or inner-vlan-id-list configured";
                  junos:must "(".. interface-mode trunk")";
                  junos:must-message "'vlan-rewrite' statement supported only under trunk interface mode";
                  description
                    "Specify vlan translation";
                  uses apply-advanced;
    
                  list translate {
                    key "name";
                    ordered-by user;
                    description
                      "Translate incoming VLAN tag";
                    leaf name {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 4094";
                        }
                      }
                      description
                        "Specify the incoming VLAN tag";
                    }
    
                    leaf to-vlan-id {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 4094";
                        }
                      }
                      description
                        "Specify the bridge-domain VLAN-ID";
                    }
                  }  // list translate
                }  // container vlan-rewrite
    
                choice isid_list {
                  leaf isid-list {
                    type enumeration {
                      enum "all-service-groups" {
                        junos:must "(".. interface-mode trunk")";
                        junos:must-message "'all-service-groups' statement supported only under trunk interface mode";
                        value 0;
                        description
                          "Map all ISIDs specified under the service-groups";
                      }
                      enum "all" {
                        junos:must "(".. interface-mode trunk")";
                        junos:must-message "'all' statement supported only under trunk interface mode";
                        value 1;
                        description
                          "Map all ISIDs";
                      }
                    }
                    description
                      "Specify the ISID list";
                  }
                }  // choice isid_list
    
                container recovery-timeout {
                  junos:must "(".. storm-control")";
                  junos:must-message "Recovery timeout should be configured only with storm-control";
                  description
                    "Recovery timeout for this interface";
                  leaf time-in-seconds {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "10 .. 3600";
                      }
                    }
                    units "seconds";
                  }
                }  // container recovery-timeout
              }  // container bridge
    
              container ethernet-switching {
                junos:must "((!(".. vpls") && (!(".. inet") && (!(".. inet6") && (!(".. bridge") && (!(".. ccc") && (!(".. iso") && (!(".. llc2") && (!(".. mpls") && (!(".. tcc") && (!(".. pppoe") && !(".. gre"))))))))))))";
                junos:must-message "Family ethernet-switching and rest of the families are mutually exclusive";
                presence
                  "enable ethernet-switching";
                description
                  "Ethernet switching parameters";
                uses ethernet-switching-type;
              }  // container ethernet-switching
    
              container fibre-channel {
                presence "enable fibre-channel";
                description
                  "Fibre channel switching parameters";
                uses fibre-channel-type;
              }  // container fibre-channel
    
              container any {
                presence "enable any";
                description
                  "Parameters for 'any' family";
                uses apply-advanced;
    
                container filter {
                  description
                    "Layer 2 packet filtering";
                  uses apply-advanced;
    
                  leaf input {
                    junos:must "(("firewall family any filter $$" || (!("firewall") && ".. .. .. .. .. .. firewall family any filter $$")))";
                    junos:must-message "referenced filter must be defined under firewall family any";
                    type string {
                      junos:posix-pattern "!^((__.*)|(.{65,}))$";
                      junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                    }
                    description
                      "Name of filter applied to received packets";
                  }
    
                  leaf group {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 255";
                      }
                    }
                    description
                      "Group to which interface belongs";
                  }
                }  // container filter
              }  // container any
            }  // container family
    
            leaf service-domain {
              type enumeration {
                enum "inside" {
                  value 0;
                  description "Inside network";
                }
                enum "outside" {
                  value 1;
                  description "Outside network";
                }
              }
              description
                "Service domain to which interface belongs";
            }
    
            leaf copy-tos-to-outer-ip-header {
              type empty;
              description
                "Copy IP payload header's ToS field to GRE delivery header";
            }
    
            container load-balancing-options {
              junos:must "(!(".. .. load-balancing-options high-availability-options one-to-one"))";
              junos:must-message "load-balancing-options are used when number of active members is more than one";
              description
                "AMS subunit load balancing options";
              uses apply-advanced;
    
              leaf preferred-active {
                junos:must "((".. .. .. load-balancing-options member-interface $$" && !(".. .. .. load-balancing-options high-availability-options many-to-one preferred-backup $$")))";
                junos:must-message "Active should be one of member-interfaces excluding preferred-backup";
                type union {
                  type jt:interface-device;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Preferred active Interface name";
              }
    
              leaf disable-hash {
                junos:must "(".. .. service-domain")";
                junos:must-message "service-domain must be configured if disable-hash is enabled";
                junos:must "(!(".. hash-keys"))";
                junos:must-message "hash-keys must not be configured if disable-hash is enabled";
                type empty;
                description
                  "Hash based distribution is not needed for this subunit";
              }
    
              container hash-keys {
                uses apply-advanced;
    
                leaf-list ingress-key {
                  type enumeration {
                    enum "source-ip" {
                      value 0;
                      description
                        "Source Ip Address";
                    }
                    enum "destination-ip" {
                      value 1;
                      description
                        "Destination Ip Address";
                    }
                    enum "protocol" {
                      value 2;
                      description "Protocol";
                    }
                    enum "iif" {
                      value 3;
                      description
                        "Incoming Interface";
                    }
                  }
                  ordered-by user;
                  description
                    "Hash Key for the ingress direction";
                }
    
                leaf-list egress-key {
                  type enumeration {
                    enum "source-ip" {
                      value 0;
                      status deprecated;
                      description
                        "Source Ip Address";
                    }
                    enum "destination-ip" {
                      value 1;
                      status deprecated;
                      description
                        "Destination Ip Address";
                    }
                    enum "protocol" {
                      value 2;
                      status deprecated;
                      description "Protocol";
                    }
                    enum "oif" {
                      value 3;
                      status deprecated;
                      description
                        "Outgoing Interface";
                    }
                  }
                  ordered-by user;
                  status deprecated;
                  description
                    "Hash Key for the egress direction";
                }
    
                leaf ipv6-source-prefix-length {
                  type enumeration {
                    enum "56" {
                      value 0;
                      description
                        "56 bit IPv6 address prefix";
                    }
                    enum "64" {
                      value 1;
                      description
                        "64 bit IPv6 address prefix";
                    }
                    enum "96" {
                      value 2;
                      description
                        "96 bit IPv6 address prefix";
                    }
                    enum "128" {
                      value 3;
                      description
                        "Complete 128 bit IPv6 address";
                    }
                  }
                  description
                    "IPv6 source prefix length for hash computation";
                }
              }  // container hash-keys
            }  // container load-balancing-options
    
            container interface-state {
              description
                "IRB interface state computation";
              uses apply-advanced;
    
              choice state {
                leaf local-interface {
                  type union {
                    type jt:interface-name;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description
                    "IRB State computation based on loopback AE port state";
                }
              }  // choice state
    
              container hold-time {
                description
                  "Delay before marking interface up or down for defect";
                uses apply-advanced;
    
                leaf up {
                  type union {
                    type uint32;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  units "seconds";
                  description
                    "Delay in seconds before marking IRB interface up";
                }
    
                leaf down {
                  type union {
                    type uint32;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  units "seconds";
                  description
                    "Delay in seconds before marking IRB interface down";
                }
              }  // container hold-time
            }  // container interface-state
    
            leaf virtual-gateway-v4-mac {
              type jt:mac-unicast;
              description
                "Configure virtual gateway IPV4 virtual MAC address";
            }
    
            leaf virtual-gateway-v6-mac {
              type jt:mac-unicast;
              description
                "Configure virtual gateway IPV6 virtual MAC address";
            }
    
            leaf etree-ac-role {
              type enumeration {
                enum "root" {
                  value 0;
                  description
                    "ETREE root interface";
                }
                enum "leaf" {
                  value 1;
                  description
                    "ETREE leaf interface";
                }
              }
              description
                "ETREE attachment circuit role";
            }
          }  // list unit
    
          container no-partition {
            description
              "Use channelizable interface as clear channel";
            leaf interface-type {
              type enumeration {
                enum "e1" {
                  value 0;
                  description "E1 interface";
                }
                enum "t1" {
                  value 1;
                  description "T1 interface";
                }
                enum "at" {
                  value 2;
                  description "ATM interface";
                }
                enum "t3" {
                  value 3;
                  description "T3 interface";
                }
                enum "e3" {
                  value 4;
                  description "E3 interface";
                }
                enum "ct3" {
                  value 5;
                  description
                    "Channelized T3 interface";
                }
                enum "so" {
                  value 6;
                  description "SONET interface";
                }
                enum "cau4" {
                  value 7;
                  description "CAU4 interface";
                }
              }
              description "Interface type";
            }
          }  // container no-partition
    
          list partition {
            junos:must "(!(".. no-partition"))";
            junos:must-message "cannot set partitions with no-partition attribute turned on";
            key "name";
            ordered-by user;
            description
              "Channelized interface partition";
            leaf name {
              type string;
              description
                "Sublevel interface partition index (for example, 1, 3-4)";
            }
    
            leaf oc-slice {
              type string;
              description
                "Range of SONET/SDH slices (for example, 1, 7-9)";
            }
    
            leaf timeslots {
              type string;
              description
                "Timeslots [(1..24) for T1, (1..31) for E1]; for example, 1-3,4,9,22-24 (no spaces)";
            }
    
            leaf interface-type {
              type enumeration {
                enum "ds" {
                  value 0;
                  description "DS0 interface";
                }
                enum "e1" {
                  value 1;
                  description "E1 interface";
                }
                enum "t1" {
                  value 2;
                  description "T1 interface";
                }
                enum "at" {
                  value 3;
                  description "ATM interface";
                }
                enum "ct1" {
                  value 4;
                  description
                    "Channelized T1 interface";
                }
                enum "ce1" {
                  value 5;
                  description
                    "Channelized E1 interface";
                }
                enum "t3" {
                  value 6;
                  description "T3 interface";
                }
                enum "ct3" {
                  value 7;
                  description
                    "Channelized T3 interface";
                }
                enum "e3" {
                  value 8;
                  description "E3 interface";
                }
                enum "so" {
                  value 9;
                  description "SONET interface";
                }
                enum "coc1" {
                  value 10;
                  description
                    "Channelized OC1 interface";
                }
                enum "cau4" {
                  value 11;
                  description
                    "Channelized AU4 interface";
                }
                enum "dc" {
                  junos:must "(any ".. .. partition <*> interface-type bc")";
                  junos:must-message "BC partition must be defined for PRI";
                  value 12;
                  description
                    "D channel interface";
                }
                enum "bc" {
                  junos:must "(any ".. .. partition <*> interface-type dc")";
                  junos:must-message "DC partition must be defined for PRI";
                  value 13;
                  description
                    "B channel interface";
                }
              }
              description
                "Sublevel interface type";
            }
          }  // list partition
        }  // grouping interfaces_type
    
        grouping juniper-class-of-service-options {
          uses apply-advanced;
    
          container classifiers {
            description
              "Classify incoming packets based on code point value";
            uses apply-advanced;
    
            list dscp {
              key "name";
              ordered-by user;
              description
                "Differentiated Services code point classifier";
              leaf name {
                junos:must "((".. forwarding-class" || ".. import"))";
                junos:must-message "'At least one 'forwarding class' or 'import' classifier definition is required for classifier configuration";
                type string {
                  length "1 .. 64";
                }
                description "Classifier name";
              }
    
              uses apply-advanced;
    
              leaf import {
                type union {
                  type string {
                    pattern "default";
                  }
                  type string {
                    length "1 .. 64";
                  }
                }
                description
                  "Include this classifier in this definition";
              }
    
              list forwarding-class {
                key "name";
                description
                  "Define a classification of code point aliases";
                leaf name {
                  type string {
                    length "1 .. 64";
                  }
                  description
                    "Forwarding class name";
                }
    
                uses apply-advanced;
    
                list loss-priority {
                  key "name";
                  description
                    "Classify code points to a loss priority";
                  leaf name {
                    type enumeration {
                      enum "low" {
                        value 0;
                        description
                          "Code points to classify to loss priority low";
                      }
                      enum "high" {
                        value 1;
                        description
                          "Code points to classify to loss priority high";
                      }
                      enum "medium-low" {
                        value 2;
                        description
                          "Code points to classify to loss priority medium-low";
                      }
                      enum "medium-high" {
                        value 3;
                        description
                          "Code points to classify to loss priority medium-high";
                      }
                    }
                  }
    
                  leaf-list code-points {
                    type string;
                    ordered-by user;
                    description
                      "List of code point aliases and/or bit strings";
                  }
                }  // list loss-priority
              }  // list forwarding-class
            }  // list dscp
    
            list dscp-ipv6 {
              key "name";
              ordered-by user;
              description
                "Differentiated Services code point classifier IPv6";
              leaf name {
                junos:must "((".. forwarding-class" || ".. import"))";
                junos:must-message "'At least one 'forwarding class' or 'import' classifier definition is required for classifier configuration";
                type string {
                  length "1 .. 64";
                }
                description "Classifier name";
              }
    
              uses apply-advanced;
    
              leaf import {
                type union {
                  type string {
                    pattern "default";
                  }
                  type string {
                    length "1 .. 64";
                  }
                }
                description
                  "Include this classifier in this definition";
              }
    
              list forwarding-class {
                key "name";
                description
                  "Define a classification of code point aliases";
                leaf name {
                  type string {
                    length "1 .. 64";
                  }
                  description
                    "Forwarding class name";
                }
    
                uses apply-advanced;
    
                list loss-priority {
                  key "name";
                  description
                    "Classify code points to a loss priority";
                  leaf name {
                    type enumeration {
                      enum "low" {
                        value 0;
                        description
                          "Code points to classify to loss priority low";
                      }
                      enum "high" {
                        value 1;
                        description
                          "Code points to classify to loss priority high";
                      }
                      enum "medium-low" {
                        value 2;
                        description
                          "Code points to classify to loss priority medium-low";
                      }
                      enum "medium-high" {
                        value 3;
                        description
                          "Code points to classify to loss priority medium-high";
                      }
                    }
                  }
    
                  leaf-list code-points {
                    type string;
                    ordered-by user;
                    description
                      "List of code point aliases and/or bit strings";
                  }
                }  // list loss-priority
              }  // list forwarding-class
            }  // list dscp-ipv6
    
            list exp {
              key "name";
              ordered-by user;
              description "MPLS EXP classifier";
              leaf name {
                junos:must "((".. forwarding-class" || ".. import"))";
                junos:must-message "'At least one 'forwarding class' or 'import' classifier definition is required for classifier configuration";
                type string {
                  length "1 .. 64";
                }
                description "Classifier name";
              }
    
              uses apply-advanced;
    
              leaf import {
                type union {
                  type string {
                    pattern "default";
                  }
                  type string {
                    length "1 .. 64";
                  }
                }
                description
                  "Include this classifier in this definition";
              }
    
              list forwarding-class {
                key "name";
                description
                  "Define a classification of code point aliases";
                leaf name {
                  type string {
                    length "1 .. 64";
                  }
                  description
                    "Forwarding class name";
                }
    
                uses apply-advanced;
    
                list loss-priority {
                  key "name";
                  description
                    "Classify code points to a loss priority";
                  leaf name {
                    type enumeration {
                      enum "low" {
                        value 0;
                        description
                          "Code points to classify to loss priority low";
                      }
                      enum "high" {
                        value 1;
                        description
                          "Code points to classify to loss priority high";
                      }
                      enum "medium-low" {
                        value 2;
                        description
                          "Code points to classify to loss priority medium-low";
                      }
                      enum "medium-high" {
                        value 3;
                        description
                          "Code points to classify to loss priority medium-high";
                      }
                    }
                  }
    
                  leaf-list code-points {
                    type string;
                    ordered-by user;
                    description
                      "List of code point aliases and/or bit strings";
                  }
                }  // list loss-priority
              }  // list forwarding-class
            }  // list exp
    
            list ieee-802.1 {
              key "name";
              ordered-by user;
              description
                "IEEE-802.1 classifier";
              leaf name {
                junos:must "((".. forwarding-class" || ".. import"))";
                junos:must-message "'At least one 'forwarding class' or 'import' classifier definition is required for classifier configuration";
                type string {
                  length "1 .. 64";
                }
                description "Classifier name";
              }
    
              uses apply-advanced;
    
              leaf import {
                type union {
                  type string {
                    pattern "default";
                  }
                  type string {
                    length "1 .. 64";
                  }
                }
                description
                  "Include this classifier in this definition";
              }
    
              list forwarding-class {
                key "name";
                description
                  "Define a classification of code point aliases";
                leaf name {
                  type string {
                    length "1 .. 64";
                  }
                  description
                    "Forwarding class name";
                }
    
                uses apply-advanced;
    
                list loss-priority {
                  key "name";
                  description
                    "Classify code points to a loss priority";
                  leaf name {
                    type enumeration {
                      enum "low" {
                        value 0;
                        description
                          "Code points to classify to loss priority low";
                      }
                      enum "high" {
                        value 1;
                        description
                          "Code points to classify to loss priority high";
                      }
                      enum "medium-low" {
                        value 2;
                        description
                          "Code points to classify to loss priority medium-low";
                      }
                      enum "medium-high" {
                        value 3;
                        description
                          "Code points to classify to loss priority medium-high";
                      }
                    }
                  }
    
                  leaf-list code-points {
                    type string;
                    ordered-by user;
                    description
                      "List of code point aliases and/or bit strings";
                  }
                }  // list loss-priority
              }  // list forwarding-class
            }  // list ieee-802.1
    
            list inet-precedence {
              key "name";
              ordered-by user;
              description
                "IPv4 precedence classifier";
              leaf name {
                junos:must "((".. forwarding-class" || ".. import"))";
                junos:must-message "'At least one 'forwarding class' or 'import' classifier definition is required for classifier configuration";
                type string {
                  length "1 .. 64";
                }
                description "Classifier name";
              }
    
              uses apply-advanced;
    
              leaf import {
                type union {
                  type string {
                    pattern "default";
                  }
                  type string {
                    length "1 .. 64";
                  }
                }
                description
                  "Include this classifier in this definition";
              }
    
              list forwarding-class {
                key "name";
                description
                  "Define a classification of code point aliases";
                leaf name {
                  type string {
                    length "1 .. 64";
                  }
                  description
                    "Forwarding class name";
                }
    
                uses apply-advanced;
    
                list loss-priority {
                  key "name";
                  description
                    "Classify code points to a loss priority";
                  leaf name {
                    type enumeration {
                      enum "low" {
                        value 0;
                        description
                          "Code points to classify to loss priority low";
                      }
                      enum "high" {
                        value 1;
                        description
                          "Code points to classify to loss priority high";
                      }
                      enum "medium-low" {
                        value 2;
                        description
                          "Code points to classify to loss priority medium-low";
                      }
                      enum "medium-high" {
                        value 3;
                        description
                          "Code points to classify to loss priority medium-high";
                      }
                    }
                  }
    
                  leaf-list code-points {
                    type string;
                    ordered-by user;
                    description
                      "List of code point aliases and/or bit strings";
                  }
                }  // list loss-priority
              }  // list forwarding-class
            }  // list inet-precedence
    
            list ieee-802.1ad {
              key "name";
              ordered-by user;
              description
                "IEEE-802.1ad (DEI) classifier";
              leaf name {
                junos:must "((".. forwarding-class" || ".. import"))";
                junos:must-message "'At least one 'forwarding class' or 'import' classifier definition is required for classifier configuration";
                type string {
                  length "1 .. 64";
                }
                description "Classifier name";
              }
    
              uses apply-advanced;
    
              leaf import {
                type union {
                  type string {
                    pattern "default";
                  }
                  type string {
                    length "1 .. 64";
                  }
                }
                description
                  "Include this classifier in this definition";
              }
    
              list forwarding-class {
                key "name";
                description
                  "Define a classification of code point aliases";
                leaf name {
                  type string {
                    length "1 .. 64";
                  }
                  description
                    "Forwarding class name";
                }
    
                uses apply-advanced;
    
                list loss-priority {
                  key "name";
                  description
                    "Classify code points to a loss priority";
                  leaf name {
                    type enumeration {
                      enum "low" {
                        value 0;
                        description
                          "Code points to classify to loss priority low";
                      }
                      enum "high" {
                        value 1;
                        description
                          "Code points to classify to loss priority high";
                      }
                      enum "medium-low" {
                        value 2;
                        description
                          "Code points to classify to loss priority medium-low";
                      }
                      enum "medium-high" {
                        value 3;
                        description
                          "Code points to classify to loss priority medium-high";
                      }
                    }
                  }
    
                  leaf-list code-points {
                    type string;
                    ordered-by user;
                    description
                      "List of code point aliases and/or bit strings";
                  }
                }  // list loss-priority
              }  // list forwarding-class
            }  // list ieee-802.1ad
          }  // container classifiers
    
          container traffic-class-map {
            description
              "Packet input priority map based on incoming packets code point";
            uses apply-advanced;
          }  // container traffic-class-map
    
          list policy-map {
            key "name";
            max-elements 65535;
            description
              "Policy-map describing the packet marking rule";
            leaf name {
              type string {
                length "1 .. 64";
              }
              description "Policy-map name";
            }
    
            uses apply-advanced;
          }  // list policy-map
    
          container loss-priority-maps {
            description
              "Map loss priority of incoming packets based on code point value";
            uses apply-advanced;
          }  // container loss-priority-maps
    
          container loss-priority-rewrites {
            description
              "Rewrite code point of outgoing packet based on loss priority";
            uses apply-advanced;
          }  // container loss-priority-rewrites
    
          container code-point-aliases {
            description
              "Mapping of code point aliases to bit strings";
            uses apply-advanced;
    
            list dscp {
              key "name";
              description
                "Differentiated Services code point aliases";
              leaf name {
                type string {
                  junos:posix-pattern "^([a-zA-Z].{0,63})$";
                  junos:pattern-message "Must be string of 64 characters or less beginning with letter";
                }
                description "DSCP alias name";
              }
    
              leaf bits {
                type string {
                  junos:posix-pattern "^([01]{6})$";
                  junos:pattern-message "Must be of form xxxxxx, where x is 1 or 0";
                }
                description "DSCP 6-bit pattern";
              }
            }  // list dscp
    
            list dscp-ipv6 {
              key "name";
              description
                "Differentiated Services code point aliases IPv6";
              leaf name {
                type string {
                  junos:posix-pattern "^([a-zA-Z].{0,63})$";
                  junos:pattern-message "Must be string of 64 characters or less beginning with letter";
                }
                description
                  "DSCP IPv6 alias name";
              }
    
              leaf bits {
                type string {
                  junos:posix-pattern "^([01]{6})$";
                  junos:pattern-message "Must be of form xxxxxx, where x is 1 or 0";
                }
                description "DSCP 6-bit pattern";
              }
            }  // list dscp-ipv6
    
            list exp {
              key "name";
              description
                "MPLS EXP code point aliases";
              leaf name {
                type string {
                  junos:posix-pattern "^([a-zA-Z].{0,63})$";
                  junos:pattern-message "Must be string of 64 characters or less beginning with letter";
                }
                description "EXP alias name";
              }
    
              leaf bits {
                type string {
                  junos:posix-pattern "^([01]{3})$";
                  junos:pattern-message "Must be of form xxx, where x is 0 or 1";
                }
                description "EXP 3-bit pattern";
              }
            }  // list exp
    
            list ieee-802.1 {
              key "name";
              description
                "IEEE-802.1 code point aliases";
              leaf name {
                type string {
                  junos:posix-pattern "^([a-zA-Z].{0,63})$";
                  junos:pattern-message "Must be string of 64 characters or less beginning with letter";
                }
                description
                  "IEEE-802.1 alias name";
              }
    
              leaf bits {
                type string {
                  junos:posix-pattern "^([01]{3})$";
                  junos:pattern-message "Must be of form xxx, where x is 0 or 1";
                }
                description
                  "IEEE-802.1 3-bit pattern";
              }
            }  // list ieee-802.1
    
            list inet-precedence {
              key "name";
              description
                "IPv4 precedence code point aliases";
              leaf name {
                type string {
                  junos:posix-pattern "^([a-zA-Z].{0,63})$";
                  junos:pattern-message "Must be string of 64 characters or less beginning with letter";
                }
                description
                  "IPv4 precedence alias name";
              }
    
              leaf bits {
                type string {
                  junos:posix-pattern "^([01]{3})$";
                  junos:pattern-message "Must be of form xxx, where x is 0 or 1";
                }
                description
                  "IPv4 precedence 3-bit pattern";
              }
            }  // list inet-precedence
    
            list ieee-802.1ad {
              key "name";
              description
                "IEEE-802.1ad (DEI) code point aliases";
              leaf name {
                type string {
                  junos:posix-pattern "^([a-zA-Z].{0,63})$";
                  junos:pattern-message "Must be string of 64 characters or less beginning with letter";
                }
                description
                  "IEEE-802.1ad (DEI) alias name";
              }
    
              leaf bits {
                type string {
                  junos:posix-pattern "^([01]{4})$";
                  junos:pattern-message "Must be of form xxxx, where x is 0 or 1";
                }
                description
                  "IEEE-802.1ad (DEI) 4-bit pattern";
              }
            }  // list ieee-802.1ad
          }  // container code-point-aliases
    
          container translation-table {
            description "Translation table";
            uses apply-advanced;
          }  // container translation-table
    
          container host-outbound-traffic {
            description
              "Classify and mark host traffic to forwarding engine";
            uses apply-advanced;
    
            leaf forwarding-class {
              type string {
                length "1 .. 64";
              }
              description
                "Classification of host traffic to forwarding engine";
            }
    
            leaf dscp-code-point {
              type string {
                junos:posix-pattern "^(([01]{6})|([a-zA-Z].{0,63}))$";
                junos:pattern-message "Not 6-bit pattern or code point alias";
              }
              description
                "Static DSCP code point of egress host traffic";
            }
    
            leaf override-firewall {
              type empty;
              description
                "Override firewall filter actions for RE generated traffic";
            }
    
            container tcp {
              presence "enable tcp";
              description
                "Settings for host outbound TCP packets";
              uses apply-advanced;
    
              leaf raise-internet-control-priority {
                type empty;
                description
                  "Place packets with IP Precedence set to Internet control into Q3 (network-control)";
              }
            }  // container tcp
    
            container protocol {
              description
                "Settings for specific host outbound protocol packets";
              uses apply-advanced;
    
              container isis-over-gre {
                description
                  "Settings for ISIS over GRE packets";
                uses apply-advanced;
    
                leaf dscp-code-point {
                  type string {
                    junos:posix-pattern "^(([01]{6})|([a-zA-Z].{0,63}))$";
                    junos:pattern-message "Not 6-bit pattern or code point alias";
                  }
                  description
                    "Static DSCP code point of egress host traffic";
                }
              }  // container isis-over-gre
            }  // container protocol
          }  // container host-outbound-traffic
    
          list drop-profiles {
            key "name";
            description
              "Random Early Drop (RED) data point map";
            leaf name {
              type string {
                length "1 .. 64";
              }
              description "Drop profile name";
            }
    
            uses apply-advanced;
    
            list fill-level {
              key "name";
              description
                "Fill-level value of data point";
              leaf name {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 100";
                  }
                }
                description
                  "Percentage the queue is full";
              }
    
              leaf drop-probability {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 100";
                  }
                }
                description
                  "Probability packet will be dropped";
              }
            }  // list fill-level
    
            container interpolate {
              description
                "Data points interpolated";
              uses apply-advanced;
    
              leaf-list fill-level {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 100";
                  }
                }
                ordered-by user;
                description
                  "Data points for queue full percentage";
              }
    
              leaf-list drop-probability {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 100";
                  }
                }
                ordered-by user;
                description
                  "Data points for packet drop probability";
              }
            }  // container interpolate
          }  // list drop-profiles
    
          leaf tri-color {
            type empty;
            description
              "Enable tricolor marking";
          }
    
          container shared-buffer {
            description
              "Shared buffer configuration";
            uses apply-advanced;
    
            leaf percent {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "5 .. 100";
                }
              }
              description
                "Percentage of shared buffer to be used";
            }
          }  // container shared-buffer
    
          container forwarding-classes {
            description
              "One or more mappings of forwarding class to queue number";
            uses apply-advanced;
    
            list class {
              junos:must "(!(".. queue"))";
              junos:must-message "'queue' and 'class' cannot coexist";
              key "name";
              max-elements 16;
              description
                "Forwarding class to map to queue number";
              leaf name {
                type string {
                  length "1 .. 64";
                }
                description
                  "Name of forwarding class";
              }
    
              leaf queue-num {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32;
                }
                description "Queue number";
              }
    
              leaf priority {
                type enumeration {
                  enum "low" {
                    value 0;
                    description
                      "Low fabric priority";
                  }
                  enum "high" {
                    value 1;
                    description
                      "High fabric priority";
                  }
                }
                description "Fabric priority";
              }
            }  // list class
    
            list queue {
              key "name";
              description
                "Queue number to map to forwarding class";
              leaf name {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32;
                }
                description "Queue number";
              }
    
              leaf class-name {
                type string {
                  length "1 .. 64";
                }
                description
                  "Forwarding class name";
              }
    
              leaf priority {
                type enumeration {
                  enum "low" {
                    value 0;
                    description
                      "Fabric priority low";
                  }
                  enum "high" {
                    value 1;
                    description
                      "Fabric priority high";
                  }
                }
                description "Fabric priority";
              }
            }  // list queue
          }  // container forwarding-classes
    
          container restricted-queues {
            description
              "Map forwarding classes to restricted queues";
            uses apply-advanced;
    
            list forwarding-class {
              key "name";
              description
                "Forwarding class to map to a restricted queue";
              leaf name {
                type string {
                  length "1 .. 64";
                }
                description
                  "Forwarding class name";
              }
    
              leaf rqueue-num {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 3";
                  }
                }
                description
                  "Restricted queue number";
              }
            }  // list forwarding-class
          }  // container restricted-queues
    
          list traffic-control-profiles {
            key "name";
            description
              "Traffic shaping and scheduling profiles";
            leaf name {
              type string {
                length "1 .. 64";
              }
              description
                "Traffic control profile name";
            }
    
            uses apply-advanced;
    
            leaf scheduler-map {
              type string {
                length "1 .. 64";
              }
              description
                "Mapping of forwarding classes to packet schedulers";
            }
    
            leaf atm-service {
              type enumeration {
                enum "cbr" {
                  value 0;
                  description
                    "Constant bit rate";
                }
                enum "rtvbr" {
                  value 1;
                  description
                    "Real-time variable bit rate";
                }
                enum "nrtvbr" {
                  value 2;
                  description
                    "Non-real-time variable bit rate";
                }
              }
              description "ATM service category";
            }
    
            leaf peak-rate {
              type string;
              units "cps";
              description
                "ATM Peak Cell Rate (PCR)";
            }
    
            leaf sustained-rate {
              type string;
              units "cps";
              description
                "ATM Sustained Cell Rate (SCR)";
            }
    
            leaf max-burst-size {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint64 {
                  range "1 .. 4000";
                }
              }
              units "cells";
              description
                "ATM Maximum Burst Size (MBS)";
            }
    
            container shaping-rate {
              description "Shaping rate";
              choice shaping_rate_choice {
                leaf rate {
                  junos:must "(!("interfaces ${interface} aggregated-ether-options link-speed mixed"))";
                  junos:must-message "Scheduler shaping-rate in bits per second is incompatible with link-speed mixed";
                  type string;
                  units "bits per second";
                  description
                    "Shaping rate as an absolute rate";
                }
                leaf percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "Shaping rate as a percentage";
                }
              }  // choice shaping_rate_choice
    
              leaf burst-size {
                type string;
                units "bytes";
                description
                  "Shaping rate burst size";
              }
            }  // container shaping-rate
    
            container overhead-accounting {
              description "Overhead accounting";
              leaf mode {
                type string {
                  length "1 .. 64";
                }
              }
    
              leaf bytes {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type int32 {
                    range "-120 .. 124";
                  }
                }
                description "Byte adjust value";
              }
    
              leaf frame-mode-bytes {
                junos:must "(!(".. bytes"))";
                junos:must-message "cannot specify both bytes and frame-mode-bytes";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type int32 {
                    range "-120 .. 124";
                  }
                }
                description
                  "Overhead bytes when in frame-mode";
              }
    
              leaf cell-mode-bytes {
                junos:must "(!(".. bytes"))";
                junos:must-message "cannot specify both bytes and cell-mode-bytes";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type int32 {
                    range "-120 .. 124";
                  }
                }
                description
                  "Overhead bytes when in cell-mode";
              }
            }  // container overhead-accounting
    
            container shaping-rate-priority-strict-high {
              description
                "Shaping rate for strict high priority traffic";
              choice shaping_rate_choice {
                leaf rate {
                  type string;
                  units "bits per second";
                  description
                    "Shaping rate in bits per second";
                }
                leaf percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "Shaping rate as a percentage";
                }
              }  // choice shaping_rate_choice
    
              leaf burst-size {
                type string;
                units "bytes";
                description
                  "Shaping rate burst size";
              }
            }  // container shaping-rate-priority-strict-high
    
            container shaping-rate-priority-high {
              description
                "Shaping rate for high priority traffic";
              choice shaping_rate_choice {
                leaf rate {
                  type string;
                  units "bits per second";
                  description
                    "Shaping rate in bits per second";
                }
                leaf percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "Shaping rate as a percentage";
                }
              }  // choice shaping_rate_choice
    
              leaf burst-size {
                type string;
                units "bytes";
                description
                  "Shaping rate burst size";
              }
            }  // container shaping-rate-priority-high
    
            container shaping-rate-priority-medium {
              description
                "Shaping rate for medium priority traffic";
              choice shaping_rate_choice {
                leaf rate {
                  type string;
                  units "bits per second";
                  description
                    "Shaping rate in bits per second";
                }
                leaf percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "Shaping rate as a percentage";
                }
              }  // choice shaping_rate_choice
    
              leaf burst-size {
                type string;
                units "bytes";
                description
                  "Shaping rate burst size";
              }
            }  // container shaping-rate-priority-medium
    
            container shaping-rate-priority-medium-low {
              description
                "Shaping rate for medium low priority traffic";
              choice shaping_rate_choice {
                leaf rate {
                  type string;
                  units "bits per second";
                  description
                    "Shaping rate in bits per second";
                }
                leaf percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "Shaping rate as a percentage";
                }
              }  // choice shaping_rate_choice
    
              leaf burst-size {
                type string;
                units "bytes";
                description
                  "Shaping rate burst size";
              }
            }  // container shaping-rate-priority-medium-low
    
            container shaping-rate-priority-low {
              description
                "Shaping rate for low priority traffic";
              choice shaping_rate_choice {
                leaf rate {
                  type string;
                  units "bits per second";
                  description
                    "Shaping rate in bits per second";
                }
                leaf percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "Shaping rate as a percentage";
                }
              }  // choice shaping_rate_choice
    
              leaf burst-size {
                type string;
                units "bytes";
                description
                  "Shaping rate burst size";
              }
            }  // container shaping-rate-priority-low
    
            container shaping-rate-excess-high {
              description
                "Shaping rate for excess high traffic";
              choice shaping_rate_choice {
                leaf rate {
                  type string;
                  units "bits per second";
                  description
                    "Shaping rate in bits per second";
                }
                leaf percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "Shaping rate as a percentage";
                }
              }  // choice shaping_rate_choice
    
              leaf burst-size {
                type string;
                units "bytes";
                description
                  "Shaping rate burst size";
              }
            }  // container shaping-rate-excess-high
    
            container shaping-rate-excess-low {
              description
                "Shaping rate for excess low traffic";
              choice shaping_rate_choice {
                leaf rate {
                  type string;
                  units "bits per second";
                  description
                    "Shaping rate in bits per second";
                }
                leaf percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "Shaping rate as a percentage";
                }
              }  // choice shaping_rate_choice
    
              leaf burst-size {
                type string;
                units "bytes";
                description
                  "Shaping rate burst size";
              }
            }  // container shaping-rate-excess-low
    
            container shaping-rate-excess-medium-high {
              description
                "Shaping rate for excess medium-high traffic";
              choice shaping_rate_choice {
                leaf rate {
                  type string;
                  units "bits per second";
                  description
                    "Shaping rate in bits per second";
                }
                leaf percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "Shaping rate as a percentage";
                }
              }  // choice shaping_rate_choice
    
              leaf burst-size {
                type string;
                units "bytes";
                description
                  "Shaping rate burst size";
              }
            }  // container shaping-rate-excess-medium-high
    
            container shaping-rate-excess-medium-low {
              description
                "Shaping rate for excess medium-low traffic";
              choice shaping_rate_choice {
                leaf rate {
                  type string;
                  units "bits per second";
                  description
                    "Shaping rate in bits per second";
                }
                leaf percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "Shaping rate as a percentage";
                }
              }  // choice shaping_rate_choice
    
              leaf burst-size {
                type string;
                units "bytes";
                description
                  "Shaping rate burst size";
              }
            }  // container shaping-rate-excess-medium-low
    
            container guaranteed-rate {
              description "Guaranteed rate";
              choice guaranteed_rate_choice {
                leaf rate {
                  type string;
                  units "bits per second";
                  description
                    "Guaranteed rate as an absolute rate";
                }
                leaf percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "Guaranteed rate as a percentage";
                }
              }  // choice guaranteed_rate_choice
    
              leaf burst-size {
                type string;
                units "bytes";
                description
                  "Guaranteed rate burst size";
              }
            }  // container guaranteed-rate
    
            container excess-rate {
              junos:must "(!((".. excess-rate-high" || (".. excess-rate-low" || (".. excess-rate-medium-high" || ".. excess-rate-medium-low")))))";
              junos:must-message "cannot specify both excess-rate and excess-rate-high or excess-rate-low or excess-rate-medium-high or excess-rate-medium-low";
              description
                "Excess bandwidth sharing proportion";
              choice excess_rate_choice {
                leaf proportion {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 1000";
                    }
                  }
                  description
                    "Excess rate as a proportion";
                }
                leaf percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "Excess rate as a percentage";
                }
              }  // choice excess_rate_choice
            }  // container excess-rate
    
            container excess-rate-high {
              junos:must "(!(".. excess-rate"))";
              junos:must-message "cannot specify both excess-rate and excess-rate-high";
              description
                "Excess bandwidth sharing for excess-high priority";
              choice excess_rate_choice {
                leaf proportion {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 1000";
                    }
                  }
                  description
                    "Excess rate as a proportion";
                }
                leaf percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "Excess rate as a percentage";
                }
              }  // choice excess_rate_choice
            }  // container excess-rate-high
    
            container excess-rate-medium-high {
              junos:must "(!(".. excess-rate"))";
              junos:must-message "cannot specify both excess-rate and excess-rate-medium-high";
              description
                "Excess bandwidth sharing for excess-medium-high priority";
              choice excess_rate_choice {
                leaf proportion {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 1000";
                    }
                  }
                  description
                    "Excess rate as a proportion";
                }
                leaf percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "Excess rate as a percentage";
                }
              }  // choice excess_rate_choice
            }  // container excess-rate-medium-high
    
            container excess-rate-low {
              junos:must "(!(".. excess-rate"))";
              junos:must-message "cannot specify both excess-rate and excess-rate-low";
              description
                "Excess bandwidth sharing for excess-low priority";
              choice excess_rate_choice {
                leaf proportion {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 1000";
                    }
                  }
                  description
                    "Excess rate as a proportion";
                }
                leaf percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "Excess rate as a percentage";
                }
              }  // choice excess_rate_choice
            }  // container excess-rate-low
    
            container excess-rate-medium-low {
              junos:must "(!(".. excess-rate"))";
              junos:must-message "cannot specify both excess-rate and excess-rate-medium-low";
              description
                "Excess bandwidth sharing for excess-medium-low priority";
              choice excess_rate_choice {
                leaf proportion {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 1000";
                    }
                  }
                  description
                    "Excess rate as a proportion";
                }
                leaf percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "Excess rate as a percentage";
                }
              }  // choice excess_rate_choice
            }  // container excess-rate-medium-low
    
            choice delay_buffer_sizing {
              container delay-buffer-rate {
                description "Delay buffer rate";
                choice delay_buffer_rate_choice {
                  leaf rate {
                    type string;
                    units "bits per second";
                    description
                      "Delay buffer rate as an absolute rate";
                  }
                  leaf percent {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 100";
                      }
                    }
                    description
                      "Delay buffer rate as a percentage";
                  }
                  leaf cps {
                    type string;
                    units "cells per second";
                    description
                      "Delay buffer rate as an absolute cells per second rate";
                  }
                }  // choice delay_buffer_rate_choice
              }  // container delay-buffer-rate
            }  // choice delay_buffer_sizing
    
            container adjust-minimum {
              description
                "Minimum shaping-rate when adjusted";
              leaf rate {
                type string;
                units "bits per second";
                description
                  "Minimum shaping rate in bits per second";
              }
            }  // container adjust-minimum
          }  // list traffic-control-profiles
    
          list forwarding-class-sets {
            key "name";
            description "Forwarding class sets";
            leaf name {
              type string {
                length "1 .. 64";
              }
              description "Forwarding class set";
            }
    
            uses apply-advanced;
    
            list class {
              key "name";
              description "Forwarding class";
              leaf name {
                type string {
                  length "1 .. 64";
                }
                description "Class name";
              }
    
              uses apply-advanced;
            }  // list class
          }  // list forwarding-class-sets
    
          list congestion-notification-profile {
            key "name";
            description
              "Congestion notification profile";
            leaf name {
              type string {
                length "1 .. 64";
              }
              description
                "Congestion notification name";
            }
    
            uses apply-advanced;
    
            container input {
              description
                "Input congestion notification components";
              uses apply-advanced;
    
              container ieee-802.1 {
                description
                  "IEEE 802.1 code point";
                uses apply-advanced;
    
                list code-point {
                  key "name";
                  max-elements 8;
                  description
                    "IEEE 802.1 code point";
                  leaf name {
                    type string {
                      junos:posix-pattern "^([01]{3})$";
                      junos:pattern-message "Must be of form xxx, where x is 0 or 1";
                    }
                    description
                      "IEEE 802.1 code point";
                  }
    
                  uses apply-advanced;
    
                  leaf pfc {
                    type empty;
                    description "PFC";
                  }
    
                  choice qfc-control {
                    case case_1 {
                    }  // case case_1
                    container qcn {
                      presence "enable qcn";
                      description "QCN";
                      uses apply-advanced;
    
                      container defense-mode-edge {
                        description
                          "Choose the defense mode edge";
                        uses apply-advanced;
    
                        container alternate-priority {
                          description
                            "Choose the alternate priority for defense mode edge";
                          uses apply-advanced;
    
                          leaf bits {
                            type string {
                              junos:posix-pattern "^([01]{3})$";
                              junos:pattern-message "Must be of form xxx, where x is 0 or 1";
                            }
                            description
                              "IEEE 802.1 code point";
                          }
                        }  // container alternate-priority
                      }  // container defense-mode-edge
                    }  // container qcn
                  }  // choice qfc-control
                }  // list code-point
              }  // container ieee-802.1
            }  // container input
    
            container output {
              description
                "Output congestion notification components";
              uses apply-advanced;
    
              list class {
                key "name";
                max-elements 16;
                description "Forwarding class";
                leaf name {
                  type string {
                    length "1 .. 64";
                  }
                  description "Class name";
                }
    
                uses apply-advanced;
    
                leaf remove-cntag {
                  type empty;
                  description
                    "Remove cntag for this forwarding class";
                }
              }  // list class
            }  // container output
          }  // list congestion-notification-profile
    
          container system-defaults {
            description "System defaults";
            uses apply-advanced;
    
            container traffic-control-profiles {
              description
                "Default traffic control profiles";
              uses apply-advanced;
    
              container interface-set-input {
                description
                  "Default input traffic control profile for dynamic interface-set";
                leaf profile-name {
                  type string {
                    length "1 .. 64";
                  }
                  description
                    "Name of traffic control profile";
                }
              }  // container interface-set-input
    
              container interface-set-output {
                description
                  "Default output traffic control profile for dynamic interface-set";
                leaf profile-name {
                  type string {
                    length "1 .. 64";
                  }
                  description
                    "Name of traffic control profile";
                }
              }  // container interface-set-output
            }  // container traffic-control-profiles
          }  // container system-defaults
    
          container interfaces {
            description
              "Apply class-of-service options to interfaces";
            uses apply-advanced;
    
            list interface {
              key "name";
              uses cos_interfaces_type;
            }  // list interface
          }  // container interfaces
    
          list routing-instances {
            key "name";
            description
              "Apply CoS options to routing instances with VRF table label";
            leaf name {
              junos:must "((!(".. classifiers") || (!("routing-instances $$") || ("routing-instances $$ vrf-table-label" || ("routing-instances $$ protocols vpls no-tunnel-services" || "routing-instances $$ routing-options localize")))))";
              junos:must-message "'vrf-table-label' or 'no-tunnel-services' or 'routing-options localize' for this routing instance is required for classifier configuration";
              type string {
                junos:posix-pattern "!^(([*]{1,})|(__.*__)|(.{129,}))$";
                junos:pattern-message "Must be a non-reserved string of 128 characters or less";
              }
              description
                "Routing instance name (or wildcard)";
            }
    
            uses apply-advanced;
    
            container classifiers {
              description
                "Classifiers applied to incoming packets";
              uses apply-advanced;
    
              leaf no-default {
                type empty;
                description
                  "Do not apply default classifiers to this interface";
              }
    
              container exp {
                description "EXP classifier";
                leaf classifier-name {
                  type union {
                    type string {
                      pattern "default";
                    }
                    type string {
                      length "1 .. 64";
                    }
                  }
                  description
                    "Name of classifier to be applied";
                }
              }  // container exp
    
              container ieee-802.1 {
                description
                  "IEEE-802.1 classifier";
                leaf classifier-name {
                  type union {
                    type string {
                      pattern "default";
                    }
                    type string {
                      length "1 .. 64";
                    }
                  }
                  description
                    "Name of classifier to be applied";
                }
    
                leaf encapsulated {
                  junos:must "(".. vlan-tag")";
                  junos:must-message "vlan-tag must be specified";
                  type empty;
                  description
                    "Inner or outer ethernet header";
                }
    
                leaf vlan-tag {
                  type enumeration {
                    enum "outer" {
                      value 0;
                      description
                        "Classification based on outer VLAN tag";
                    }
                    enum "inner" {
                      value 1;
                      description
                        "Classification based on inner VLAN tag";
                    }
                  }
                  description
                    "VLAN tag used for classification";
                }
              }  // container ieee-802.1
    
              container dscp {
                description
                  "Differentiated Services code point classifier";
                leaf classifier-name {
                  type union {
                    type string {
                      pattern "default";
                    }
                    type string {
                      length "1 .. 64";
                    }
                  }
                  description
                    "Name of classifier to be applied";
                }
              }  // container dscp
    
              container dscp-ipv6 {
                description
                  "Differentiated Services code point classifier IPv6";
                leaf classifier-name {
                  type union {
                    type string {
                      pattern "default";
                    }
                    type string {
                      length "1 .. 64";
                    }
                  }
                  description
                    "Name of classifier to be applied";
                }
              }  // container dscp-ipv6
            }  // container classifiers
    
            container rewrite-rules {
              description
                "Rewrite rules applied to outgoing packets";
              uses apply-advanced;
    
              choice _802_rewrites {
                container ieee-802.1 {
                  description
                    "IEEE-802.1 rewrite rule";
                  leaf rewrite-rule-name {
                    type union {
                      type string {
                        pattern "default";
                      }
                      type string {
                        length "1 .. 64";
                      }
                    }
                    description
                      "Name of rewrite rule to be applied";
                  }
    
                  leaf encapsulated {
                    junos:must "(".. vlan-tag")";
                    junos:must-message "vlan-tag must be specified";
                    type empty;
                    description
                      "Inner ethernet header";
                  }
    
                  leaf vlan-tag {
                    type enumeration {
                      enum "outer" {
                        value 0;
                        description
                          "Rewrite rule applies to outer VLAN tag";
                      }
                      enum "outer-and-inner" {
                        value 1;
                        description
                          "Rewrite rule applies to outer and inner VLAN tag";
                      }
                    }
                    description
                      "One or more VLAN tags to which rewrite rule applies";
                  }
                }  // container ieee-802.1
                container ieee-802.1ad {
                  description
                    "IEEE-802.1ad (DEI) rewrite rule";
                  leaf rewrite-rule-name {
                    type union {
                      type string {
                        pattern "default";
                      }
                      type string {
                        length "1 .. 64";
                      }
                    }
                    description
                      "Name of rewrite rule to be applied";
                  }
    
                  leaf encapsulated {
                    junos:must "(".. vlan-tag")";
                    junos:must-message "vlan-tag must be specified";
                    type empty;
                    description
                      "Inner ethernet header";
                  }
    
                  leaf vlan-tag {
                    type enumeration {
                      enum "outer" {
                        value 0;
                        description
                          "Rewrite rule applies to outer VLAN tag";
                      }
                      enum "outer-and-inner" {
                        value 1;
                        description
                          "Rewrite rule applies to outer and inner VLAN tag";
                      }
                    }
                    description
                      "One or more VLAN tags to which rewrite rule applies";
                  }
                }  // container ieee-802.1ad
              }  // choice _802_rewrites
            }  // container rewrite-rules
          }  // list routing-instances
    
          container rewrite-rules {
            description
              "Write code point value of outgoing packets";
            uses apply-advanced;
    
            list dscp {
              key "name";
              ordered-by user;
              description
                "Differentiated Services code point rewrite rule";
              leaf name {
                junos:must "((".. forwarding-class" || ".. import"))";
                junos:must-message "'At least one 'forwarding class' or 'import' rewrite definition is required for rewrite configuration";
                type string {
                  length "1 .. 64";
                }
                description "Rewrite rule name";
              }
    
              uses apply-advanced;
    
              leaf import {
                type union {
                  type string {
                    pattern "default";
                  }
                  type string {
                    length "1 .. 64";
                  }
                }
                description
                  "Include this rewrite rule in this definition";
              }
    
              list forwarding-class {
                key "name";
                description
                  "Markings for named forwarding class";
                leaf name {
                  type string {
                    length "1 .. 64";
                  }
                  description
                    "Forwarding class name";
                }
    
                uses apply-advanced;
    
                list loss-priority {
                  key "name";
                  description
                    "Code point marking based on loss priority";
                  leaf name {
                    type enumeration {
                      enum "low" {
                        value 0;
                        description
                          "Marking when loss priority is low";
                      }
                      enum "high" {
                        value 1;
                        description
                          "Marking when loss priority is high";
                      }
                      enum "medium-low" {
                        value 2;
                        description
                          "Marking when loss priority is medium-low";
                      }
                      enum "medium-high" {
                        value 3;
                        description
                          "Marking when loss priority is medium-high";
                      }
                    }
                  }
    
                  leaf code-point {
                    type string {
                      junos:posix-pattern "^(([01]{6})|([a-zA-Z].{0,63}))$";
                      junos:pattern-message "Not 6-bit pattern or code point alias";
                    }
                    description
                      "Code point aliases or bit string";
                  }
                }  // list loss-priority
              }  // list forwarding-class
            }  // list dscp
    
            list dscp-ipv6 {
              key "name";
              ordered-by user;
              description
                "Differentiated Services code point rewrite rule IPv6";
              leaf name {
                junos:must "((".. forwarding-class" || ".. import"))";
                junos:must-message "'At least one 'forwarding class' or 'import' rewrite definition is required for rewrite configuration";
                type string {
                  length "1 .. 64";
                }
                description "Rewrite rule name";
              }
    
              uses apply-advanced;
    
              leaf import {
                type union {
                  type string {
                    pattern "default";
                  }
                  type string {
                    length "1 .. 64";
                  }
                }
                description
                  "Include this rewrite rule in this definition";
              }
    
              list forwarding-class {
                key "name";
                description
                  "Markings for named forwarding class";
                leaf name {
                  type string {
                    length "1 .. 64";
                  }
                  description
                    "Forwarding class name";
                }
    
                uses apply-advanced;
    
                list loss-priority {
                  key "name";
                  description
                    "Code point marking based on loss priority";
                  leaf name {
                    type enumeration {
                      enum "low" {
                        value 0;
                        description
                          "Marking when loss priority is low";
                      }
                      enum "high" {
                        value 1;
                        description
                          "Marking when loss priority is high";
                      }
                      enum "medium-low" {
                        value 2;
                        description
                          "Marking when loss priority is medium-low";
                      }
                      enum "medium-high" {
                        value 3;
                        description
                          "Marking when loss priority is medium-high";
                      }
                    }
                  }
    
                  leaf code-point {
                    type string {
                      junos:posix-pattern "^(([01]{6})|([a-zA-Z].{0,63}))$";
                      junos:pattern-message "Not 6-bit pattern or code point alias";
                    }
                    description
                      "Code point aliases or bit string";
                  }
                }  // list loss-priority
              }  // list forwarding-class
            }  // list dscp-ipv6
    
            list exp {
              key "name";
              ordered-by user;
              description
                "MPLS EXP rewrite rule";
              leaf name {
                junos:must "((".. forwarding-class" || ".. import"))";
                junos:must-message "'At least one 'forwarding class' or 'import' rewrite definition is required for rewrite configuration";
                type string {
                  length "1 .. 64";
                }
                description "Rewrite rule name";
              }
    
              uses apply-advanced;
    
              leaf import {
                type union {
                  type string {
                    pattern "default";
                  }
                  type string {
                    length "1 .. 64";
                  }
                }
                description
                  "Include this rewrite rule in this definition";
              }
    
              list forwarding-class {
                key "name";
                description
                  "Markings for named forwarding class";
                leaf name {
                  type string {
                    length "1 .. 64";
                  }
                  description
                    "Forwarding class name";
                }
    
                uses apply-advanced;
    
                list loss-priority {
                  key "name";
                  description
                    "Code point marking based on loss priority";
                  leaf name {
                    type enumeration {
                      enum "low" {
                        value 0;
                        description
                          "Marking when loss priority is low";
                      }
                      enum "high" {
                        value 1;
                        description
                          "Marking when loss priority is high";
                      }
                      enum "medium-low" {
                        value 2;
                        description
                          "Marking when loss priority is medium-low";
                      }
                      enum "medium-high" {
                        value 3;
                        description
                          "Marking when loss priority is medium-high";
                      }
                    }
                  }
    
                  leaf code-point {
                    type string {
                      junos:posix-pattern "^(([01]{3})|([a-zA-Z].{0,63}))$";
                      junos:pattern-message "Not 3-bit pattern or code point alias";
                    }
                    description
                      "Code point aliases or bit string";
                  }
                }  // list loss-priority
              }  // list forwarding-class
            }  // list exp
    
            list ieee-802.1 {
              key "name";
              ordered-by user;
              description
                "IEEE-802.1 rewrite rule";
              leaf name {
                junos:must "((".. forwarding-class" || ".. import"))";
                junos:must-message "'At least one 'forwarding class' or 'import' rewrite definition is required for rewrite configuration";
                type string {
                  length "1 .. 64";
                }
                description "Rewrite rule name";
              }
    
              uses apply-advanced;
    
              leaf import {
                type union {
                  type string {
                    pattern "default";
                  }
                  type string {
                    length "1 .. 64";
                  }
                }
                description
                  "Include this rewrite rule in this definition";
              }
    
              list forwarding-class {
                key "name";
                description
                  "Markings for named forwarding class";
                leaf name {
                  type string {
                    length "1 .. 64";
                  }
                  description
                    "Forwarding class name";
                }
    
                uses apply-advanced;
    
                list loss-priority {
                  key "name";
                  description
                    "Code point marking based on loss priority";
                  leaf name {
                    type enumeration {
                      enum "low" {
                        value 0;
                        description
                          "Marking when loss priority is low";
                      }
                      enum "high" {
                        value 1;
                        description
                          "Marking when loss priority is high";
                      }
                      enum "medium-low" {
                        value 2;
                        description
                          "Marking when loss priority is medium-low";
                      }
                      enum "medium-high" {
                        value 3;
                        description
                          "Marking when loss priority is medium-high";
                      }
                    }
                  }
    
                  leaf code-point {
                    type string {
                      junos:posix-pattern "^(([01]{3})|([a-zA-Z].{0,63}))$";
                      junos:pattern-message "Not 3-bit pattern or code point alias";
                    }
                    description
                      "Code point aliases or bit string";
                  }
                }  // list loss-priority
              }  // list forwarding-class
            }  // list ieee-802.1
    
            list inet-precedence {
              key "name";
              ordered-by user;
              description
                "IPv4 precedence rewrite rule";
              leaf name {
                junos:must "((".. forwarding-class" || ".. import"))";
                junos:must-message "'At least one 'forwarding class' or 'import' rewrite definition is required for rewrite configuration";
                type string {
                  length "1 .. 64";
                }
                description "Rewrite rule name";
              }
    
              uses apply-advanced;
    
              leaf import {
                type union {
                  type string {
                    pattern "default";
                  }
                  type string {
                    length "1 .. 64";
                  }
                }
                description
                  "Include this rewrite rule in this definition";
              }
    
              list forwarding-class {
                key "name";
                description
                  "Markings for named forwarding class";
                leaf name {
                  type string {
                    length "1 .. 64";
                  }
                  description
                    "Forwarding class name";
                }
    
                uses apply-advanced;
    
                list loss-priority {
                  key "name";
                  description
                    "Code point marking based on loss priority";
                  leaf name {
                    type enumeration {
                      enum "low" {
                        value 0;
                        description
                          "Marking when loss priority is low";
                      }
                      enum "high" {
                        value 1;
                        description
                          "Marking when loss priority is high";
                      }
                      enum "medium-low" {
                        value 2;
                        description
                          "Marking when loss priority is medium-low";
                      }
                      enum "medium-high" {
                        value 3;
                        description
                          "Marking when loss priority is medium-high";
                      }
                    }
                  }
    
                  leaf code-point {
                    type string {
                      junos:posix-pattern "^(([01]{3})|([a-zA-Z].{0,63}))$";
                      junos:pattern-message "Not 3-bit pattern or code point alias";
                    }
                    description
                      "Code point aliases or bit string";
                  }
                }  // list loss-priority
              }  // list forwarding-class
            }  // list inet-precedence
    
            list ieee-802.1ad {
              key "name";
              ordered-by user;
              description
                "IEEE-802.1ad (DEI) rewrite rule";
              leaf name {
                junos:must "((".. forwarding-class" || ".. import"))";
                junos:must-message "'At least one 'forwarding class' or 'import' rewrite definition is required for rewrite configuration";
                type string {
                  length "1 .. 64";
                }
                description "Rewrite rule name";
              }
    
              uses apply-advanced;
    
              leaf import {
                type union {
                  type string {
                    pattern "default";
                  }
                  type string {
                    length "1 .. 64";
                  }
                }
                description
                  "Include this rewrite rule in this definition";
              }
    
              list forwarding-class {
                key "name";
                description
                  "Markings for named forwarding class";
                leaf name {
                  type string {
                    length "1 .. 64";
                  }
                  description
                    "Forwarding class name";
                }
    
                uses apply-advanced;
    
                list loss-priority {
                  key "name";
                  description
                    "Code point marking based on loss priority";
                  leaf name {
                    type enumeration {
                      enum "low" {
                        value 0;
                        description
                          "Marking when loss priority is low";
                      }
                      enum "high" {
                        value 1;
                        description
                          "Marking when loss priority is high";
                      }
                      enum "medium-low" {
                        value 2;
                        description
                          "Marking when loss priority is medium-low";
                      }
                      enum "medium-high" {
                        value 3;
                        description
                          "Marking when loss priority is medium-high";
                      }
                    }
                  }
    
                  leaf code-point {
                    type string {
                      junos:posix-pattern "^(([01]{4})|([a-zA-Z].{0,63}))$";
                      junos:pattern-message "Not 4-bit pattern or code point alias";
                    }
                    description
                      "Code point aliases or bit string";
                  }
                }  // list loss-priority
              }  // list forwarding-class
            }  // list ieee-802.1ad
          }  // container rewrite-rules
    
          container fabric {
            description
              "Define CoS parameters of switch fabric";
            uses apply-advanced;
    
            container scheduler-map {
              description
                "Mapping of fabric traffic to packet schedulers";
              uses apply-advanced;
    
              list priority {
                key "name";
                description
                  "Fabric traffic priority";
                leaf name {
                  type enumeration {
                    enum "low" {
                      value 0;
                      description
                        "Low priority fabric traffic";
                    }
                    enum "high" {
                      value 1;
                      description
                        "High priority fabric traffic";
                    }
                  }
                }
    
                leaf scheduler {
                  type string {
                    length "1 .. 64";
                  }
                  description "Scheduler name";
                }
              }  // list priority
            }  // container scheduler-map
          }  // container fabric
    
          list scheduler-maps {
            key "name";
            description
              "Mapping of forwarding classes to packet schedulers";
            leaf name {
              type string {
                length "1 .. 64";
              }
              description "Scheduler map name";
            }
    
            uses apply-advanced;
    
            list forwarding-class {
              key "name";
              description
                "Forwarding class name to map to scheduler";
              leaf name {
                type string {
                  length "1 .. 64";
                }
                description
                  "Forwarding class name";
              }
    
              leaf scheduler {
                type string {
                  length "1 .. 64";
                }
                description "Scheduler name";
              }
            }  // list forwarding-class
          }  // list scheduler-maps
    
          list fragmentation-maps {
            key "name";
            description
              "Mapping of forwarding class to fragmentation options";
            leaf name {
              type string {
                length "1 .. 64";
              }
              description
                "Fragmentation map name";
            }
    
            uses apply-advanced;
    
            list forwarding-class {
              key "name";
              description
                "Forwarding class name to map to fragmentation options";
              leaf name {
                type string {
                  length "1 .. 64";
                }
                description
                  "Forwarding class name";
              }
    
              uses apply-advanced;
    
              choice fragmentation-control {
                leaf fragment-threshold {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "64 .. 9192";
                    }
                  }
                  units "bytes";
                  description
                    "Fragmentation threshold";
                }
                leaf no-fragmentation {
                  type empty;
                  description
                    "Don't allow fragmentation";
                }
              }  // choice fragmentation-control
    
              leaf multilink-class {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "0 .. 7";
                  }
                }
                description
                  "Multilink-Class assigned to the forwarding class";
              }
    
              leaf drop-timeout {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "0 .. 2000";
                  }
                }
                units "milliseconds";
                description "Drop timeout";
              }
            }  // list forwarding-class
          }  // list fragmentation-maps
    
          list schedulers {
            key "name";
            description "Packet schedulers";
            leaf name {
              type string {
                length "1 .. 64";
              }
              description "Scheduler name";
            }
    
            uses apply-advanced;
    
            container transmit-rate {
              description "Transmit rate";
              uses apply-advanced;
    
              choice transmit_rate_choice {
                leaf rate {
                  junos:must "(!("interfaces ${interface} aggregated-ether-options link-speed mixed"))";
                  junos:must-message "Scheduler transmit-rate in bits per second is incompatible with link-speed mixed";
                  type string;
                  units "bits per second";
                  description
                    "Transmit rate as rate";
                }
                leaf percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 100";
                    }
                  }
                  description
                    "Transmit rate as percentage";
                }
                container remainder {
                  presence "enable remainder";
                  description
                    "Remainder available";
                  uses apply-advanced;
    
                  leaf percent {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 100";
                      }
                    }
                    default "0";
                  }
                }  // container remainder
              }  // choice transmit_rate_choice
    
              choice rate_limit_choice {
                leaf exact {
                  type empty;
                  description
                    "Enforce exact transmit rate";
                }
                leaf rate-limit {
                  type empty;
                  description
                    "Enforce rate limit that uses policer";
                }
              }  // choice rate_limit_choice
            }  // container transmit-rate
    
            container excess-rate {
              junos:must "((!((".. transmit-rate exact" && ".. excess-rate")) && (!((".. transmit-rate rate-limit" && ".. excess-rate")) && !((".. priority $$={strict-high}" && ".. excess-rate")))))";
              junos:must-message "Cannot specify excess-rate with transmit-rate exact/rate-limit or strict-high priority";
              description
                "Excess bandwidth sharing proportion";
              choice excess_rate_choice {
                leaf proportion {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 1000";
                    }
                  }
                  description
                    "Excess rate as a proportion";
                }
                leaf percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "Excess rate as a percentage";
                }
              }  // choice excess_rate_choice
            }  // container excess-rate
    
            container shaping-rate {
              junos:must "(!((".. transmit-rate rate-limit" && ".. shaping-rate")))";
              junos:must-message "only one option (shaping-rate or transmit-rate rate-limit) can be configured at a time";
              junos:must "(!((".. transmit-rate exact" && ".. shaping-rate")))";
              junos:must-message "only one option (shaping-rate or transmit-rate exact) can be configured at a time";
              description "Shaping rate";
              choice shaping_rate_choice {
                leaf rate {
                  junos:must "(!("interfaces ${interface} aggregated-ether-options link-speed mixed"))";
                  junos:must-message "Scheduler shaping-rate in bits per second is incompatible with link-speed mixed";
                  type string;
                  units "bits per second";
                  description
                    "Shaping rate as an absolute rate";
                }
                leaf percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "Shaping rate as a percentage";
                }
              }  // choice shaping_rate_choice
    
              leaf burst-size {
                type string;
                units "bytes";
                description
                  "Shaping rate burst size";
              }
            }  // container shaping-rate
    
            container buffer-size {
              description
                "Queue transmission buffer size";
              uses apply-advanced;
    
              choice buffer_size_choice {
                leaf percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 100";
                    }
                  }
                  description
                    "Buffer size as a percentage";
                }
                container remainder {
                  presence "enable remainder";
                  description
                    "Remainder of buffer size available";
                  uses apply-advanced;
    
                  leaf percent {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 100";
                      }
                    }
                    default "0";
                  }
                }  // container remainder
    
                case case_3 {
                }  // case case_3
                leaf temporal {
                  type string;
                  units "microseconds";
                  description
                    "Buffer size as temporal value";
                }
              }  // choice buffer_size_choice
    
              choice buffer_limit {
                leaf exact {
                  type empty;
                  description
                    "Enforce exact buffer size";
                }
              }  // choice buffer_limit
    
              container buffer-partition {
                presence
                  "enable buffer-partition";
                description
                  "Partition buffer size among multicast and unicast";
                uses apply-advanced;
    
                container multicast {
                  presence "enable multicast";
                  description
                    "Specify multicast fraction of reserved buffer";
                  uses apply-advanced;
    
                  leaf percent {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 100";
                      }
                    }
                    default "50";
                  }
                }  // container multicast
              }  // container buffer-partition
            }  // container buffer-size
    
            container shared-buffer {
              description
                "Queue transmission shared-buffer";
              uses apply-advanced;
    
              container maximum {
                presence "enable maximum";
                description
                  "Control the amount of shared buffer a given queue can consume";
                uses apply-advanced;
    
                leaf percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 100";
                    }
                  }
                  default "0";
                  description
                    "Maximum shared buffer size as a percentage";
                }
    
                container multicast {
                  presence "enable multicast";
                  description
                    "Control the amount of shared buffer mcast pkts consume";
                  uses apply-advanced;
    
                  leaf percent {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 100";
                      }
                    }
                    default "0";
                    description
                      "Maximum shared buffer size as a percentage";
                  }
                }  // container multicast
              }  // container maximum
            }  // container shared-buffer
    
            leaf priority {
              type string {
                length "1 .. 64";
              }
              description "Scheduling priority";
            }
    
            leaf excess-priority {
              junos:must "((!((".. transmit-rate exact" && (".. excess-priority $$={high}" || (".. excess-priority $$={low}" || (".. excess-priority $$={medium-high}" || ".. excess-priority $$={medium-low}"))))) && (!((".. transmit-rate rate-limit" && (".. excess-priority $$={high}" || (".. excess-priority $$={low}" || (".. excess-priority $$={medium-high}" || ".. excess-priority $$={medium-low}"))))) && !((".. priority $$={strict-high}" && (".. excess-priority $$={high}" || (".. excess-priority $$={low}" || (".. excess-priority $$={medium-high}" || ".. excess-priority $$={medium-low}"))))))))";
              junos:must-message "Cannot specify excess-priority with transmit-rate exact/rate-limit or strict-high priority";
              type string {
                length "1 .. 64";
              }
              description
                "Priority in the excess region";
            }
    
            list drop-profile-map {
              key "loss-priority protocol";
              description
                "Assign drop profile to a loss priority and protocol";
              leaf loss-priority {
                type enumeration {
                  enum "low" {
                    value 0;
                    description
                      "Loss priority low";
                  }
                  enum "high" {
                    value 1;
                    description
                      "Loss priority high";
                  }
                  enum "medium-low" {
                    value 2;
                    description
                      "Loss priority medium-low";
                  }
                  enum "medium-high" {
                    value 3;
                    description
                      "Loss priority medium-high";
                  }
                  enum "any" {
                    value 4;
                    description
                      "Ignore loss priority when assigning drop profile";
                  }
                }
                description
                  "Loss priority value";
              }
    
              leaf protocol {
                type enumeration {
                  enum "tcp" {
                    value 0;
                    description
                      "TCP protocol only";
                  }
                  enum "non-tcp" {
                    value 1;
                    description
                      "Non-TCP protocols only";
                  }
                  enum "any" {
                    value 2;
                    description
                      "Ignore protocol type when assigning drop profile";
                  }
                }
                description "Protocol type";
              }
    
              leaf drop-profile {
                type string {
                  length "1 .. 64";
                }
                description
                  "Name of drop profile to apply";
              }
            }  // list drop-profile-map
    
            leaf adjust-percent {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 100";
                }
              }
              units "percent";
              description
                "Percent of a bandwidth adjustment applied to a queue";
            }
    
            leaf adjust-minimum {
              type string;
              units "bits per second";
              description
                "Minimum shaping-rate when adjusted";
            }
          }  // list schedulers
    
          container traceoptions {
            description
              "Trace options for class-of-service process";
            uses apply-advanced;
    
            leaf no-remote-trace {
              junos:must "("system tracing")";
              junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
              type empty;
              description
                "Disable remote tracing";
            }
    
            container file {
              description
                "Trace file information";
              leaf filename {
                type string {
                  junos:posix-pattern "![/ %]";
                  junos:pattern-message "Must not contain '/', % or a space";
                  length "1 .. 1024";
                }
                description
                  "Name of file in which to write trace information";
              }
    
              leaf size {
                type string;
                description
                  "Maximum trace file size";
              }
    
              leaf files {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "2 .. 1000";
                  }
                }
                default "3";
                description
                  "Maximum number of trace files";
              }
    
              choice world-readable-choice {
                leaf world-readable {
                  type empty;
                  description
                    "Allow any user to read the log file";
                }
                leaf no-world-readable {
                  type empty;
                  description
                    "Don't allow any user to read the log file";
                }
              }  // choice world-readable-choice
    
              leaf match {
                type jt:regular-expression;
                description
                  "Regular expression for lines to be logged";
              }
            }  // container file
    
            list flag {
              key "name";
              description "Tracing parameters";
              leaf name {
                type enumeration {
                  enum "init" {
                    value 0;
                    description
                      "Trace initialization events";
                  }
                  enum "show" {
                    value 1;
                    description
                      "Trace show command servicing";
                  }
                  enum "route-socket" {
                    value 2;
                    description
                      "Trace route-socket events";
                  }
                  enum "parse" {
                    value 3;
                    description
                      "Trace parser processing";
                  }
                  enum "process" {
                    value 4;
                    description
                      "Trace configuration processing";
                  }
                  enum "util" {
                    value 5;
                    description
                      "Trace utilities";
                  }
                  enum "restart" {
                    value 6;
                    description
                      "Trace restart processing";
                  }
                  enum "snmp" {
                    value 7;
                    description
                      "Trace SNMP-related processing";
                  }
                  enum "hardware-database" {
                    value 8;
                    description
                      "Trace chassis hardware database related processing";
                  }
                  enum "asynch" {
                    value 9;
                    description
                      "Trace asynchronous configuration processing";
                  }
                  enum "dynamic" {
                    value 10;
                    description
                      "Trace dynamic CoS functions";
                  }
                  enum "cos-adjustment" {
                    value 11;
                    description
                      "Trace CoS rate adjustments";
                  }
                  enum "performance-monitor" {
                    value 12;
                    description
                      "Trace performance monitor counters";
                  }
                  enum "chassis-scheduler" {
                    value 13;
                    description
                      "Trace chassis stream scheduler processing";
                  }
                  enum "cn-util" {
                    value 14;
                    description
                      "Trace utilities for congestion-notification";
                  }
                  enum "snmp-timeouts" {
                    value 15;
                    description
                      "Trace SNMP COSD kernel timeouts";
                  }
                  enum "all" {
                    value 16;
                    description
                      "Trace everything";
                  }
                  enum "feature-capability" {
                    value 17;
                    description
                      "Trace feature capability";
                  }
                  enum "application" {
                    value 18;
                    description
                      "Trace Junos application programming";
                  }
                  enum "jvision" {
                    value 19;
                    description
                      "Cos Junos Jvision traces";
                  }
                }
              }
            }  // list flag
          }  // container traceoptions
    
          container multi-destination {
            description
              "Multicast class of service";
            uses apply-advanced;
    
            leaf scheduler-map {
              type string {
                length "1 .. 64";
              }
              description
                "Scheduler map for multi destination";
            }
    
            container family {
              description
                "Family Inet/Inet6/Ethernet";
              uses apply-advanced;
    
              container ethernet {
                description
                  "Ethernet switching options";
                uses apply-advanced;
    
                leaf broadcast {
                  type string {
                    length "1 .. 64";
                  }
                  description
                    "Forwarding class to be applied to broadcast";
                }
              }  // container ethernet
    
              container inet {
                description "IP Multicast";
                uses apply-advanced;
    
                container classifier {
                  description
                    "Classifier applied to ip-multicast";
                  uses apply-advanced;
    
                  container dscp {
                    description
                      "Differentiated Services code point classifier";
                    leaf classifier-name {
                      type string {
                        length "1 .. 64";
                      }
                      description
                        "Name of classifier to be applied";
                    }
                  }  // container dscp
    
                  container inet-precedence {
                    description
                      "IPv4 precedence classifier";
                    leaf classifier-name {
                      type string {
                        length "1 .. 64";
                      }
                      description
                        "Name of classifier to be applied";
                    }
                  }  // container inet-precedence
                }  // container classifier
              }  // container inet
    
              container inet6 {
                description "IPv6 Multicast";
                uses apply-advanced;
    
                container classifier {
                  description
                    "Classifier applied to ipv6-multicast";
                  uses apply-advanced;
    
                  container dscp-ipv6 {
                    description
                      "Differentiated Services code point classifier";
                    leaf classifier-name {
                      type string {
                        length "1 .. 64";
                      }
                      description
                        "Name of classifier to be applied";
                    }
                  }  // container dscp-ipv6
                }  // container classifier
              }  // container inet6
            }  // container family
    
            container classifiers {
              junos:must "(!(".. forwarding-class"))";
              junos:must-message "Either Forwarding-class or Classifiers can be configured";
              description
                "Classifier applied to multicast traffic";
              uses apply-advanced;
    
              container ieee-802.1 {
                description
                  "IEEE-802.1 classifier";
                leaf classifier-name {
                  type string {
                    length "1 .. 64";
                  }
                  description
                    "Name of classifier to be applied";
                }
              }  // container ieee-802.1
    
              container dscp {
                junos:must "(!(".. inet-precedence"))";
                junos:must-message "Either DSCP or Inet-Precedence can be configured";
                description
                  "Differentiated services code point classifier";
                leaf classifier-name {
                  type string {
                    length "1 .. 64";
                  }
                  description
                    "Name of classifier to be applied";
                }
              }  // container dscp
            }  // container classifiers
          }  // container multi-destination
    
          container forwarding-policy {
            description
              "Class-of-service forwarding policy";
            uses apply-advanced;
    
            list next-hop-map {
              key "name";
              ordered-by user;
              description
                "Class-of-service next-hop map";
              leaf name {
                type string {
                  junos:posix-pattern "^.{1,64}$";
                  junos:pattern-message "Must be string of 64 characters or less";
                }
                description
                  "Name to identify next-hop map";
              }
    
              uses apply-advanced;
    
              list forwarding-class {
                key "name";
                ordered-by user;
                description
                  "Forwarding class from which to map";
                leaf name {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  description "Forwarding class";
                }
    
                uses apply-advanced;
    
                leaf-list next-hop {
                  type union {
                    type jt:ipaddr-or-interface;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  ordered-by user;
                  description
                    "Next-hop identifier to which to map";
                }
    
                leaf-list lsp-next-hop {
                  type string;
                  ordered-by user;
                  description
                    "Regular expression for LSP next hop";
                }
    
                leaf non-lsp-next-hop {
                  type empty;
                  description
                    "Any non-RSVP LSP next hop";
                }
    
                leaf non-labelled-next-hop {
                  type empty;
                  description
                    "Any non-labelled next hop";
                }
    
                leaf discard {
                  type empty;
                  description "Discard next hop";
                }
              }  // list forwarding-class
    
              container forwarding-class-default {
                description
                  "Next Hop For traffic which does not meet any FC in the next-hop-map";
                uses apply-advanced;
    
                leaf-list next-hop {
                  type union {
                    type jt:ipaddr-or-interface;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  ordered-by user;
                  description
                    "Next-hop identifier to which to map";
                }
    
                leaf-list lsp-next-hop {
                  type string;
                  ordered-by user;
                  description
                    "Regular expression for LSP next hop";
                }
    
                leaf non-lsp-next-hop {
                  type empty;
                  description
                    "Any non-RSVP LSP next hop";
                }
    
                leaf non-labelled-next-hop {
                  type empty;
                  description
                    "Any non-labelled next hop";
                }
    
                leaf discard {
                  type empty;
                  description "Discard next hop";
                }
              }  // container forwarding-class-default
            }  // list next-hop-map
    
            list class {
              key "name";
              ordered-by user;
              description
                "Class-of-service description";
              leaf name {
                type string {
                  junos:posix-pattern "^.{1,64}$";
                  junos:pattern-message "Must be string of 64 characters or less";
                }
                description
                  "Name to identify class of service";
              }
    
              uses apply-advanced;
    
              container classification-override {
                description
                  "Define classification overrides";
                uses apply-advanced;
    
                leaf forwarding-class {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  description
                    "Forwarding class name";
                }
              }  // container classification-override
            }  // list class
          }  // container forwarding-policy
        }  // grouping juniper-class-of-service-options
    
        grouping cos_interfaces_type {
          description "Physical interface";
          leaf name {
            junos:must "((!(".. classifiers") || !(".. forwarding-class")))";
            junos:must-message "Forwarding-class and BA Classifiers not allowed on the same physical interface together";
            junos:must "((!((any ".. unit <*> rewrite-rules dscp-ipv6" || any ".. unit <*> rewrite-rules inet6-precedence <*> protocol $$={mpls}")) || !(".. output-forwarding-class-map")))";
            junos:must-message "DSCP-IPv6 rewrite or IPv6 Precedence for MPLS traffic and forwarding class map not allowed on same interface";
            junos:must "((!((any ".. unit <*> rewrite-rules dscp" || any ".. unit <*> rewrite-rules inet-precedence <*> protocol $$={mpls}")) || !(".. output-forwarding-class-map")))";
            junos:must-message "DSCP rewrite or IP Precedence rewrite for MPLS traffic and forwarding class map not allowed on same interface";
            junos:must "((!(any ".. unit <*> output-forwarding-class-map") || !(".. output-forwarding-class-map")))";
            junos:must-message "Cannot configure forwarding-class-map statement on both physical and logical interface";
            junos:must "((!((any ".. unit <*> scheduler-map" || (any ".. unit <*> input-scheduler-map" || (any ".. unit <*> output-traffic-control-profile" || any ".. unit <*> input-traffic-control-profile")))) || !((".. scheduler-map" || ".. input-scheduler-map"))))";
            junos:must-message "Cannot configure scheduler-map or traffic-control-profile statement on both physical and logical interface";
            junos:must "((!((".. scheduler-map" || ".. input-scheduler-map")) || (!("interfaces $$") || !(("interfaces $$ per-unit-scheduler" || ("interfaces $$ shared-scheduler" || "interfaces $$ hierarchical-scheduler"))))))";
            junos:must-message "'per-unit-scheduler', 'hierarchical-scheduler', or 'shared scheduler' is not compatible with scheduler map/input scheduler map on an interface";
            junos:must "((!(any ".. unit <*> input-traffic-control-profile") || (!("interfaces $$") || ("interfaces $$ per-unit-scheduler" || ("interfaces $$ shared-scheduler" || ("interfaces $$ hierarchical-scheduler" || any "interfaces $$ unit <*> pppoe-options"))))))";
            junos:must-message "'per-unit-scheduler', 'hierarchical-scheduler',or 'shared scheduler' for this interface is required for input-traffic-control-profile configuration on interface unit";
            junos:must "((!(any ".. unit <*> output-traffic-control-profile") || (!("interfaces $$") || ("interfaces $$ per-unit-scheduler" || ("interfaces $$ shared-scheduler" || ("interfaces $$ hierarchical-scheduler" || ("interfaces $$ cascade-port" || (any "interfaces $$ unit <*> pppoe-options" || (any "interfaces <ps*>" || any "interfaces $$ unit <*> demux-options")))))))))";
            junos:must-message "'per-unit-scheduler', 'hierarchical-scheduler', or 'shared scheduler' for this interface is required for output-traffic-control-profile configuration on interface unit";
            junos:must "((!(any ".. unit <*> shaping-rate") || (!("interfaces $$") || ("interfaces $$ per-unit-scheduler" || ("interfaces $$ shared-scheduler" || ("interfaces $$ hierarchical-scheduler" || (any "interfaces $$ unit <*> pppoe-options" || any "interfaces $$ unit <*> demux-options")))))))";
            junos:must-message "'per-unit-scheduler', 'hierarchical-scheduler', or 'shared scheduler' for this interface is required for bandwidth configuration on interface unit";
            junos:must "((!(any ".. unit <*> virtual-channel-group") || (!("interfaces $$") || "interfaces $$ per-unit-scheduler")))";
            junos:must-message "'per-unit-scheduler' for this interface is required for virtual-channel-group on interface unit";
            junos:must "((!((any ".. unit <*> scheduler-map" || any ".. unit <*> input-scheduler-map")) || (!("interfaces $$") || ("interfaces $$ per-unit-scheduler" || ("interfaces $$ shared-scheduler" || ("interfaces $$ hierarchical-scheduler" || ("interfaces $$ cascade-port" || (any "interfaces $$ unit <*> pppoe-options" || any "interfaces $$ unit <*> demux-options"))))))))";
            junos:must-message "'per-unit-scheduler', 'hierarchical-scheduler', or 'shared-scheduler' for this interface is required for scheduler map on interface unit";
            type union {
              type jt:interface-device-wildcard;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description
              "Interface name (or wildcard)";
          }
    
          uses apply-advanced;
    
          leaf congestion-notification-profile {
            type string {
              length "1 .. 64";
            }
            description
              "Congestion notification profile for the interface";
          }
    
          leaf scheduler-map {
            type string {
              length "1 .. 64";
            }
            description "Output scheduler map";
          }
    
          leaf input-scheduler-map {
            type string {
              length "1 .. 64";
            }
            description "Input scheduler map";
          }
    
          leaf scheduler-map-chassis {
            type union {
              type string {
                pattern "derived";
              }
              type string {
                length "1 .. 64";
              }
            }
            description
              "Scheduler map applied to chassis queues (not PIC queues)";
          }
    
          container shaping-rate {
            junos:must "(!("interfaces ${interface} aggregated-ether-options link-speed mixed"))";
            junos:must-message "CoS features are incompatible with link-speed mixed";
            description "Output shaping rate";
            leaf rate {
              type string;
              units "bits per second";
              description
                "Shaping rate as an absolute rate";
            }
          }  // container shaping-rate
    
          container input-shaping-rate {
            junos:must "(!("interfaces ${interface} aggregated-ether-options link-speed mixed"))";
            junos:must-message "CoS features are incompatible with link-speed mixed";
            description "Input shaping rate";
            leaf rate {
              type string;
              units "bits per second";
              description
                "Input shaping rate as an absolute rate";
            }
          }  // container input-shaping-rate
    
          container input-traffic-control-profile {
            junos:must "(!(("..  input-scheduler-map" || ".. input-shaping-rate")))";
            junos:must-message "input-traffic-control-profile cannot be configured if any of the following are configured: input-scheduler-map, input-shaping-rate";
            description
              "Input traffic control profile";
            leaf profile-name {
              type string {
                length "1 .. 64";
              }
              description
                "Name of the traffic control profile";
            }
          }  // container input-traffic-control-profile
    
          container input-traffic-control-profile-remaining {
            junos:must "(!(("..  scheduler-map" || ".. shaping-rate")))";
            junos:must-message "input-traffic-control-profile cannot be configured if any of the following are configured: scheduler-map, shaping-rate";
            description
              "Input traffic control profile for remaining traffic on the ifd";
            leaf profile-name {
              type string {
                length "1 .. 64";
              }
              description
                "Name of the traffic control profile";
            }
          }  // container input-traffic-control-profile-remaining
    
          container output-traffic-control-profile-remaining {
            junos:must "(!(("..  scheduler-map" || ".. shaping-rate")))";
            junos:must-message "output-traffic-control-profile cannot be configured if any of the following are configured: scheduler-map, shaping-rate";
            description
              "Output traffic control profile for remaining traffic on the ifd";
            leaf profile-name {
              type string {
                length "1 .. 64";
              }
              description
                "Name of the traffic control profile";
            }
          }  // container output-traffic-control-profile-remaining
    
          container member-link-scheduler {
            junos:must "(!("interfaces ${interface} aggregated-ether-options link-speed mixed"))";
            junos:must-message "CoS features are incompatible with link-speed mixed";
            description
              "Scheduler parameter model for member link";
            choice model {
              leaf scale {
                type empty;
                description
                  "Scale scheduler parameters on aggregate interface";
              }
              leaf replicate {
                type empty;
                description
                  "Copy scheduler parameters from aggregate interface";
              }
            }  // choice model
          }  // container member-link-scheduler
    
          container exclude-queue-overhead-bytes {
            presence
              "enable exclude-queue-overhead-bytes";
            description
              "Exclude the overhead bytes from the queue statistics";
            uses apply-advanced;
    
            leaf include-hierarchy {
              type empty;
              description
                "Perform overhead adjustment on IFD and all children";
            }
          }  // container exclude-queue-overhead-bytes
    
          container logical-interface-aggregate-statistics {
            presence
              "enable logical-interface-aggregate-statistics";
            description
              "Logical interface aggregate queue statistics";
          }  // container logical-interface-aggregate-statistics
    
          list unit {
            key "name";
            description
              "Logical interface unit (or wildcard)";
            leaf name {
              type union {
                type string {
                  pattern "\*";
                }
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 1073741823";
                  }
                }
              }
              description "Logical unit number";
            }
    
            uses apply-advanced;
    
            leaf forwarding-class {
              type string {
                length "1 .. 64";
              }
              description
                "Forwarding class assigned to incoming packets";
            }
    
            leaf scheduler-map {
              junos:must "(!("interfaces ${interface} hierarchical-scheduler"))";
              junos:must-message "scheduler-map cannot be configured on a logical interface when the hierarchical-scheduler is configured: use a traffic-control-profile which references the scheduler-map";
              type string {
                length "1 .. 64";
              }
              description "Output scheduler map";
            }
    
            leaf input-scheduler-map {
              junos:must "(!("interfaces ${interface} hierarchical-scheduler"))";
              junos:must-message "input-scheduler-map cannot be configured on a logical interface when the hierarchical-scheduler is configured";
              type string {
                length "1 .. 64";
              }
              description "Input scheduler map";
            }
    
            leaf fragmentation-map {
              type string {
                length "1 .. 64";
              }
              description
                "Fragmentation map applied to this logical interface";
            }
    
            container shaping-rate {
              junos:must "(!("interfaces ${interface} hierarchical-scheduler"))";
              junos:must-message "shaping-rate cannot be configured on a logical interface when the hierarchical-scheduler is configured: use a traffic-control-profile which specifies the shaping-rate";
              presence "enable shaping-rate";
              description "Output shaping rate";
              choice shaping_rate_choice {
                leaf rate {
                  junos:must "(!("interfaces ${interface} aggregated-ether-options link-speed mixed"))";
                  junos:must-message "Scheduler shaping-rate in bits per second is incompatible with link-speed mixed";
                  type string;
                  units "bits per second";
                  description
                    "Shaping rate as an absolute rate";
                }
                leaf percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 100";
                    }
                  }
                  description
                    "Shaping rate as a percentage";
                }
              }  // choice shaping_rate_choice
            }  // container shaping-rate
    
            container input-shaping-rate {
              junos:must "(!("interfaces ${interface} hierarchical-scheduler"))";
              junos:must-message "input-shaping-rate cannot be configured on a logical interface when the hierarchical-scheduler is configured";
              description "Input shaping rate";
              choice shaping_rate_choice {
                leaf rate {
                  type string;
                  units "bits per second";
                  description
                    "Shaping rate as an absolute rate";
                }
                leaf percent {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 100";
                    }
                  }
                  description
                    "Shaping rate as a percentage";
                }
              }  // choice shaping_rate_choice
            }  // container input-shaping-rate
    
            container input-traffic-control-profile {
              junos:must "(!(("..  input-scheduler-map" || (".. input-shaping-rate" || (".. adaptive-shaper" || ".. virtual-channel-group")))))";
              junos:must-message "input-traffic-control-profile cannot be configured if any of the following are configured under logical interface: input-scheduler-map, input-shaping-rate, adaptive-shaper, virtual-channel-group";
              description
                "Input traffic control profile";
              leaf profile-name {
                type string {
                  length "1 .. 64";
                }
                description
                  "Name of traffic control profile";
              }
    
              leaf shared-instance {
                junos:must "("interfaces ${interface} shared-scheduler")";
                junos:must-message "Requires [edit interface <interface name> shared-scheduler]";
                type string {
                  length "1 .. 64";
                }
                description
                  "Name of the shared instance";
              }
            }  // container input-traffic-control-profile
    
            container output-traffic-control-profile {
              junos:must "(!(("..  scheduler-map" || (".. shaping-rate" || (".. adaptive-shaper" || "..  virtual-channel-group")))))";
              junos:must-message "output-traffic-control-profile cannot be configured if any of the following are configured under logical interface: scheduler-map, shaping-rate, adaptive-shaper, virtual-channel-group";
              description
                "Output traffic control profile";
              leaf profile-name {
                type string {
                  length "1 .. 64";
                }
                description
                  "Name of the traffic control profile";
              }
    
              leaf shared-instance {
                junos:must "("interfaces ${interface} shared-scheduler")";
                junos:must-message "Requires [edit interface <interface name> shared-scheduler]";
                type string {
                  length "1 .. 64";
                }
                description
                  "Name of the shared instance";
              }
            }  // container output-traffic-control-profile
    
            container output-traffic-control-profile-remaining {
              junos:must "(!(("..  scheduler-map" || ".. shaping-rate")))";
              junos:must-message "output-traffic-control-profile-remaining cannot be configured if any of the following are configured: scheduler-map, shaping-rate";
              description
                "Output traffic control profile for remaining traffic on the ifl";
              leaf profile-name {
                type string {
                  junos:posix-pattern "^.{1,64}$";
                  junos:pattern-message "Must be string of 64 characters or less";
                }
                description
                  "Name of the traffic control profile";
              }
            }  // container output-traffic-control-profile-remaining
    
            container report-ingress-shaping-rate {
              description
                "Report ingress shaping rate";
              choice report_ingress_shaping_rate_choice {
                leaf rate {
                  type string;
                  units "bits per second";
                  description
                    "Ingress shaping rate as an absolute value";
                }
              }  // choice report_ingress_shaping_rate_choice
            }  // container report-ingress-shaping-rate
    
            container classifiers {
              description
                "Classifiers applied to incoming packets";
              uses apply-advanced;
    
              leaf no-default {
                type empty;
                description
                  "Do not apply default classifiers to this interface";
              }
    
              list dscp {
                key "name";
                description
                  "Differentiated Services code point classifier";
                leaf name {
                  type union {
                    type string {
                      pattern "default";
                    }
                    type string {
                      length "1 .. 64";
                    }
                  }
                  description
                    "Name of classifier to be applied";
                }
    
                uses apply-advanced;
    
                leaf-list family {
                  type string;
                  ordered-by user;
                  description
                    "Family for DSCP classifier";
                }
              }  // list dscp
    
              list dscp-ipv6 {
                key "name";
                description
                  "Differentiated Services code point classifier IPv6";
                leaf name {
                  type union {
                    type string {
                      pattern "default";
                    }
                    type string {
                      length "1 .. 64";
                    }
                  }
                  description
                    "Name of classifier to be applied";
                }
    
                uses apply-advanced;
    
                leaf-list family {
                  type string;
                  ordered-by user;
                  description
                    "Family for DSCP Ipv6 classifier";
                }
              }  // list dscp-ipv6
    
              container exp {
                description "EXP classifier";
                leaf classifier-name {
                  type union {
                    type string {
                      pattern "default";
                    }
                    type string {
                      length "1 .. 64";
                    }
                  }
                  description
                    "Name of classifier to be applied";
                }
              }  // container exp
    
              container ieee-802.1 {
                description
                  "IEEE-802.1 classifier";
                leaf classifier-name {
                  type union {
                    type string {
                      pattern "default";
                    }
                    type string {
                      length "1 .. 64";
                    }
                  }
                  description
                    "Name of classifier to be applied";
                }
    
                leaf vlan-tag {
                  type enumeration {
                    enum "outer" {
                      value 0;
                      description
                        "Classification based on outer VLAN tag";
                    }
                    enum "inner" {
                      value 1;
                      description
                        "Classification based on inner VLAN tag";
                    }
                    enum "transparent" {
                      value 2;
                      description
                        "Classification based on hidden VLAN tag";
                    }
                  }
                  description
                    "VLAN tag used for classification";
                }
              }  // container ieee-802.1
    
              container inet-precedence {
                description
                  "IPv4 precedence classifier";
                leaf classifier-name {
                  type union {
                    type string {
                      pattern "default";
                    }
                    type string {
                      length "1 .. 64";
                    }
                  }
                  description
                    "Name of classifier to be applied";
                }
              }  // container inet-precedence
    
              container ieee-802.1ad {
                junos:must "(!(".. ieee-802.1"))";
                junos:must-message "ieee-802.1ad and ieee-802.1 not allowed on same unit";
                description
                  "IEEE-802.1ad (DEI) classifier";
                leaf classifier-name {
                  type union {
                    type string {
                      pattern "default";
                    }
                    type string {
                      length "1 .. 64";
                    }
                  }
                  description
                    "Name of classifier to be applied";
                }
    
                leaf vlan-tag {
                  type enumeration {
                    enum "outer" {
                      value 0;
                      description
                        "Classification based on outer VLAN tag";
                    }
                    enum "inner" {
                      value 1;
                      description
                        "Classification based on inner VLAN tag";
                    }
                  }
                  description
                    "VLAN tag used for classification";
                }
              }  // container ieee-802.1ad
            }  // container classifiers
    
            container rewrite-rules {
              description
                "Rewrite rules applied to outgoing packets";
              uses apply-advanced;
    
              list dscp {
                junos:must "(!(".. inet-precedence"))";
                junos:must-message "DSCP and inet-precedence not allowed on same unit";
                key "name";
                description
                  "Differentiated Services code point rewrite rule";
                leaf name {
                  type union {
                    type string {
                      pattern "default";
                    }
                    type string {
                      length "1 .. 64";
                    }
                  }
                  description
                    "Name of rewrite rule to be applied";
                }
    
                leaf-list protocol {
                  type enumeration {
                    enum "mpls" {
                      value 0;
                      description
                        "Apply to IPv4 packets entering MPLS tunnel";
                    }
                    enum "gtp-inet-outer" {
                      value 1;
                      description
                        "Apply to outer IP header";
                    }
                    enum "gtp-inet-both" {
                      value 2;
                      description
                        "Apply to both IP header";
                    }
                    enum "inet-outer" {
                      value 3;
                      description
                        "Apply to outer IP header";
                    }
                    enum "inet-both" {
                      value 4;
                      description
                        "Apply to both IP header";
                    }
                  }
                  ordered-by user;
                  description
                    "Specify protocol matching criteria";
                }
              }  // list dscp
    
              list dscp-ipv6 {
                junos:must "(!(".. inet6-precedence"))";
                junos:must-message "IPv6 DSCP and inet6-precedence not allowed on same unit";
                junos:must "(!("interfaces ${interface} vlan-tagging"))";
                junos:must-message "DSCP-IPv6 Rewrite Rules cannot be configured on Vlan-Tagged interfaces";
                key "name";
                description
                  "Differentiated Services code point rewrite rule IPv6";
                leaf name {
                  type union {
                    type string {
                      pattern "default";
                    }
                    type string {
                      length "1 .. 64";
                    }
                  }
                  description
                    "Name of rewrite rule to be applied";
                }
    
                leaf-list protocol {
                  type enumeration {
                    enum "mpls" {
                      value 0;
                      description
                        "Apply to IPv6 packets entering MPLS tunnel";
                    }
                    enum "gtp-inet-outer" {
                      value 1;
                      description
                        "Apply to outer IP header";
                    }
                    enum "gtp-inet-both" {
                      value 2;
                      description
                        "Apply to both IP header";
                    }
                  }
                  ordered-by user;
                  description
                    "Specify protocol matching criteria";
                }
              }  // list dscp-ipv6
    
              list exp {
                key "name";
                description "EXP rewrite rule";
                leaf name {
                  type union {
                    type string {
                      pattern "default";
                    }
                    type string {
                      length "1 .. 64";
                    }
                  }
                  description
                    "Name of rewrite rule to be applied";
                }
    
                leaf-list protocol {
                  type enumeration {
                    enum "mpls-any" {
                      value 0;
                      description
                        "Apply to MPLS packets, write MPLS header only";
                    }
                    enum "mpls-inet-both" {
                      value 1;
                      description
                        "Apply to IPv4 MPLS packets, write MPLS and IPv4 header";
                    }
                    enum
                      "mpls-inet-both-non-vpn" {
                      value 2;
                      description
                        "Apply to IPv4 MPLS packets, write MPLS and IPv4 header for only non VPN traffic";
                    }
                  }
                  ordered-by user;
                  description
                    "Specify protocol matching criteria";
                }
              }  // list exp
    
              container ieee-802.1 {
                description
                  "IEEE-802.1 rewrite rule";
                leaf rewrite-rule-name {
                  type union {
                    type string {
                      pattern "default";
                    }
                    type string {
                      length "1 .. 64";
                    }
                  }
                  description
                    "Name of rewrite rule to be applied";
                }
    
                leaf vlan-tag {
                  type enumeration {
                    enum "outer" {
                      value 0;
                      description
                        "Rewrite rule applies to outer VLAN tag";
                    }
                    enum "outer-and-inner" {
                      value 1;
                      description
                        "Rewrite rule applies to both outer and inner VLAN tags";
                    }
                  }
                  description
                    "One or more VLAN tags to which rewrite rule applies";
                }
              }  // container ieee-802.1
    
              list inet-precedence {
                key "name";
                description
                  "IPv4 precedence rewrite rule";
                leaf name {
                  type union {
                    type string {
                      pattern "default";
                    }
                    type string {
                      length "1 .. 64";
                    }
                  }
                  description
                    "Name of rewrite rule to be applied";
                }
    
                leaf-list protocol {
                  type enumeration {
                    enum "mpls" {
                      value 0;
                      description
                        "Apply to IPv4 packets entering MPLS tunnel";
                    }
                    enum "gtp-inet-outer" {
                      value 1;
                      description
                        "Apply to outer IP header";
                    }
                    enum "gtp-inet-both" {
                      value 2;
                      description
                        "Apply to both IP header";
                    }
                    enum "inet-outer" {
                      value 3;
                      description
                        "Apply to outer IP header";
                    }
                    enum "inet-both" {
                      value 4;
                      description
                        "Apply to both IP header";
                    }
                  }
                  ordered-by user;
                  description
                    "Specify protocol matching criteria";
                }
              }  // list inet-precedence
    
              container ieee-802.1ad {
                junos:must "(!(".. ieee-802.1"))";
                junos:must-message "ieee-802.1ad and ieee-802.1 not allowed on same unit";
                description
                  "IEEE-802.1ad (DEI) rewrite rule";
                uses apply-advanced;
    
                leaf rewrite-rule-name {
                  type union {
                    type string {
                      pattern "default";
                    }
                    type string {
                      length "1 .. 64";
                    }
                  }
                  description
                    "Name of rewrite rule to be applied";
                }
    
                leaf vlan-tag {
                  type enumeration {
                    enum "outer" {
                      value 0;
                      description
                        "Rewrite rule applies to outer VLAN tag";
                    }
                    enum "outer-and-inner" {
                      value 1;
                      description
                        "Rewrite rule applies to both outer and inner VLAN tags";
                    }
                  }
                  description
                    "One or more VLAN tags to which rewrite rule applies";
                }
              }  // container ieee-802.1ad
            }  // container rewrite-rules
          }  // list unit
        }  // grouping cos_interfaces_type
    
        grouping juniper-dynamic-profile-varset-object {
          leaf name {
            type string {
              length "1 .. 80";
            }
            description
              "Profile varset associated with the profile";
          }
    
          uses apply-advanced;
    
          leaf junos-mep-id {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 8191";
              }
            }
            description
              "Dynamic variable to substitute 'mep' value in the profile";
          }
    
          leaf junos-md-level {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 7";
              }
            }
            description
              "Dynamic variable to substitute 'level' value in the profile";
          }
    
          leaf junos-remote-mep-id {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 8191";
              }
            }
            description
              "Dynamic variable to substitute 'remote-mep' value in the profile";
          }
    
          leaf junos-md-name {
            type string;
            description
              "Dynamic variable to substitute 'maintenance-domain' in profile";
          }
    
          leaf junos-ma-name {
            type string {
              length "1 .. 32";
            }
            description
              "Dynamic variable to substitute 'maintenance-association' in profile";
          }
    
          leaf junos-loss-threshold {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "3 .. 256";
              }
            }
            description
              "Dynamic variable to substitute 'loss-threshold' in profile";
          }
    
          leaf junos-md-name-format {
            type enumeration {
              enum "none" {
                value 0;
                description
                  "No format specified";
              }
              enum "dns" {
                value 1;
                description
                  "Character string similar to Domain Name System name";
              }
              enum "mac+2oct" {
                value 2;
                description
                  "MAC address with 2 octet integer (xx:xx:xx:xx:xx:xx.Y format)";
              }
              enum "character-string" {
                value 3;
                description "Character string";
              }
            }
            description
              "Dynamic variable to substitute 'name-format' in profile";
          }
    
          leaf junos-ma-name-format {
            type enumeration {
              enum "2octet" {
                value 0;
                description
                  "An integer in the range 0..65535";
              }
              enum "rfc-2685-vpn-id" {
                value 1;
                description
                  "VPN identifier that complies with RFC 2685";
              }
              enum "vlan" {
                value 2;
                description
                  "Primary VLAN identifier";
              }
              enum "character-string" {
                value 3;
                description "Character string";
              }
              enum "icc" {
                value 4;
                description "ITU Carrier Code";
              }
            }
            description
              "Dynamic variable to substitute 'short-name-format' in profile";
          }
    
          leaf junos-ccm-interval {
            type enumeration {
              enum "10ms" {
                junos:must "(!("routing-options ppm no-delegate-processing"))";
                junos:must-message "10ms interval for continuity-check is not supported with no-delegate-processing";
                value 0;
              }
              enum "100ms" {
                value 1;
              }
              enum "1s" {
                value 2;
              }
              enum "10s" {
                value 3;
              }
              enum "1m" {
                value 4;
              }
              enum "10m" {
                value 5;
              }
            }
            description
              "Dynamic variable to substitute 'interval' in profile";
          }
    
          leaf junos-action-profile {
            junos:must "("protocols oam ethernet connectivity-fault-management action-profile $$")";
            junos:must-message "Action profile not configured";
            type string;
            description
              "Dynamic variable to substitute 'action-profile' in profile";
          }
    
          leaf junos-layer2-output-policer {
            type string;
            description
              "Dynamic variable to substitute 'layer2 output-policer'";
          }
        }  // grouping juniper-dynamic-profile-varset-object
    
        grouping juniper-dynamic-variable-object {
          leaf name {
            type string {
              junos:posix-pattern "^[a-zA-Z][a-zA-Z0-9_-]*$";
              junos:pattern-message "Variable names must start with letters a-z A-Z";
            }
            description "Name of variable";
          }
    
          uses apply-advanced;
    
          leaf equals {
            type string;
            description
              "Computable expression of dynamic profile variables";
          }
    
          leaf default-value {
            type string;
            description
              "Default value for variable";
          }
    
          leaf mandatory {
            type empty;
            description
              "Variable must be supplied by external server";
          }
    
          leaf uid-reference {
            type empty;
            description
              "Variable that refers to the uid variable";
          }
    
          leaf uid {
            type empty;
            description
              "Compute unique Id value for the variable";
          }
        }  // grouping juniper-dynamic-variable-object
    
        grouping juniper-protocols-pim {
          uses apply-advanced;
    
          container family {
            description "Local address family";
            container any {
              presence "enable any";
              description
                "Default properties for all address families";
              uses apply-advanced;
    
              leaf disable {
                type empty;
                description
                  "Disable all families";
              }
            }  // container any
    
            container inet {
              presence "enable inet";
              description
                "IPv4 specific properties";
              uses apply-advanced;
    
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable PIMv4 on all interfaces";
                }
              }  // choice enable-disable
            }  // container inet
    
            container inet6 {
              presence "enable inet6";
              description
                "IPv6 specific properties";
              uses apply-advanced;
    
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable PIMv6 on all interfaces";
                }
              }  // choice enable-disable
            }  // container inet6
          }  // container family
    
          choice enable-disable {
            leaf disable {
              type empty;
              description "Disable PIM";
            }
          }  // choice enable-disable
    
          container nonstop-routing {
            junos:must "("routing-options nonstop-routing")";
            junos:must-message "To disable PIM nonstop-routing, non-stop routing must be globally enabled.";
            description
              "Configure PIM nonstop-routing attributes";
            uses apply-advanced;
    
            choice enable-disable {
              leaf disable {
                type empty;
                description
                  "Disable non-stop routing for PIM";
              }
            }  // choice enable-disable
          }  // container nonstop-routing
    
          container traceoptions {
            description "Trace options for PIM";
            uses apply-advanced;
    
            container file {
              description "Trace file options";
              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 replace {
                type empty;
                status deprecated;
                description
                  "Replace trace file rather than appending to it";
              }
    
              leaf size {
                type string;
                description
                  "Maximum trace file size";
              }
    
              leaf files {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "2 .. 1000";
                  }
                }
                default "10";
                description
                  "Maximum number of trace files";
              }
    
              leaf no-stamp {
                type empty;
                status deprecated;
                description
                  "Do not timestamp trace file";
              }
    
              choice world-readable-choice {
                leaf world-readable {
                  type empty;
                  description
                    "Allow any user to read the log file";
                }
                leaf no-world-readable {
                  type empty;
                  description
                    "Don't allow any user to read the log file";
                }
              }  // choice world-readable-choice
            }  // container file
    
            list flag {
              key "name";
              ordered-by user;
              description "Tracing parameters";
              leaf name {
                type enumeration {
                  enum "route" {
                    value 0;
                    description
                      "Trace routing information";
                  }
                  enum "packets" {
                    value 1;
                    description
                      "Trace all PIM packets";
                  }
                  enum "hello" {
                    value 2;
                    description
                      "Trace hello packets";
                  }
                  enum "register" {
                    value 3;
                    description
                      "Trace register/register-stop messages";
                  }
                  enum "join" {
                    value 4;
                    description
                      "Trace join/prune/graft/graft-ack messages";
                  }
                  enum "prune" {
                    value 5;
                    description
                      "Trace join/prune/graft/graft-ack messages";
                  }
                  enum "graft" {
                    value 6;
                    description
                      "Trace join/prune/graft/graft-ack messages";
                  }
                  enum "bootstrap" {
                    value 7;
                    description
                      "Trace bootstrap/RP/auto-RP messages";
                  }
                  enum "rp" {
                    value 8;
                    description
                      "Trace bootstrap/RP/auto-RP messages";
                  }
                  enum "autorp" {
                    value 9;
                    description
                      "Trace bootstrap/RP/auto-RP messages";
                  }
                  enum "assert" {
                    value 10;
                    description
                      "Trace assert messages";
                  }
                  enum "mdt" {
                    value 11;
                    description
                      "Trace messages related to multicast data tunnels";
                  }
                  enum "nsr-synchronization" {
                    value 12;
                    description
                      "Trace NSR synchronization events";
                  }
                  enum
                    "bidirectional-df-election" {
                    value 13;
                    description
                      "Trace bidirectional PIM DF election events";
                  }
                  enum "mofrr" {
                    value 14;
                    description
                      "Trace Multicast only Fast Re-Route messages";
                  }
                  enum "normal" {
                    value 15;
                    description
                      "Trace normal events";
                  }
                  enum "general" {
                    value 16;
                    description
                      "Trace general events";
                  }
                  enum "state" {
                    value 17;
                    description
                      "Trace state transitions";
                  }
                  enum "policy" {
                    value 18;
                    description
                      "Trace policy processing";
                  }
                  enum "task" {
                    value 19;
                    description
                      "Trace routing protocol task processing";
                  }
                  enum "timer" {
                    value 20;
                    description
                      "Trace routing protocol timer processing";
                  }
                  enum "all" {
                    value 21;
                    description
                      "Trace everything";
                  }
                }
              }
    
              leaf send {
                type empty;
                description
                  "Trace transmitted packets";
              }
    
              leaf receive {
                type empty;
                description
                  "Trace received packets";
              }
    
              leaf detail {
                type empty;
                description
                  "Trace detailed information";
              }
    
              leaf disable {
                type empty;
                description
                  "Disable this trace flag";
              }
    
              container filter {
                presence "enable filter";
                description
                  "Filter to apply to this flag";
                uses pim_filter_obj;
              }  // container filter
            }  // list flag
          }  // container traceoptions
    
          container dense-groups {
            description
              "Dense mode groups for sparse-dense mode";
            uses apply-advanced;
    
            leaf dynamic-reject {
              type empty;
              description
                "Reject dynamic autorp negative dense-mode prefixes learnt from network";
            }
    
            list pim-dense-group-type {
              key "name";
              ordered-by user;
              leaf name {
                type jt:ipprefix;
                description
                  "Group address or range to forward in dense mode";
              }
    
              choice dense-group-flags {
                leaf reject {
                  type empty;
                  description
                    "Do not include prefix as dense mode; force sparse mode";
                }
                leaf announce {
                  type empty;
                  description
                    "Advertise as negative prefix in auto-RP announce messages";
                }
              }  // choice dense-group-flags
            }  // list pim-dense-group-type
          }  // container dense-groups
    
          leaf vpn-tunnel-source {
            type jt:ipv4addr;
            status deprecated;
            description
              "Source address for the provider space mGRE tunnel";
          }
    
          leaf vpn-group-address {
            junos:must "(!(".. .. .. provider-tunnel pim-ssm"))";
            junos:must-message "'provider-tunnel pim-ssm' can not be configured with 'pim vpn-group-address'. Please disable one of them.";
            junos:must "((!(".. .. .. provider-tunnel pim-asm") || ".. .. .. provider-tunnel pim-asm group-address $$"))";
            junos:must-message "MVPN inclusive provider-tunnel group-address must be same as 'vpn-group-address'";
            type jt:ipv4addr;
            status deprecated;
            description
              "Group address for the VPN in provider space";
          }
    
          leaf-list tunnel-devices {
            type union {
              type jt:interface-device;
              type string {
                pattern "<.*>|$.*";
              }
            }
            ordered-by user;
            description
              "Tunnel devices to be used for creating mt interfaces";
          }
    
          container rpf-selection {
            description "Select RPF neighbor";
            uses apply-advanced;
    
            list group {
              key "name";
              ordered-by user;
              description
                "IP prefix of multicast group";
              leaf name {
                type jt:ipprefix;
                description "IP prefix of group";
              }
    
              uses apply-advanced;
    
              container wildcard-source {
                presence
                  "enable wildcard-source";
                description
                  "Select RPF for (*,g) and unspecified (s,g) joins";
                uses apply-advanced;
    
                leaf next-hop {
                  type jt:ipaddr;
                  description "Next-hop address";
                }
              }  // container wildcard-source
    
              list source {
                key "name";
                ordered-by user;
                description
                  "IP prefix of one or more multicast sources";
                leaf name {
                  type jt:ipprefix;
                  description
                    "IP prefix of source";
                }
    
                uses apply-advanced;
    
                leaf next-hop {
                  type jt:ipaddr;
                  description "Next-hop address";
                }
              }  // list source
            }  // list group
    
            list prefix-list {
              key "name";
              ordered-by user;
              description
                "Multicast group prefix list";
              leaf name {
                junos:must "("policy-options prefix-list $$")";
                junos:must-message "This prefix-list must be configured in policy-options.";
                type string;
                description
                  "Name of prefix list to match against";
              }
    
              uses apply-advanced;
    
              container wildcard-source {
                presence
                  "enable wildcard-source";
                description
                  "Select RPF for (*,g) and unspecified (s,g) joins";
                uses apply-advanced;
    
                leaf next-hop {
                  type jt:ipaddr;
                  description "Next-hop address";
                }
              }  // container wildcard-source
    
              list source {
                key "name";
                ordered-by user;
                description
                  "IP prefix of one or more multicast sources";
                leaf name {
                  type jt:ipprefix;
                  description
                    "IP prefix of source";
                }
    
                uses apply-advanced;
    
                leaf next-hop {
                  type jt:ipaddr;
                  description "Next-hop address";
                }
              }  // list source
            }  // list prefix-list
          }  // container rpf-selection
    
          container mvpn {
            presence "enable mvpn";
            description
              "PIM MVPN control-plane options";
            uses apply-advanced;
    
            container autodiscovery {
              junos:must "(!(".. .. vpn-group-address"))";
              junos:must-message "PIM MVPN autodiscovery options cannot be configured with 'vpn-group-address'";
              junos:must "(".. .. .. mvpn")";
              junos:must-message "Autodiscovery for PIM MVPNs requires 'protocols mvpn'";
              junos:must "(!(".. .. mdt"))";
              junos:must-message "PIM MVPN auto-discovery cannot be configured with 'pim mdt'";
              status deprecated;
              description
                "PE router autodiscovery options for SSM MDTs";
              uses apply-advanced;
    
              leaf inet-mdt {
                type empty;
                description
                  "MDT-SAFI PE autodiscovery for SSM MDTs";
              }
            }  // container autodiscovery
    
            container family {
              description
                "PIM MVPN address family";
              uses apply-advanced;
    
              container inet {
                description
                  "IPv4 PIM MVPN specific properties";
                uses apply-advanced;
    
                leaf rosen-mvpn {
                  type empty;
                  status deprecated;
                }
    
                leaf ngen-mvpn {
                  junos:must "(".. .. .. .. .. mvpn")";
                  junos:must-message "Requires 'protocols mvpn'";
                  type empty;
                  status deprecated;
                }
    
                container autodiscovery {
                  junos:must "(!(".. .. .. .. vpn-group-address"))";
                  junos:must-message "PIM MVPN autodiscovery options cannot be configured with 'vpn-group-address'";
                  junos:must "(".. .. .. .. .. mvpn")";
                  junos:must-message "Autodiscovery for PIM MVPNs requires 'protocols mvpn'";
                  junos:must "(!(".. .. .. .. mdt"))";
                  junos:must-message "PIM MVPN auto-discovery cannot be configured with 'pim mdt'";
                  description
                    "PE router autodiscovery options for SSM MDTs";
                  uses apply-advanced;
    
                  leaf inet-mdt {
                    type empty;
                    description
                      "MDT-SAFI PE autodiscovery for SSM MDTs";
                  }
                }  // container autodiscovery
    
                leaf disable {
                  type empty;
                  description
                    "Disable family IPv4";
                }
              }  // container inet
    
              container inet6 {
                description
                  "IPv6 PIM MVPN specific properties";
                uses apply-advanced;
    
                leaf rosen-mvpn {
                  type empty;
                  status deprecated;
                }
    
                leaf ngen-mvpn {
                  junos:must "(".. .. .. .. .. mvpn")";
                  junos:must-message "Requires 'protocols mvpn'";
                  type empty;
                  status deprecated;
                }
    
                container autodiscovery {
                  junos:must "(!(".. .. .. .. vpn-group-address"))";
                  junos:must-message "PIM MVPN autodiscovery options cannot be configured with 'vpn-group-address'";
                  junos:must "(".. .. .. .. .. mvpn")";
                  junos:must-message "Autodiscovery for PIM MVPNs requires 'protocols mvpn'";
                  junos:must "(!(".. .. .. .. mdt"))";
                  junos:must-message "PIM MVPN auto-discovery cannot be configured with 'pim mdt'";
                  description
                    "PE router autodiscovery options for SSM MDTs";
                  uses apply-advanced;
    
                  leaf inet-mdt {
                    type empty;
                    description
                      "MDT-SAFI PE autodiscovery for SSM MDTs";
                  }
                }  // container autodiscovery
    
                leaf disable {
                  type empty;
                  description
                    "Disable family IPv6";
                }
              }  // container inet6
            }  // container family
          }  // container mvpn
    
          container rib-group {
            description "Routing table group";
            uses rib_group_type;
          }  // container rib-group
    
          leaf-list import {
            type jt:policy-algebra;
            ordered-by user;
            description
              "PIM sparse import join policy";
          }
    
          leaf-list export {
            type jt:policy-algebra;
            ordered-by user;
            description
              "PIM sparse export join policy";
          }
    
          container mldp-inband-signalling {
            junos:must "(!("system processes routing bgp rib-sharding"))";
            junos:must-message "Can't be configured together with rib-sharding";
            presence
              "enable mldp-inband-signalling";
            uses apply-advanced;
    
            leaf-list policy {
              type jt:policy-algebra;
              ordered-by user;
              description
                "PIM MLDP join translation filter policy";
            }
          }  // container mldp-inband-signalling
    
          container rpf-vector {
            description "RPF vector TLV";
            uses apply-advanced;
    
            leaf-list policy {
              type jt:policy-algebra;
              ordered-by user;
              description
                "RPF vector TLV include policy";
            }
          }  // container rpf-vector
    
          leaf assert-timeout {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "5 .. 210";
              }
            }
            default "180";
            description "Set assert timeout";
          }
    
          leaf assert-robust-count {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 5";
              }
            }
            default "2";
            description
              "Number of assert messages an assert winner sends in one cycle";
          }
    
          leaf join-prune-timeout {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "210 .. 420";
              }
            }
            default "210";
            description "Set join/prune timeout";
          }
    
          container spt-threshold {
            description
              "Set shortest-path-tree threshold policy";
            uses apply-advanced;
    
            leaf-list infinity {
              type jt:policy-algebra;
              ordered-by user;
              description
                "Apply policy to always remain on shared tree";
            }
          }  // container spt-threshold
    
          container sglimit {
            description
              "Set limit on number of (S,G) states ";
            uses apply-advanced;
    
            list family {
              junos:must "(!(".. maximum"))";
              junos:must-message "Family wise threshold cannot be configuredif global threshold is already configured";
              key "name";
              ordered-by user;
              description "Protocol family";
              leaf name {
                type enumeration {
                  enum "inet" {
                    value 0;
                    description "IPv4 family";
                  }
                  enum "inet6" {
                    value 1;
                    description "IPv6 family";
                  }
                }
              }
    
              uses apply-advanced;
    
              leaf maximum {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 65535";
                  }
                }
                description
                  "Maximum limit above which additional entries are not accepted";
              }
    
              leaf threshold {
                junos:must "(".. maximum")";
                junos:must-message "To configure threshold, maximum must be configured";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 100";
                  }
                }
                description
                  "Percentage of maximum at which to start generating warnings";
              }
    
              leaf log-interval {
                junos:must "(".. maximum")";
                junos:must-message "To configure log-interval, maximum must be configured";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 65535";
                  }
                }
                description
                  "Time between successive log messages";
              }
            }  // list family
    
            leaf maximum {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 65535";
                }
              }
              description
                "Maximum limit above which additional entries are not accepted";
            }
    
            leaf threshold {
              junos:must "(".. maximum")";
              junos:must-message "To configure threshold, maximum must be configured";
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 100";
                }
              }
              description
                "Percentage of maximum at which to start generating warnings";
            }
    
            leaf log-interval {
              junos:must "(".. maximum")";
              junos:must-message "To configure log-interval, maximum must be configured";
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 65535";
                }
              }
              description
                "Time between successive log messages";
            }
          }  // container sglimit
    
          container rp {
            junos:must "(!(" .. passive"))";
            junos:must-message "pim rp cannot be configured with pim passive";
            description
              "Router's rendezvous point properties";
            uses apply-advanced;
    
            leaf bootstrap-priority {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 255";
                }
              }
              description
                "Eligibility to be the bootstrap router (IPv4 only)";
            }
    
            leaf-list bootstrap-import {
              type jt:policy-algebra;
              ordered-by user;
              description
                "Bootstrap import policy (IPv4 only)";
            }
    
            leaf-list bootstrap-export {
              type jt:policy-algebra;
              ordered-by user;
              description
                "Bootstrap export policy (IPv4 only)";
            }
    
            container bootstrap {
              description "Bootstrap properties";
              uses apply-advanced;
    
              container family {
                description
                  "Bootstrap address family";
                container inet {
                  junos:must "(!((".. .. .. bootstrap-priority" || (".. .. .. bootstrap-import" || ".. .. .. bootstrap-export"))))";
                  junos:must-message "Duplicate IPv4 bootstrap configuration";
                  description
                    "IPv4 bootstrap properties";
                  uses pim_bootstrap_options_type;
                }  // container inet
    
                container inet6 {
                  description
                    "IPv6 bootstrap properties";
                  uses pim_bootstrap_options_type;
                }  // container inet6
              }  // container family
            }  // container bootstrap
    
            container register-limit {
              description
                "Set limit on incoming registers that create (S,G) state";
              uses apply-advanced;
    
              list family {
                junos:must "(!(".. maximum"))";
                junos:must-message "Family wise threshold cannot be configuredif global threshold is already configured";
                key "name";
                ordered-by user;
                description "Protocol family";
                leaf name {
                  type enumeration {
                    enum "inet" {
                      value 0;
                      description "IPv4 family";
                    }
                    enum "inet6" {
                      value 1;
                      description "IPv6 family";
                    }
                  }
                }
    
                uses apply-advanced;
    
                leaf maximum {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 65535";
                    }
                  }
                  description
                    "Maximum limit above which additional entries are not accepted";
                }
    
                leaf threshold {
                  junos:must "(".. maximum")";
                  junos:must-message "To configure threshold, maximum must be configured";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "Percentage of maximum at which to start generating warnings";
                }
    
                leaf log-interval {
                  junos:must "(".. maximum")";
                  junos:must-message "To configure log-interval, maximum must be configured";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 65535";
                    }
                  }
                  description
                    "Time between successive log messages";
                }
              }  // list family
    
              leaf maximum {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 65535";
                  }
                }
                description
                  "Maximum limit above which additional entries are not accepted";
              }
    
              leaf threshold {
                junos:must "(".. maximum")";
                junos:must-message "To configure threshold, maximum must be configured";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 100";
                  }
                }
                description
                  "Percentage of maximum at which to start generating warnings";
              }
    
              leaf log-interval {
                junos:must "(".. maximum")";
                junos:must-message "To configure log-interval, maximum must be configured";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 65535";
                  }
                }
                description
                  "Time between successive log messages";
              }
            }  // container register-limit
    
            container group-rp-mapping {
              description "Group-rp-mapping";
              uses apply-advanced;
    
              list family {
                junos:must "(!(".. maximum"))";
                junos:must-message "Family wise threshold cannot be configuredif global threshold is already configured";
                key "name";
                ordered-by user;
                description "Protocol family";
                leaf name {
                  type enumeration {
                    enum "inet" {
                      value 0;
                      description "IPv4 family";
                    }
                    enum "inet6" {
                      value 1;
                      description "IPv6 family";
                    }
                  }
                }
    
                uses apply-advanced;
    
                leaf maximum {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 65535";
                    }
                  }
                  description
                    "Maximum limit above which additional entries are not accepted";
                }
    
                leaf threshold {
                  junos:must "(".. maximum")";
                  junos:must-message "To configure threshold, maximum must be configured";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  description
                    "Percentage of maximum at which to start generating warnings";
                }
    
                leaf log-interval {
                  junos:must "(".. maximum")";
                  junos:must-message "To configure log-interval, maximum must be configured";
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 65535";
                    }
                  }
                  description
                    "Time between successive log messages";
                }
              }  // list family
    
              leaf maximum {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 65535";
                  }
                }
                description
                  "Maximum limit above which additional entries are not accepted";
              }
    
              leaf threshold {
                junos:must "(".. maximum")";
                junos:must-message "To configure threshold, maximum must be configured";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 100";
                  }
                }
                description
                  "Percentage of maximum at which to start generating warnings";
              }
    
              leaf log-interval {
                junos:must "(".. maximum")";
                junos:must-message "To configure log-interval, maximum must be configured";
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 65535";
                  }
                }
                description
                  "Time between successive log messages";
              }
            }  // container group-rp-mapping
    
            leaf-list rp-register-policy {
              type jt:policy-algebra;
              ordered-by user;
              description
                "RP policy applied to incoming register messages";
            }
    
            leaf-list dr-register-policy {
              type jt:policy-algebra;
              ordered-by user;
              description
                "DR policy applied to outgoing register messages";
            }
    
            container local {
              description
                "Router's local RP properties";
              uses apply-advanced;
    
              leaf address {
                type jt:ipv4addr;
                description
                  "Local RP address (IPv4 only)";
              }
    
              choice enable-disable {
                leaf disable {
                  type empty;
                  description
                    "Disable this RP (IPv4 only)";
                }
              }  // choice enable-disable
    
              leaf priority {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 255";
                  }
                }
                description
                  "Router's priority for becoming an RP (IPv4 only)";
              }
    
              leaf hold-time {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 65535";
                  }
                }
                description
                  "How long neighbor considers this router to be up, in seconds (IPv4 only)";
              }
    
              list group-ranges {
                key "name";
                ordered-by user;
                description
                  "Group address range for which this router can be an RP (IPv4 only)";
                leaf name {
                  type jt:ipv4prefix;
                }
    
                uses apply-advanced;
              }  // list group-ranges
    
              leaf override {
                type empty;
                description
                  "Static RP mapping will take precedence over dynamic";
              }
    
              leaf process-non-null-as-null-register {
                type empty;
                description
                  "Process incoming non null registers as null registers";
              }
    
              container family {
                description
                  "Local RP address family";
                container inet {
                  description
                    "IPv4 local RP properties";
                  uses apply-advanced;
    
                  leaf address {
                    type jt:ipv4addr;
                    description
                      "Local RP address";
                  }
    
                  choice enable-disable {
                    leaf disable {
                      type empty;
                      description
                        "Disable this RP";
                    }
                  }  // choice enable-disable
    
                  leaf priority {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 255";
                      }
                    }
                    description
                      "Router's priority for becoming an RP";
                  }
    
                  leaf hold-time {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65535";
                      }
                    }
                    description
                      "How long neighbor considers this router to be up, in seconds";
                  }
    
                  list group-ranges {
                    key "name";
                    ordered-by user;
                    description
                      "Group address range for which this router can be an RP";
                    leaf name {
                      type jt:ipv4prefix;
                    }
    
                    uses apply-advanced;
                  }  // list group-ranges
    
                  leaf override {
                    type empty;
                    description
                      "Static RP mapping will take precedence over dynamic";
                  }
    
                  container anycast-pim {
                    description
                      "Attributes for IPv4 anycast PIM";
                    uses apply-advanced;
    
                    container rp-set {
                      description
                        "Rendezvous points belonging to anycast RP set";
                      uses apply-advanced;
    
                      list address {
                        key "name";
                        ordered-by user;
                        description
                          "IPv4 address of one or more remote anycast RPs";
                        leaf name {
                          type jt:ipaddr;
                          description
                            "IPv4 address of remote anycast RP";
                        }
    
                        uses apply-advanced;
    
                        leaf forward-msdp-sa {
                          type empty;
                          description
                            "Forward SAs learned from MSDP to this RP";
                        }
                      }  // list address
                    }  // container rp-set
    
                    leaf local-address {
                      type jt:ipaddr;
                      description
                        "Local address for replicating register messages to other RPs";
                    }
                  }  // container anycast-pim
                }  // container inet
    
                container inet6 {
                  description
                    "IPv6 local RP properties";
                  uses apply-advanced;
    
                  leaf address {
                    type jt:ipv6addr;
                    description
                      "Local RP address";
                  }
    
                  choice enable-disable {
                    leaf disable {
                      type empty;
                      description
                        "Disable this RP";
                    }
                  }  // choice enable-disable
    
                  leaf priority {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "0 .. 255";
                      }
                    }
                    description
                      "Router's priority for becoming an RP";
                  }
    
                  leaf hold-time {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65535";
                      }
                    }
                    description
                      "How long neighbor considers this router to be up, in seconds";
                  }
    
                  list group-ranges {
                    key "name";
                    ordered-by user;
                    description
                      "Group address range for which this router can be an RP";
                    leaf name {
                      type jt:ipv6prefix;
                    }
    
                    uses apply-advanced;
                  }  // list group-ranges
    
                  leaf override {
                    type empty;
                    description
                      "Static RP mapping will take precedence over dynamic";
                  }
    
                  container anycast-pim {
                    description
                      "Attributes for IPv6 anycast PIM";
                    uses apply-advanced;
    
                    container rp-set {
                      description
                        "Rendezvous points belonging to anycast RP set";
                      uses apply-advanced;
    
                      list address {
                        key "name";
                        ordered-by user;
                        description
                          "IPv6 address of one or more remote anycast RPs";
                        leaf name {
                          type jt:ipv6addr;
                          description
                            "IPv6 address of remote anycast RP";
                        }
    
                        uses apply-advanced;
                      }  // list address
                    }  // container rp-set
    
                    leaf local-address {
                      type jt:ipv6addr;
                      description
                        "Local address for replicating register messages to other RPs";
                    }
                  }  // container anycast-pim
                }  // container inet6
              }  // container family
            }  // container local
    
            container embedded-rp {
              presence "enable embedded-rp";
              description
                "Set embedded-RP mode (IPv6 only)";
              uses apply-advanced;
    
              list group-ranges {
                key "name";
                ordered-by user;
                description
                  "Group address range of RP";
                uses pim_rp_group_range_type;
              }  // list group-ranges
    
              leaf maximum-rps {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 500";
                  }
                }
                default "100";
                description
                  "Maximum number of embedded RPs";
              }
            }  // container embedded-rp
    
            container auto-rp {
              description
                "Set auto-RP mode (IPv4 only)";
              uses apply-advanced;
    
              choice autorp-mode {
                leaf discovery {
                  type empty;
                  description
                    "Listen for auto-RP discovery messages";
                }
                leaf announce {
                  type empty;
                  description
                    "Transmit auto-RP announcement messages";
                }
                leaf mapping {
                  type empty;
                  description
                    "Transmit auto-RP mapping messages";
                }
              }  // choice autorp-mode
    
              choice mapping-agent-election-choice {
                leaf mapping-agent-election {
                  type empty;
                  description
                    "Consider higher-addressed mapping agents as authoritative";
                }
                leaf no-mapping-agent-election {
                  type empty;
                  description
                    "Don't consider higher-addressed mapping agents as authoritative";
                }
              }  // choice mapping-agent-election-choice
            }  // container auto-rp
    
            container static {
              description
                "Configure static PIM RPs";
              uses apply-advanced;
    
              list address {
                key "name";
                ordered-by user;
                description "RP address";
                leaf name {
                  type jt:ipaddr;
                  description "IP address of RP";
                }
    
                uses apply-advanced;
    
                leaf version {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 2";
                    }
                  }
                  status deprecated;
                  description
                    "PIM version of RP";
                }
    
                list group-ranges {
                  key "name";
                  ordered-by user;
                  description
                    "Group address range of RP";
                  uses pim_rp_group_range_type;
                }  // list group-ranges
    
                leaf override {
                  type empty;
                  description
                    "Static RP mapping will take precedence over dynamic";
                }
              }  // list address
            }  // container static
    
            leaf register-probe-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "5 .. 60";
                }
              }
              units "seconds";
              default "5";
              description "Register probe time";
            }
          }  // container rp
    
          leaf passive {
            junos:must "(!(any ".. interface <*> distributed-dr"))";
            junos:must-message "pim passive cannot be configured with pim distributed-dr";
            junos:must "(!(" .. rp"))";
            junos:must-message "pim passive cannot be configured with pim rp";
            type empty;
            description
              "Configure PIM protocol in passive mode";
          }
    
          list interface {
            key "name";
            ordered-by user;
            description "PIM interface options";
            leaf name {
              junos:must "(((("routing-options multicast interface $$ disable" || ("routing-options multicast interface $$ maximum-bandwidth" || ("routing-options multicast interface $$ nexthop-unicast-address" || ("routing-options multicast interface $$ reverse-oif-mapping" || ("routing-options multicast interface $$ subscriber-leave-timer" || "routing-options multicast interface $$ no-qos-adjust"))))) && !("routing-options multicast interface $$ enable")) || ("protocols pim interface $$ disable" || !(("routing-options multicast interface $$" || "routing-options multicast interface $$ enable")))))";
              junos:must-message "Multicast cannot be enabled on the same interface in the [edit routing-options] hierarchy";
              type string;
              description "Interface name";
            }
    
            uses apply-advanced;
    
            container family {
              description "Local address family";
              container any {
                presence "enable any";
                description
                  "Default properties for all families";
                uses apply-advanced;
    
                leaf disable {
                  type empty;
                  description
                    "Disable all families";
                }
              }  // container any
    
              container inet {
                presence "enable inet";
                description
                  "IPv4 specific properties";
                uses apply-advanced;
    
                container bfd-liveness-detection {
                  description
                    "Bidirectional Forwarding Detection options";
                  uses apply-advanced;
    
                  leaf version {
                    type enumeration {
                      enum "0" {
                        value 0;
                        description
                          "BFD version 0 (deprecated)";
                      }
                      enum "1" {
                        value 1;
                        description
                          "BFD version 1";
                      }
                      enum "automatic" {
                        value 2;
                        description
                          "Choose BFD version automatically";
                      }
                    }
                    default "automatic";
                    description
                      "BFD protocol version number";
                  }
    
                  leaf minimum-interval {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "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 authentication {
                    description
                      "Authentication options";
                    uses apply-advanced;
    
                    leaf key-chain {
                      junos:must "(".. algorithm")";
                      junos:must-message "May not be configured without algorithm";
                      junos:must "("security authentication-key-chains key-chain $$")";
                      junos:must-message "Referenced key-chain must be defined";
                      type string;
                      description
                        "Key chain name";
                    }
    
                    leaf algorithm {
                      junos:must "(".. key-chain")";
                      junos:must-message "May not be configured without key-chain";
                      type enumeration {
                        enum "simple-password" {
                          value 0;
                          description
                            "Simple password";
                        }
                        enum "keyed-md5" {
                          value 1;
                          description
                            "Keyed message Digest 5";
                        }
                        enum
                          "meticulous-keyed-md5" {
                          value 2;
                          description
                            "Meticulous keyed message Digest 5";
                        }
                        enum "keyed-sha-1" {
                          value 3;
                          description
                            "Keyed secure hash algorithm (SHA1) ";
                        }
                        enum
                          "meticulous-keyed-sha-1" {
                          value 4;
                          description
                            "Meticulous keyed secure hash algorithm (SHA1) ";
                        }
                      }
                      description
                        "Algorithm name";
                    }
    
                    leaf loose-check {
                      type empty;
                      description
                        "Verify authentication only if authentication is negotiated";
                    }
                  }  // container authentication
                }  // container bfd-liveness-detection
    
                leaf mcae-mac-synchronize {
                  type empty;
                  description
                    "Mclag mac synchronization";
                }
    
                choice enable-disable {
                  leaf disable {
                    type empty;
                    description
                      "Disable PIMv4 on this interface";
                  }
                }  // choice enable-disable
              }  // container inet
    
              container inet6 {
                presence "enable inet6";
                description
                  "IPv6 specific properties";
                uses apply-advanced;
    
                container bfd-liveness-detection {
                  description
                    "Bidirectional Forwarding Detection options";
                  uses apply-advanced;
    
                  leaf version {
                    type enumeration {
                      enum "0" {
                        value 0;
                        description
                          "BFD version 0 (deprecated)";
                      }
                      enum "1" {
                        value 1;
                        description
                          "BFD version 1";
                      }
                      enum "automatic" {
                        value 2;
                        description
                          "Choose BFD version automatically";
                      }
                    }
                    default "automatic";
                    description
                      "BFD protocol version number";
                  }
    
                  leaf minimum-interval {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "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 authentication {
                    description
                      "Authentication options";
                    uses apply-advanced;
    
                    leaf key-chain {
                      junos:must "(".. algorithm")";
                      junos:must-message "May not be configured without algorithm";
                      junos:must "("security authentication-key-chains key-chain $$")";
                      junos:must-message "Referenced key-chain must be defined";
                      type string;
                      description
                        "Key chain name";
                    }
    
                    leaf algorithm {
                      junos:must "(".. key-chain")";
                      junos:must-message "May not be configured without key-chain";
                      type enumeration {
                        enum "simple-password" {
                          value 0;
                          description
                            "Simple password";
                        }
                        enum "keyed-md5" {
                          value 1;
                          description
                            "Keyed message Digest 5";
                        }
                        enum
                          "meticulous-keyed-md5" {
                          value 2;
                          description
                            "Meticulous keyed message Digest 5";
                        }
                        enum "keyed-sha-1" {
                          value 3;
                          description
                            "Keyed secure hash algorithm (SHA1) ";
                        }
                        enum
                          "meticulous-keyed-sha-1" {
                          value 4;
                          description
                            "Meticulous keyed secure hash algorithm (SHA1) ";
                        }
                      }
                      description
                        "Algorithm name";
                    }
    
                    leaf loose-check {
                      type empty;
                      description
                        "Verify authentication only if authentication is negotiated";
                    }
                  }  // container authentication
                }  // container bfd-liveness-detection
    
                choice enable-disable {
                  leaf disable {
                    type empty;
                    description
                      "Disable PIMv6 on this interface";
                  }
                }  // choice enable-disable
              }  // container inet6
            }  // container family
    
            choice enable-disable {
              leaf disable {
                type empty;
                description
                  "Disable PIM on this interface";
              }
            }  // choice enable-disable
    
            leaf mode {
              type enumeration {
                enum "dense" {
                  value 0;
                  description "Dense mode";
                }
                enum "sparse" {
                  value 1;
                  description "Sparse mode";
                }
                enum "sparse-dense" {
                  value 2;
                  description
                    "Sparse-dense mode";
                }
                enum "bidirectional-sparse" {
                  junos:must "((!(".. .. .. .. .. .. routing-instances") || any ".. .. .. .. .. .. routing-instances <*> instance-type virtual-router"))";
                  junos:must-message "Only master instance and routing-instances of type virtual-router support PIM-BIDIR.";
                  junos:must "(!(".. version $$={1}"))";
                  junos:must-message "PIM Bidirectional is not supported by PIMv1.";
                  value 3;
                  description
                    "Bidirectional-sparse mode";
                }
                enum
                  "bidirectional-sparse-dense" {
                  junos:must "((!(".. .. .. .. .. .. routing-instances") || any ".. .. .. .. .. .. routing-instances <*> instance-type virtual-router"))";
                  junos:must-message "Only master instance and routing-instances of type virtual-router support PIM-BIDIR.";
                  junos:must "(!(".. version $$={1}"))";
                  junos:must-message "PIM Bidirectional is not supported by PIMv1.";
                  value 4;
                  description
                    "Bidirectional-sparse-dense mode";
                }
              }
              description "Mode of interface";
            }
    
            leaf priority {
              junos:must "((!(".. mode dense") || (".. mode dense" && "protocols igmp interface ${interface} version 1")))";
              junos:must-message "PIM DR Priority cannot be configured in Dense Mode unless IGMP V1 is configured";
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 4294967295";
                }
              }
              description
                "Hello option DR priority";
            }
    
            container stickydr {
              presence "enable stickydr";
              description "Make DR sticky";
              uses apply-advanced;
            }  // container stickydr
    
            container multiple-triggered-joins {
              presence
                "enable multiple-triggered-joins";
              description
                "Send multiple pim triggered joins in quick intervals";
              uses apply-advanced;
    
              leaf count {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "2 .. 15";
                  }
                }
                default "2";
                description
                  "Set number of triggered joins to be sent";
              }
    
              leaf interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "100 .. 1000";
                  }
                }
                default "100";
                description
                  "Set interval between multiple triggered joins to be sent in milliseconds";
              }
            }  // container multiple-triggered-joins
    
            leaf version {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 2";
                }
              }
              status deprecated;
              description "Force PIM version";
            }
    
            leaf hello-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 255";
                }
              }
              units "seconds";
              description "Hello interval";
            }
    
            leaf-list neighbor-policy {
              type jt:policy-algebra;
              ordered-by user;
              description
                "PIM neighbor policy applied to incoming hello messages";
            }
    
            leaf-list accept-join-always-from {
              type jt:policy-algebra;
              ordered-by user;
              description
                "Accept pim join/prune messages based on the policy configured";
            }
    
            leaf accept-remote-source {
              type empty;
              description
                "Accept traffic from remote source";
            }
    
            container dual-dr {
              junos:must "(!(" .. distributed-dr"))";
              junos:must-message "pim dual-dr cannot be configured with pim distributed-dr";
              presence "enable dual-dr";
              description
                "Configure PIM Dual DR";
              uses apply-advanced;
    
              leaf enhanced {
                type empty;
                description
                  "Enable enhanced PIM Dual DR";
              }
            }  // container dual-dr
    
            leaf distributed-dr {
              junos:must "(!(".. .. .. passive"))";
              junos:must-message "pim distributed-dr cannot be configured with pim passive";
              junos:must "(!(" .. dual-dr"))";
              junos:must-message "pim distributed-dr cannot be configured with pim dual-dr";
              type empty;
              description "PIM Distributed DR";
            }
    
            leaf reset-tracking-bit {
              type empty;
              description
                "Clear tracking-bit in PIM Hello LAN Prune Delay Option";
            }
    
            leaf propagation-delay {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "250 .. 2000";
                }
              }
              units "milliseconds";
              default "500";
              description
                "Propagation delay value";
            }
    
            leaf override-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "500 .. 6000";
                }
              }
              units "milliseconds";
              default "2000";
              description
                "Override interval value";
            }
    
            container bfd-liveness-detection {
              status deprecated;
              description
                "Bidirectional Forwarding Detection options (ipv4 only)";
              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 authentication {
                description
                  "Authentication options";
                uses apply-advanced;
    
                leaf key-chain {
                  junos:must "(".. algorithm")";
                  junos:must-message "May not be configured without algorithm";
                  junos:must "("security authentication-key-chains key-chain $$")";
                  junos:must-message "Referenced key-chain must be defined";
                  type string;
                  description "Key chain name";
                }
    
                leaf algorithm {
                  junos:must "(".. key-chain")";
                  junos:must-message "May not be configured without key-chain";
                  type enumeration {
                    enum "simple-password" {
                      value 0;
                      description
                        "Simple password";
                    }
                    enum "keyed-md5" {
                      value 1;
                      description
                        "Keyed message Digest 5";
                    }
                    enum "meticulous-keyed-md5" {
                      value 2;
                      description
                        "Meticulous keyed message Digest 5";
                    }
                    enum "keyed-sha-1" {
                      value 3;
                      description
                        "Keyed secure hash algorithm (SHA1) ";
                    }
                    enum
                      "meticulous-keyed-sha-1" {
                      value 4;
                      description
                        "Meticulous keyed secure hash algorithm (SHA1) ";
                    }
                  }
                  description "Algorithm name";
                }
    
                leaf loose-check {
                  type empty;
                  description
                    "Verify authentication only if authentication is negotiated";
                }
              }  // container authentication
            }  // container bfd-liveness-detection
          }  // list interface
    
          container mdt {
            junos:must "((!(" .. .. mvpn") || ".. mvpn family inet rosen-mvpn"))";
            junos:must-message "Data tunnels cannot be configured with 'protocols mvpn'";
            status deprecated;
            description
              "Configure multicast data tunnel parameters";
            uses apply-advanced;
    
            container threshold {
              description
                "Threshold for creation of multicast tunnels";
              uses apply-advanced;
    
              list group {
                key "name";
                ordered-by user;
                description
                  "IP prefix of multicast group";
                leaf name {
                  type jt:ipprefix;
                  description
                    "IP prefix of group";
                }
    
                uses apply-advanced;
    
                list source {
                  key "name";
                  ordered-by user;
                  description
                    "IP prefix of one or more multicast sources ";
                  leaf name {
                    type jt:ipprefix;
                    description
                      "IP prefix of source";
                  }
    
                  uses apply-advanced;
    
                  leaf rate {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "10 .. 1000000";
                      }
                    }
                    units "kilobits";
                    description
                      "Data threshold to create new tunnel";
                  }
                }  // list source
              }  // list group
            }  // container threshold
    
            leaf data-mdt-reuse {
              type empty;
              description
                "Allow multiple customer streams to be transmitted over one data tunnel ";
            }
    
            leaf tunnel-limit {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 8192";
                }
              }
              description
                "Maximum multicast data tunnels";
            }
    
            leaf group-range {
              type jt:ipprefix;
              description
                "Group address range for multicast data tunnels";
            }
          }  // container mdt
    
          container graceful-restart {
            description
              "Configure graceful restart attributes";
            uses apply-advanced;
    
            choice enable-disable {
              leaf disable {
                type empty;
                description
                  "Disable PIM graceful restart capability";
              }
            }  // choice enable-disable
    
            leaf restart-duration {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "30 .. 300";
                }
              }
              units "seconds";
              description
                "Maximum time for graceful restart to finish (seconds)";
            }
    
            leaf no-bidirectional-mode {
              type empty;
              description
                "Disable PIM graceful restart for bidirectional mode";
            }
    
            leaf restart-complete-duration {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "5 .. 300";
                }
              }
              units "seconds";
              description
                "Maximum time for graceful restart to complete (seconds)";
            }
          }  // container graceful-restart
    
          container join-load-balance {
            presence "enable join-load-balance";
            description
              "Configure PIM join load balancing";
            uses apply-advanced;
    
            leaf automatic {
              type empty;
              description
                "Enable automatic PIM join load balancing";
            }
          }  // container join-load-balance
    
          leaf standby-path-creation-delay {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 300";
              }
            }
            units "seconds";
            description
              "Amount of time to wait before creating standby path";
          }
    
          leaf idle-standby-path-switchover-delay {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 300";
              }
            }
            units "seconds";
            description
              "Amount of time to wait before switching over to idle standby path";
          }
    
          leaf dr-election-on-p2p {
            type empty;
            description
              "Enable DR election on Point-to-Point Interfaces";
          }
    
          leaf no-wildcard-register-stop {
            type empty;
            description
              "Disable sending of wildcard register stop message";
          }
    
          leaf nexthop-hold-time {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 1000";
              }
            }
            units "milliseconds";
            description
              "Nexthop hold time in milliseconds";
          }
    
          leaf mpls-internet-multicast {
            junos:must "(any "routing-instances <*> instance-type mpls-internet-multicast")";
            junos:must-message "The mpls-internet-multicast instance must be configured to support multicast over MPLS";
            type empty;
            description
              "Enable support for Internet Multicast over MPLS";
          }
    
          container join-make-before-break {
            description
              "Enable PIM Join Make-Before-Break during RPF neighbor change";
            uses apply-advanced;
    
            choice enable-disable {
              leaf disable {
                type empty;
                description
                  "Disable Make-Before-Break for PIM RPF neighbor change";
              }
            }  // choice enable-disable
          }  // container join-make-before-break
    
          leaf reset-tracking-bit {
            type empty;
            description
              "Clear tracking-bit in PIM Hello LAN Prune Delay Option";
          }
    
          leaf propagation-delay {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "250 .. 2000";
              }
            }
            units "milliseconds";
            default "500";
            description
              "Propagation delay value";
          }
    
          leaf override-interval {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "500 .. 6000";
              }
            }
            units "milliseconds";
            default "2000";
            description
              "Override interval value";
          }
    
          container default-vpn-source {
            presence "enable default-vpn-source";
            description
              "Let all VRFs use master loopback address for mt interfaces";
            uses apply-advanced;
    
            leaf interface-name {
              junos:must "("interfaces $$-IFL family inet address")";
              junos:must-message "Family inet address should be configured on this loopback interface";
              type union {
                type jt:interface-unit;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description
                "Master loopback interface name";
            }
          }  // container default-vpn-source
        }  // grouping juniper-protocols-pim
    
        grouping keepalives_type {
          uses apply-advanced;
    
          leaf interval {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "1 .. 32767";
              }
            }
            units "seconds";
            description "Keepalive period";
          }
    
          leaf up-count {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "1 .. 255";
              }
            }
            description
              "Keepalive received to bring link up";
          }
    
          leaf down-count {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "1 .. 255";
              }
            }
            description
              "Keepalive missed to bring link down";
          }
        }  // grouping keepalives_type
    
        grouping log-object {
          description
            "Configure auditable security logs";
          uses apply-advanced;
    
          list exclude {
            key "name";
            ordered-by user;
            status deprecated;
            description
              "List of security log criteria to exclude from the audit log";
            leaf name {
              type string;
              description
                "Exclude criteria name";
            }
    
            uses apply-advanced;
    
            leaf destination-address {
              type jt:ipaddr;
              description "Destination address";
            }
    
            leaf destination-port {
              type union {
                type uint32;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description "Destination port";
            }
    
            leaf event-id {
              type string;
              description "Event ID filter";
            }
    
            leaf failure {
              type empty;
              description "Event was a failure";
            }
    
            leaf interface-name {
              type string;
              description "Name of interface";
            }
    
            leaf policy-name {
              type string;
              description "Policy name filter";
            }
    
            leaf process {
              type string;
              description
                "Process that generated the event";
            }
    
            leaf protocol {
              type string;
              description "Protocol filter";
            }
    
            leaf source-address {
              type jt:ipaddr;
              description "Source address";
            }
    
            leaf source-port {
              type union {
                type uint32;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description "Source port";
            }
    
            leaf success {
              type empty;
              description "Event was successful";
            }
    
            leaf username {
              type string;
              description "Username filter";
            }
          }  // list exclude
    
          leaf limit {
            type union {
              type uint32;
              type string {
                pattern "<.*>|$.*";
              }
            }
            default "10000";
            status deprecated;
            description
              "Limit number of security log entries to keep in memory";
          }
    
          container cache {
            presence "enable cache";
            description
              "Cache security log events in the audit log buffer";
            uses apply-advanced;
    
            list exclude {
              junos:must "(!(".. .. exclude"))";
              junos:must-message "'security log cache exclude' and 'security log exclude' are mutually exclusive";
              key "name";
              ordered-by user;
              description
                "List of security log criteria to exclude from the audit log";
              leaf name {
                type string;
                description
                  "Exclude criteria name";
              }
    
              uses apply-advanced;
    
              leaf destination-address {
                type jt:ipaddr;
                description
                  "Destination address";
              }
    
              leaf destination-port {
                type union {
                  type uint32;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description "Destination port";
              }
    
              leaf event-id {
                type string;
                description "Event ID filter";
              }
    
              leaf failure {
                type empty;
                description
                  "Event was a failure";
              }
    
              leaf interface-name {
                type string;
                description "Name of interface";
              }
    
              leaf policy-name {
                type string;
                description "Policy name filter";
              }
    
              leaf process {
                type string;
                description
                  "Process that generated the event";
              }
    
              leaf protocol {
                type string;
                description "Protocol filter";
              }
    
              leaf source-address {
                type jt:ipaddr;
                description "Source address";
              }
    
              leaf source-port {
                type union {
                  type uint32;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description "Source port";
              }
    
              leaf success {
                type empty;
                description
                  "Event was successful";
              }
    
              leaf username {
                type string;
                description "Username filter";
              }
            }  // list exclude
    
            leaf limit {
              junos:must "(!(".. .. limit"))";
              junos:must-message "'security log cache limit' and 'security log limit' are mutually exclusive";
              type union {
                type uint32;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              default "10000";
              description
                "Limit number of security log entries to keep in memory";
            }
          }  // container cache
        }  // grouping log-object
    
        grouping lsp_nh_obj {
          leaf name {
            type string;
            description
              "LSP to use to reach destination";
          }
    
          uses apply-advanced;
    
          leaf preference {
            type union {
              type uint32;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description
              "Preference of LSP next hop";
          }
    
          leaf metric {
            type union {
              type uint32;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description "Metric of LSP next hop";
          }
        }  // grouping lsp_nh_obj
    
        grouping mac_list {
          description "MAC address";
          leaf name {
            type jt:mac-addr;
          }
    
          uses apply-advanced;
    
          container policer {
            description "MAC policing";
            uses apply-advanced;
    
            leaf input {
              type string;
              description
                "Name of policer applied to received packets";
            }
    
            leaf output {
              type string;
              description
                "Name of policer applied to transmitted packets";
            }
          }  // container policer
        }  // grouping mac_list
    
        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 martian_type {
          description "Invalid routes";
          leaf address {
            type jt:ipprefix;
            description "IP address or hostname";
          }
    
          leaf choice-ident {
            type enumeration {
              enum "exact" {
                value 0;
              }
              enum "longer" {
                value 1;
              }
              enum "orlonger" {
                value 2;
              }
              enum "upto" {
                value 3;
              }
              enum "through" {
                value 4;
              }
              enum "prefix-length-range" {
                value 5;
              }
              enum "allow" {
                value 6;
              }
            }
          }
    
          leaf choice-value {
            type string;
          }
    
          leaf allow {
            type empty;
          }
        }  // grouping martian_type
    
        grouping match_interface_object {
          leaf name {
            type union {
              type jt:interface-wildcard;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description "Interface to match";
          }
        }  // grouping match_interface_object
    
        grouping match_interface_object_oam {
          leaf name {
            type union {
              type jt:interface-wildcard;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description "Interface to match";
          }
        }  // grouping match_interface_object_oam
    
        grouping match_interface_set_object {
          leaf name {
            type string;
            description "Interface set to match";
          }
        }  // grouping match_interface_set_object
    
        grouping match_simple_dscp_value {
          uses apply-advanced;
    
          leaf value_keyword {
            type string;
          }
        }  // grouping match_simple_dscp_value
    
        grouping match_simple_port_value {
          uses apply-advanced;
    
          leaf value_keyword {
            type string;
          }
        }  // grouping match_simple_port_value
    
        grouping match_simple_protocol_value {
          uses apply-advanced;
    
          leaf value_keyword {
            type string;
          }
        }  // grouping match_simple_protocol_value
    
        grouping mpls_filter {
          description
            "Define an MPLS firewall 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;
    
          leaf-list accounting-profile {
            junos:must "("accounting-options filter-profile")";
            junos:must-message "referenced accounting profile must be defined";
            type string;
            ordered-by user;
            description
              "Accounting profile name";
          }
    
          leaf interface-specific {
            type empty;
            description
              "Defined counters are interface specific";
          }
    
          leaf physical-interface-filter {
            type empty;
            description
              "Filter is physical interface filter";
          }
    
          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;
    
            leaf filter {
              junos:must "("firewall family mpls filter $$")";
              junos:must-message "Referenced filter is not defined";
              junos:must "((!(".. from") && !(".. then")))";
              junos:must-message "Not compatible with 'from or then'";
              type string {
                junos:posix-pattern "!^((__.*)|(.{65,}))$";
                junos:pattern-message "Must be a non-reserved string of 64 characters or less";
              }
              description "Filter to include";
            }
    
            container from {
              description
                "Define match criteria";
              uses apply-advanced;
    
              choice interface-group_choice {
                leaf-list interface-group {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
                leaf-list interface-group-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice interface-group_choice
    
              choice exp_choice {
                leaf-list exp {
                  type string;
                  ordered-by user;
                  description
                    "Range of values between 0 and 7 in decimal, binary or hex";
                }
                leaf-list exp-except {
                  type string;
                  ordered-by user;
                  description
                    "Range of values between 0 and 7 in decimal, binary or hex";
                }
              }  // choice exp_choice
    
              choice ttl_choice {
                case case_1 {
                }  // case case_1
                leaf-list ttl-except {
                  type string {
                    junos:posix-pattern "^([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]|0x[0-f]|0x[0-f][0-f])(-([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]|0x[0-f]|0x[0-f][0-f]))?$";
                    junos:pattern-message "Must be a numerical TTL value or range between 0-255";
                  }
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice ttl_choice
    
              choice exp0_choice {
                case case_1 {
                }  // case case_1
                leaf-list exp0-except {
                  type string;
                  ordered-by user;
                  description
                    "Range of values between 0 and 7 in decimal, binary or hex";
                }
              }  // choice exp0_choice
    
              list interface {
                key "name";
                ordered-by user;
                description
                  "Match interface name";
                uses match_interface_object;
              }  // list interface
    
              list interface-set {
                key "name";
                ordered-by user;
                description
                  "Match interface in set";
                uses match_interface_set_object;
              }  // list interface-set
    
              choice forwarding-class_choice {
                leaf-list forwarding-class {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  ordered-by user;
                  description "String name";
                }
                leaf-list forwarding-class-except {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  ordered-by user;
                  description "String name";
                }
              }  // choice forwarding-class_choice
    
              choice ttl0_choice {
                case case_1 {
                }  // case case_1
                leaf-list ttl0-except {
                  type string {
                    junos:posix-pattern "^([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]|0x[0-f]|0x[0-f][0-f])(-([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]|0x[0-f]|0x[0-f][0-f]))?$";
                    junos:pattern-message "Must be a numerical TTL value or range between 0-255";
                  }
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice ttl0_choice
    
              choice loss-priority_choice {
                case case_1 {
                }  // case case_1
                leaf-list loss-priority-except {
                  type enumeration {
                    enum "low" {
                      value 0;
                      description
                        "Loss priority low";
                    }
                    enum "high" {
                      value 1;
                      description
                        "Loss priority high";
                    }
                    enum "medium-low" {
                      value 2;
                      description
                        "Loss priority medium-low";
                    }
                    enum "medium-high" {
                      value 3;
                      description
                        "Loss priority medium-high";
                    }
                  }
                  ordered-by user;
                }
              }  // choice loss-priority_choice
    
              choice policy-map_choice {
                leaf-list policy-map {
                  junos:must "("class-of-service policy-map $$")";
                  junos:must-message "Undefined policy-map instance";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                    length "1 .. 64";
                  }
                  ordered-by user;
                  description "String name";
                }
                leaf-list policy-map-except {
                  junos:must "("class-of-service policy-map $$")";
                  junos:must-message "Undefined policy-map instance";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                    length "1 .. 64";
                  }
                  ordered-by user;
                  description "String name";
                }
              }  // choice policy-map_choice
    
              choice exp1_choice {
                case case_1 {
                }  // case case_1
                leaf-list exp1-except {
                  type string;
                  ordered-by user;
                  description
                    "Range of values between 0 and 7 in decimal, binary or hex";
                }
              }  // choice exp1_choice
    
              choice ttl1_choice {
                case case_1 {
                }  // case case_1
                leaf-list ttl1-except {
                  type string {
                    junos:posix-pattern "^([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]|0x[0-f]|0x[0-f][0-f])(-([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]|0x[0-f]|0x[0-f][0-f]))?$";
                    junos:pattern-message "Must be a numerical TTL value or range between 0-255";
                  }
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice ttl1_choice
            }  // container from
    
            container then {
              description
                "Action to take if the 'from' condition is matched";
              uses apply-advanced;
    
              choice policer-choice {
                leaf policer {
                  junos:must "(!("firewall policer $$ aggregate"))";
                  junos:must-message "Cannot attach a aggregate policer to filter";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Name of policer to use to rate-limit traffic";
                }
                container three-color-policer {
                  description
                    "Police the packet using a three-color-policer";
                  uses apply-advanced;
    
                  choice type-choice {
                    leaf single-rate {
                      junos:must "("firewall three-color-policer $$ single-rate")";
                      junos:must-message "Referenced single-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of single-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf single-packet-rate {
                      junos:must "("firewall three-color-policer $$ single-packet-rate")";
                      junos:must-message "Referenced single-packet-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of single-packet-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf two-rate {
                      junos:must "("firewall three-color-policer $$ two-rate")";
                      junos:must-message "Referenced two-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of two-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf two-packet-rate {
                      junos:must "("firewall three-color-policer $$ two-packet-rate")";
                      junos:must-message "Referenced two-packet-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of two-packet-rate three-color policer to use to rate-limit traffic";
                    }
                  }  // choice type-choice
                }  // container three-color-policer
                leaf hierarchical-policer {
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Name of hierarchical policer to use to rate-limit traffic";
                }
              }  // choice policer-choice
    
              choice policy-map-choice {
                leaf clear-policy-map {
                  type empty;
                  description
                    "Clear the policy marking";
                }
                leaf policy-map {
                  junos:must "("class-of-service policy-map $$")";
                  junos:must-message "referenced policy map must be defined";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Policy map action";
                }
              }  // choice policy-map-choice
    
              choice mplscnt {
                case case_1 {
                }  // case case_1
                leaf count {
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Count the packet in the named counter";
                }
              }  // choice mplscnt
    
              leaf sample {
                junos:must "(("forwarding-options sampling family mpls" || ("forwarding-options packet-capture" || any "forwarding-options sampling instance <*> family mpls")))";
                junos:must-message "Requires forwarding-options sampling or packet-capture config";
                type empty;
                description "Sample the packet";
              }
    
              leaf loss-priority {
                type enumeration {
                  enum "low" {
                    value 0;
                    description
                      "Loss priority low";
                  }
                  enum "high" {
                    value 1;
                    description
                      "Loss priority high";
                  }
                  enum "medium-low" {
                    value 2;
                    description
                      "Loss priority medium-low";
                  }
                  enum "medium-high" {
                    value 3;
                    description
                      "Loss priority medium-high";
                  }
                }
                description
                  "Classify packet to loss-priority";
              }
    
              leaf forwarding-class {
                type string {
                  junos:posix-pattern "^.{1,64}$";
                  junos:pattern-message "Must be string of 64 characters or less";
                }
                description
                  "Classify packet to forwarding class";
              }
    
              leaf port-mirror-instance {
                junos:must "("forwarding-options port-mirroring instance $$")";
                junos:must-message "Referenced port-mirroring instance does not exist";
                type string {
                  junos:posix-pattern "!^((__.*)|(.{65,}))$";
                  junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                }
                description
                  "Port-mirror the packet to specified instance";
              }
    
              choice designation {
                case case_1 {
                }  // case case_1
                leaf accept {
                  type empty;
                  description
                    "Accept the packet";
                }
                leaf discard {
                  type empty;
                  description
                    "Discard the packet";
                }
                leaf next {
                  type enumeration {
                    enum "term" {
                      value 0;
                      description
                        "Continue to next term in a filter";
                    }
                  }
                  description
                    "Continue to next term in a filter";
                }
              }  // choice designation
            }  // container then
          }  // list term
        }  // grouping mpls_filter
    
        grouping mpls_ifd_options {
          uses apply-advanced;
    
          container pop-all-labels {
            presence "enable pop-all-labels";
            description
              "Pop all MPLS labels off incoming packets";
            uses apply-advanced;
    
            leaf-list required-depth {
              type enumeration {
                enum "all" {
                  value 0;
                  description
                    "Takes effect only in Stoli based FPCs, in all other FPCs equivalent to '[1 2]'";
                }
                enum "1" {
                  value 1;
                  description
                    "Required label depth of packet to pop labels";
                }
                enum "2" {
                  value 2;
                  description
                    "Required label depth of packet to pop labels";
                }
              }
              ordered-by user;
              description
                "Required label depth of packet to pop all labels";
            }
          }  // container pop-all-labels
        }  // grouping mpls_ifd_options
    
        grouping multicast_interface_options_type {
          description
            "Multicast interface options";
          leaf name {
            type union {
              type jt:interface-unit;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description "Interface name";
          }
    
          uses apply-advanced;
    
          container maximum-bandwidth {
            presence "enable maximum-bandwidth";
            description
              "Maximum multicast bandwidth for the interface";
            leaf bandwidth-limit {
              type string;
              units "bps";
              description
                "Maximum multicast bandwidth on the interface";
            }
          }  // container maximum-bandwidth
    
          choice enable-disable {
            leaf enable {
              type empty;
              status deprecated;
              description "Enable Multicast";
            }
            leaf disable {
              type empty;
              status deprecated;
              description "Disable Multicast";
            }
          }  // choice enable-disable
    
          container reverse-oif-mapping {
            presence
              "enable reverse-oif-mapping";
            description
              "Enable reverse OIF mapping on the multicast interface";
            uses apply-advanced;
    
            leaf no-qos-adjust {
              type empty;
              description
                "Disable reverse OIF mapping QoS adjustment";
            }
          }  // container reverse-oif-mapping
    
          leaf subscriber-leave-timer {
            junos:must "(".. reverse-oif-mapping")";
            junos:must-message "reverse-oif-mapping must be set";
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 30";
              }
            }
            units "seconds";
            description
              "Timeout in seconds to credit back the bandwidth on the subscriber interface";
          }
    
          leaf no-qos-adjust {
            type empty;
            description
              "Disable QoS adjustment for this interface";
          }
        }  // grouping multicast_interface_options_type
    
        grouping och-attributes {
          description
            "Optical channel configuration attributes";
          uses apply-advanced;
    
          leaf rate {
            type enumeration {
              enum "100g" {
                value 0;
                description
                  "100Gbit OCH data rate";
              }
            }
            description
              "Data rate of the OCH payload";
          }
    
          leaf modulation {
            type enumeration {
              enum "qpsk" {
                value 0;
                description
                  "QPSK Modulation Format";
              }
            }
            description
              "Optical modulation format";
          }
    
          leaf encoding {
            type enumeration {
              enum "differential" {
                value 0;
                description
                  "Differential encoding";
              }
            }
            description "Optical encoding";
          }
    
          choice channel-number {
            leaf wavelength {
              type enumeration {
                enum "1568.77" {
                  value 0;
                  description
                    "1568.77 nm/191.1003 THz 50/100Ghz spacing";
                }
                enum "1568.36" {
                  value 1;
                  description
                    "1568.36 nm/191.15000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1568.31" {
                  value 2;
                  description
                    "1568.31 nm/191.15625 THz 6.25GHz spacing";
                }
                enum "1568.26" {
                  value 3;
                  description
                    "1568.26 nm/191.16250 THz 6.25/12.5GHz spacing";
                }
                enum "1568.21" {
                  value 4;
                  description
                    "1568.21 nm/191.16875 THz 6.25GHz spacing";
                }
                enum "1568.16" {
                  value 5;
                  description
                    "1568.16 nm/191.17500 THz 6.25/12.5GHz spacing";
                }
                enum "1568.11" {
                  value 6;
                  description
                    "1568.11 nm/191.18125 THz 6.25GHz spacing";
                }
                enum "1568.05" {
                  value 7;
                  description
                    "1568.05 nm/191.18750 THz 6.25/12.5GHz spacing";
                }
                enum "1568.00" {
                  value 8;
                  description
                    "1568.00 nm/191.19375 THz 6.25GHz spacing";
                }
                enum "1567.95" {
                  value 9;
                  description
                    "1567.95 nm/191.20000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1567.90" {
                  value 10;
                  description
                    "1567.90 nm/191.20625 THz 6.25GHz spacing";
                }
                enum "1567.85" {
                  value 11;
                  description
                    "1567.85 nm/191.21250 THz 6.25/12.5GHz spacing";
                }
                enum "1567.80" {
                  value 12;
                  description
                    "1567.80 nm/191.21875 THz 6.25GHz spacing";
                }
                enum "1567.75" {
                  value 13;
                  description
                    "1567.75 nm/191.22500 THz 6.25/12.5GHz spacing";
                }
                enum "1567.70" {
                  value 14;
                  description
                    "1567.70 nm/191.23125 THz 6.25GHz spacing";
                }
                enum "1567.64" {
                  value 15;
                  description
                    "1567.64 nm/191.23750 THz 6.25/12.5GHz spacing";
                }
                enum "1567.59" {
                  value 16;
                  description
                    "1567.59 nm/191.24375 THz 6.25GHz spacing";
                }
                enum "1567.54" {
                  value 17;
                  description
                    "1567.54 nm/191.25000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1567.49" {
                  value 18;
                  description
                    "1567.49 nm/191.25625 THz 6.25GHz spacing";
                }
                enum "1567.44" {
                  value 19;
                  description
                    "1567.44 nm/191.26250 THz 6.25/12.5GHz spacing";
                }
                enum "1567.39" {
                  value 20;
                  description
                    "1567.39 nm/191.26875 THz 6.25GHz spacing";
                }
                enum "1567.34" {
                  value 21;
                  description
                    "1567.34 nm/191.27500 THz 6.25/12.5GHz spacing";
                }
                enum "1567.29" {
                  value 22;
                  description
                    "1567.29 nm/191.28125 THz 6.25GHz spacing";
                }
                enum "1567.23" {
                  value 23;
                  description
                    "1567.23 nm/191.28750 THz 6.25/12.5GHz spacing";
                }
                enum "1567.18" {
                  value 24;
                  description
                    "1567.18 nm/191.29375 THz 6.25GHz spacing";
                }
                enum "1567.13" {
                  value 25;
                  description
                    "1567.13 nm/191.30000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1567.08" {
                  value 26;
                  description
                    "1567.08 nm/191.30625 THz 6.25GHz spacing";
                }
                enum "1567.03" {
                  value 27;
                  description
                    "1567.03 nm/191.31250 THz 6.25/12.5GHz spacing";
                }
                enum "1566.98" {
                  value 28;
                  description
                    "1566.98 nm/191.31875 THz 6.25GHz spacing";
                }
                enum "1566.93" {
                  value 29;
                  description
                    "1566.93 nm/191.32500 THz 6.25/12.5GHz spacing";
                }
                enum "1566.88" {
                  value 30;
                  description
                    "1566.88 nm/191.33125 THz 6.25GHz spacing";
                }
                enum "1566.83" {
                  value 31;
                  description
                    "1566.83 nm/191.33750 THz 6.25/12.5GHz spacing";
                }
                enum "1566.77" {
                  value 32;
                  description
                    "1566.77 nm/191.34375 THz 6.25GHz spacing";
                }
                enum "1566.72" {
                  value 33;
                  description
                    "1566.72 nm/191.35000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1566.67" {
                  value 34;
                  description
                    "1566.67 nm/191.35625 THz 6.25GHz spacing";
                }
                enum "1566.62" {
                  value 35;
                  description
                    "1566.62 nm/191.36250 THz 6.25/12.5GHz spacing";
                }
                enum "1566.57" {
                  value 36;
                  description
                    "1566.57 nm/191.36875 THz 6.25GHz spacing";
                }
                enum "1566.52" {
                  value 37;
                  description
                    "1566.52 nm/191.37500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1566.47" {
                  value 38;
                  description
                    "1566.47 nm/191.38125 THz 6.25GHz spacing";
                }
                enum "1566.42" {
                  value 39;
                  description
                    "1566.42 nm/191.38750 THz 6.25/12.5GHz spacing";
                }
                enum "1566.36" {
                  value 40;
                  description
                    "1566.36 nm/191.39375 THz 6.25GHz spacing";
                }
                enum "1566.31" {
                  value 41;
                  description
                    "1566.31 nm/191.40000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1566.26" {
                  value 42;
                  description
                    "1566.26 nm/191.40625 THz 6.25GHz spacing";
                }
                enum "1566.21" {
                  value 43;
                  description
                    "1566.21 nm/191.41250 THz 6.25/12.5GHz spacing";
                }
                enum "1566.16" {
                  value 44;
                  description
                    "1566.16 nm/191.41875 THz 6.25GHz spacing";
                }
                enum "1566.11" {
                  value 45;
                  description
                    "1566.11 nm/191.42500 THz 6.25/12.5GHz spacing";
                }
                enum "1566.06" {
                  value 46;
                  description
                    "1566.06 nm/191.43125 THz 6.25GHz spacing";
                }
                enum "1566.01" {
                  value 47;
                  description
                    "1566.01 nm/191.43750 THz 6.25/12.5GHz spacing";
                }
                enum "1565.96" {
                  value 48;
                  description
                    "1565.96 nm/191.44375 THz 6.25GHz spacing";
                }
                enum "1565.90" {
                  value 49;
                  description
                    "1565.90 nm/191.45000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1565.85" {
                  value 50;
                  description
                    "1565.85 nm/191.45625 THz 6.25GHz spacing";
                }
                enum "1565.80" {
                  value 51;
                  description
                    "1565.80 nm/191.46250 THz 6.25/12.5GHz spacing";
                }
                enum "1565.75" {
                  value 52;
                  description
                    "1565.75 nm/191.46875 THz 6.25GHz spacing";
                }
                enum "1565.70" {
                  value 53;
                  description
                    "1565.70 nm/191.47500 THz 6.25/12.5GHz spacing";
                }
                enum "1565.65" {
                  value 54;
                  description
                    "1565.65 nm/191.48125 THz 6.25GHz spacing";
                }
                enum "1565.60" {
                  value 55;
                  description
                    "1565.60 nm/191.48750 THz 6.25/12.5GHz spacing";
                }
                enum "1565.55" {
                  value 56;
                  description
                    "1565.55 nm/191.49375 THz 6.25GHz spacing";
                }
                enum "1565.50" {
                  value 57;
                  description
                    "1565.50 nm/191.50000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1565.44" {
                  value 58;
                  description
                    "1565.44 nm/191.50625 THz 6.25GHz spacing";
                }
                enum "1565.39" {
                  value 59;
                  description
                    "1565.39 nm/191.51250 THz 6.25/12.5GHz spacing";
                }
                enum "1565.34" {
                  value 60;
                  description
                    "1565.34 nm/191.51875 THz 6.25GHz spacing";
                }
                enum "1565.29" {
                  value 61;
                  description
                    "1565.29 nm/191.52500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1565.24" {
                  value 62;
                  description
                    "1565.24 nm/191.53125 THz 6.25GHz spacing";
                }
                enum "1565.19" {
                  value 63;
                  description
                    "1565.19 nm/191.53750 THz 6.25/12.5GHz spacing";
                }
                enum "1565.14" {
                  value 64;
                  description
                    "1565.14 nm/191.54375 THz 6.25GHz spacing";
                }
                enum "1565.09" {
                  value 65;
                  description
                    "1565.09 nm/191.55000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1565.04" {
                  value 66;
                  description
                    "1565.04 nm/191.55625 THz 6.25GHz spacing";
                }
                enum "1564.99" {
                  value 67;
                  description
                    "1564.99 nm/191.56250 THz 6.25/12.5GHz spacing";
                }
                enum "1564.93" {
                  value 68;
                  description
                    "1564.93 nm/191.56875 THz 6.25GHz spacing";
                }
                enum "1564.88" {
                  value 69;
                  description
                    "1564.88 nm/191.57500 THz 6.25/12.5GHz spacing";
                }
                enum "1564.83" {
                  value 70;
                  description
                    "1564.83 nm/191.58125 THz 6.25GHz spacing";
                }
                enum "1564.78" {
                  value 71;
                  description
                    "1564.78 nm/191.58750 THz 6.25/12.5GHz spacing";
                }
                enum "1564.73" {
                  value 72;
                  description
                    "1564.73 nm/191.59375 THz 6.25GHz spacing";
                }
                enum "1564.68" {
                  value 73;
                  description
                    "1564.68 nm/191.60000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1564.63" {
                  value 74;
                  description
                    "1564.63 nm/191.60625 THz 6.25GHz spacing";
                }
                enum "1564.58" {
                  value 75;
                  description
                    "1564.58 nm/191.61250 THz 6.25/12.5GHz spacing";
                }
                enum "1564.53" {
                  value 76;
                  description
                    "1564.53 nm/191.61875 THz 6.25GHz spacing";
                }
                enum "1564.47" {
                  value 77;
                  description
                    "1564.47 nm/191.62500 THz 6.25/12.5GHz spacing";
                }
                enum "1564.42" {
                  value 78;
                  description
                    "1564.42 nm/191.63125 THz 6.25GHz spacing";
                }
                enum "1564.37" {
                  value 79;
                  description
                    "1564.37 nm/191.63750 THz 6.25/12.5GHz spacing";
                }
                enum "1564.32" {
                  value 80;
                  description
                    "1564.32 nm/191.64375 THz 6.25GHz spacing";
                }
                enum "1564.27" {
                  value 81;
                  description
                    "1564.27 nm/191.65000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1564.22" {
                  value 82;
                  description
                    "1564.22 nm/191.65625 THz 6.25GHz spacing";
                }
                enum "1564.17" {
                  value 83;
                  description
                    "1564.17 nm/191.66250 THz 6.25/12.5GHz spacing";
                }
                enum "1564.12" {
                  value 84;
                  description
                    "1564.12 nm/191.66875 THz 6.25GHz spacing";
                }
                enum "1564.07" {
                  value 85;
                  description
                    "1564.07 nm/191.67500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1564.02" {
                  value 86;
                  description
                    "1564.02 nm/191.68125 THz 6.25GHz spacing";
                }
                enum "1563.96" {
                  value 87;
                  description
                    "1563.96 nm/191.68750 THz 6.25/12.5GHz spacing";
                }
                enum "1563.91" {
                  value 88;
                  description
                    "1563.91 nm/191.69375 THz 6.25GHz spacing";
                }
                enum "1563.86" {
                  value 89;
                  description
                    "1563.86 nm/191.70000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1563.81" {
                  value 90;
                  description
                    "1563.81 nm/191.70625 THz 6.25GHz spacing";
                }
                enum "1563.76" {
                  value 91;
                  description
                    "1563.76 nm/191.71250 THz 6.25/12.5GHz spacing";
                }
                enum "1563.71" {
                  value 92;
                  description
                    "1563.71 nm/191.71875 THz 6.25GHz spacing";
                }
                enum "1563.66" {
                  value 93;
                  description
                    "1563.66 nm/191.72500 THz 6.25/12.5GHz spacing";
                }
                enum "1563.61" {
                  value 94;
                  description
                    "1563.61 nm/191.73125 THz 6.25GHz spacing";
                }
                enum "1563.56" {
                  value 95;
                  description
                    "1563.56 nm/191.73750 THz 6.25/12.5GHz spacing";
                }
                enum "1563.51" {
                  value 96;
                  description
                    "1563.51 nm/191.74375 THz 6.25GHz spacing";
                }
                enum "1563.45" {
                  value 97;
                  description
                    "1563.45 nm/191.75000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1563.40" {
                  value 98;
                  description
                    "1563.40 nm/191.75625 THz 6.25GHz spacing";
                }
                enum "1563.35" {
                  value 99;
                  description
                    "1563.35 nm/191.76250 THz 6.25/12.5GHz spacing";
                }
                enum "1563.30" {
                  value 100;
                  description
                    "1563.30 nm/191.76875 THz 6.25GHz spacing";
                }
                enum "1563.25" {
                  value 101;
                  description
                    "1563.25 nm/191.77500 THz 6.25/12.5GHz spacing";
                }
                enum "1563.20" {
                  value 102;
                  description
                    "1563.20 nm/191.78125 THz 6.25GHz spacing";
                }
                enum "1563.15" {
                  value 103;
                  description
                    "1563.15 nm/191.78750 THz 6.25/12.5GHz spacing";
                }
                enum "1563.10" {
                  value 104;
                  description
                    "1563.10 nm/191.79375 THz 6.25GHz spacing";
                }
                enum "1563.05" {
                  value 105;
                  description
                    "1563.05 nm/191.80000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1563.00" {
                  value 106;
                  description
                    "1563.00 nm/191.80625 THz 6.25GHz spacing";
                }
                enum "1562.95" {
                  value 107;
                  description
                    "1562.95 nm/191.81250 THz 6.25/12.5GHz spacing";
                }
                enum "1562.89" {
                  value 108;
                  description
                    "1562.89 nm/191.81875 THz 6.25GHz spacing";
                }
                enum "1562.84" {
                  value 109;
                  description
                    "1562.84 nm/191.82500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1562.79" {
                  value 110;
                  description
                    "1562.79 nm/191.83125 THz 6.25GHz spacing";
                }
                enum "1562.74" {
                  value 111;
                  description
                    "1562.74 nm/191.83750 THz 6.25/12.5GHz spacing";
                }
                enum "1562.69" {
                  value 112;
                  description
                    "1562.69 nm/191.84375 THz 6.25GHz spacing";
                }
                enum "1562.64" {
                  value 113;
                  description
                    "1562.64 nm/191.85000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1562.59" {
                  value 114;
                  description
                    "1562.59 nm/191.85625 THz 6.25GHz spacing";
                }
                enum "1562.54" {
                  value 115;
                  description
                    "1562.54 nm/191.86250 THz 6.25/12.5GHz spacing";
                }
                enum "1562.49" {
                  value 116;
                  description
                    "1562.49 nm/191.86875 THz 6.25GHz spacing";
                }
                enum "1562.44" {
                  value 117;
                  description
                    "1562.44 nm/191.87500 THz 6.25/12.5GHz spacing";
                }
                enum "1562.39" {
                  value 118;
                  description
                    "1562.39 nm/191.88125 THz 6.25GHz spacing";
                }
                enum "1562.33" {
                  value 119;
                  description
                    "1562.33 nm/191.88750 THz 6.25/12.5GHz spacing";
                }
                enum "1562.28" {
                  value 120;
                  description
                    "1562.28 nm/191.89375 THz 6.25GHz spacing";
                }
                enum "1562.23" {
                  value 121;
                  description
                    "1562.23 nm/191.90000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1562.18" {
                  value 122;
                  description
                    "1562.18 nm/191.90625 THz 6.25GHz spacing";
                }
                enum "1562.13" {
                  value 123;
                  description
                    "1562.13 nm/191.91250 THz 6.25/12.5GHz spacing";
                }
                enum "1562.08" {
                  value 124;
                  description
                    "1562.08 nm/191.91875 THz 6.25GHz spacing";
                }
                enum "1562.03" {
                  value 125;
                  description
                    "1562.03 nm/191.92500 THz 6.25/12.5GHz spacing";
                }
                enum "1561.98" {
                  value 126;
                  description
                    "1561.98 nm/191.93125 THz 6.25GHz spacing";
                }
                enum "1561.93" {
                  value 127;
                  description
                    "1561.93 nm/191.93750 THz 6.25/12.5GHz spacing";
                }
                enum "1561.88" {
                  value 128;
                  description
                    "1561.88 nm/191.94375 THz 6.25GHz spacing";
                }
                enum "1561.83" {
                  value 129;
                  description
                    "1561.83 nm/191.95000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1561.77" {
                  value 130;
                  description
                    "1561.77 nm/191.95625 THz 6.25GHz spacing";
                }
                enum "1561.72" {
                  value 131;
                  description
                    "1561.72 nm/191.96250 THz 6.25/12.5GHz spacing";
                }
                enum "1561.67" {
                  value 132;
                  description
                    "1561.67 nm/191.96875 THz 6.25GHz spacing";
                }
                enum "1561.62" {
                  value 133;
                  description
                    "1561.62 nm/191.97500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1561.57" {
                  value 134;
                  description
                    "1561.57 nm/191.98125 THz 6.25GHz spacing";
                }
                enum "1561.52" {
                  value 135;
                  description
                    "1561.52 nm/191.98750 THz 6.25/12.5GHz spacing";
                }
                enum "1561.47" {
                  value 136;
                  description
                    "1561.47 nm/191.99375 THz 6.25GHz spacing";
                }
                enum "1561.42" {
                  value 137;
                  description
                    "1561.42 nm/192.00000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1561.37" {
                  value 138;
                  description
                    "1561.37 nm/192.00625 THz 6.25GHz spacing";
                }
                enum "1561.32" {
                  value 139;
                  description
                    "1561.32 nm/192.01250 THz 6.25/12.5GHz spacing";
                }
                enum "1561.27" {
                  value 140;
                  description
                    "1561.27 nm/192.01875 THz 6.25GHz spacing";
                }
                enum "1561.22" {
                  value 141;
                  description
                    "1561.22 nm/192.02500 THz 6.25/12.5GHz spacing";
                }
                enum "1561.16" {
                  value 142;
                  description
                    "1561.16 nm/192.03125 THz 6.25GHz spacing";
                }
                enum "1561.11" {
                  value 143;
                  description
                    "1561.11 nm/192.03750 THz 6.25/12.5GHz spacing";
                }
                enum "1561.06" {
                  value 144;
                  description
                    "1561.06 nm/192.04375 THz 6.25GHz spacing";
                }
                enum "1561.01" {
                  value 145;
                  description
                    "1561.01 nm/192.05000 THz 6.25/12.5/50G/75Hz spacing";
                }
                enum "1560.96" {
                  value 146;
                  description
                    "1560.96 nm/192.05625 THz 6.25GHz spacing";
                }
                enum "1560.91" {
                  value 147;
                  description
                    "1560.91 nm/192.06250 THz 6.25/12.5GHz spacing";
                }
                enum "1560.86" {
                  value 148;
                  description
                    "1560.86 nm/192.06875 THz 6.25GHz spacing";
                }
                enum "1560.81" {
                  value 149;
                  description
                    "1560.81 nm/192.07500 THz 6.25/12.5GHz spacing";
                }
                enum "1560.76" {
                  value 150;
                  description
                    "1560.76 nm/192.08125 THz 6.25GHz spacing";
                }
                enum "1560.71" {
                  value 151;
                  description
                    "1560.71 nm/192.08750 THz 6.25/12.5GHz spacing";
                }
                enum "1560.66" {
                  value 152;
                  description
                    "1560.66 nm/192.09375 THz 6.25GHz spacing";
                }
                enum "1560.61" {
                  value 153;
                  description
                    "1560.61 nm/192.10000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1560.56" {
                  value 154;
                  description
                    "1560.56 nm/192.10625 THz 6.25GHz spacing";
                }
                enum "1560.50" {
                  value 155;
                  description
                    "1560.50 nm/192.11250 THz 6.25/12.5GHz spacing";
                }
                enum "1560.45" {
                  value 156;
                  description
                    "1560.45 nm/192.11875 THz 6.25GHz spacing";
                }
                enum "1560.40" {
                  value 157;
                  description
                    "1560.40 nm/192.12500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1560.35" {
                  value 158;
                  description
                    "1560.35 nm/192.13125 THz 6.25GHz spacing";
                }
                enum "1560.30" {
                  value 159;
                  description
                    "1560.30 nm/192.13750 THz 6.25/12.5GHz spacing";
                }
                enum "1560.25" {
                  value 160;
                  description
                    "1560.25 nm/192.14375 THz 6.25GHz spacing";
                }
                enum "1560.20" {
                  value 161;
                  description
                    "1560.20 nm/192.15000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1560.15" {
                  value 162;
                  description
                    "1560.15 nm/192.15625 THz 6.25GHz spacing";
                }
                enum "1560.10" {
                  value 163;
                  description
                    "1560.10 nm/192.16250 THz 6.25/12.5GHz spacing";
                }
                enum "1560.05" {
                  value 164;
                  description
                    "1560.05 nm/192.16875 THz 6.25GHz spacing";
                }
                enum "1560.00" {
                  value 165;
                  description
                    "1560.00 nm/192.17500 THz 6.25/12.5GHz spacing";
                }
                enum "1559.95" {
                  value 166;
                  description
                    "1559.95 nm/192.18125 THz 6.25GHz spacing";
                }
                enum "1559.90" {
                  value 167;
                  description
                    "1559.90 nm/192.18750 THz 6.25/12.5GHz spacing";
                }
                enum "1559.84" {
                  value 168;
                  description
                    "1559.84 nm/192.19375 THz 6.25GHz spacing";
                }
                enum "1559.79" {
                  value 169;
                  description
                    "1559.79 nm/192.20000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1559.74" {
                  value 170;
                  description
                    "1559.74 nm/192.20625 THz 6.25GHz spacing";
                }
                enum "1559.69" {
                  value 171;
                  description
                    "1559.69 nm/192.21250 THz 6.25/12.5GHz spacing";
                }
                enum "1559.64" {
                  value 172;
                  description
                    "1559.64 nm/192.21875 THz 6.25GHz spacing";
                }
                enum "1559.59" {
                  value 173;
                  description
                    "1559.59 nm/192.22500 THz 6.25/12.5GHz spacing";
                }
                enum "1559.54" {
                  value 174;
                  description
                    "1559.54 nm/192.23125 THz 6.25GHz spacing";
                }
                enum "1559.49" {
                  value 175;
                  description
                    "1559.49 nm/192.23750 THz 6.25/12.5GHz spacing";
                }
                enum "1559.44" {
                  value 176;
                  description
                    "1559.44 nm/192.24375 THz 6.25GHz spacing";
                }
                enum "1559.39" {
                  value 177;
                  description
                    "1559.39 nm/192.25000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1559.34" {
                  value 178;
                  description
                    "1559.34 nm/192.25625 THz 6.25GHz spacing";
                }
                enum "1559.29" {
                  value 179;
                  description
                    "1559.29 nm/192.26250 THz 6.25/12.5GHz spacing";
                }
                enum "1559.24" {
                  value 180;
                  description
                    "1559.24 nm/192.26875 THz 6.25GHz spacing";
                }
                enum "1559.19" {
                  value 181;
                  description
                    "1559.19 nm/192.27500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1559.14" {
                  value 182;
                  description
                    "1559.14 nm/192.28125 THz 6.25GHz spacing";
                }
                enum "1559.08" {
                  value 183;
                  description
                    "1559.08 nm/192.28750 THz 6.25/12.5GHz spacing";
                }
                enum "1559.03" {
                  value 184;
                  description
                    "1559.03 nm/192.29375 THz 6.25GHz spacing";
                }
                enum "1558.98" {
                  value 185;
                  description
                    "1558.98 nm/192.30000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1558.93" {
                  value 186;
                  description
                    "1558.93 nm/192.30625 THz 6.25GHz spacing";
                }
                enum "1558.88" {
                  value 187;
                  description
                    "1558.88 nm/192.31250 THz 6.25/12.5GHz spacing";
                }
                enum "1558.83" {
                  value 188;
                  description
                    "1558.83 nm/192.31875 THz 6.25GHz spacing";
                }
                enum "1558.78" {
                  value 189;
                  description
                    "1558.78 nm/192.32500 THz 6.25/12.5GHz spacing";
                }
                enum "1558.73" {
                  value 190;
                  description
                    "1558.73 nm/192.33125 THz 6.25GHz spacing";
                }
                enum "1558.68" {
                  value 191;
                  description
                    "1558.68 nm/192.33750 THz 6.25/12.5GHz spacing";
                }
                enum "1558.63" {
                  value 192;
                  description
                    "1558.63 nm/192.34375 THz 6.25GHz spacing";
                }
                enum "1558.58" {
                  value 193;
                  description
                    "1558.58 nm/192.35000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1558.53" {
                  value 194;
                  description
                    "1558.53 nm/192.35625 THz 6.25GHz spacing";
                }
                enum "1558.48" {
                  value 195;
                  description
                    "1558.48 nm/192.36250 THz 6.25/12.5GHz spacing";
                }
                enum "1558.43" {
                  value 196;
                  description
                    "1558.43 nm/192.36875 THz 6.25GHz spacing";
                }
                enum "1558.38" {
                  value 197;
                  description
                    "1558.38 nm/192.37500 THz 6.25/12.5GHz spacing";
                }
                enum "1558.32" {
                  value 198;
                  description
                    "1558.32 nm/192.38125 THz 6.25GHz spacing";
                }
                enum "1558.27" {
                  value 199;
                  description
                    "1558.27 nm/192.38750 THz 6.25/12.5GHz spacing";
                }
                enum "1558.22" {
                  value 200;
                  description
                    "1558.22 nm/192.39375 THz 6.25GHz spacing";
                }
                enum "1558.17" {
                  value 201;
                  description
                    "1558.17 nm/192.40000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1558.12" {
                  value 202;
                  description
                    "1558.12 nm/192.40625 THz 6.25GHz spacing";
                }
                enum "1558.07" {
                  value 203;
                  description
                    "1558.07 nm/192.41250 THz 6.25/12.5GHz spacing";
                }
                enum "1558.02" {
                  value 204;
                  description
                    "1558.02 nm/192.41875 THz 6.25GHz spacing";
                }
                enum "1557.97" {
                  value 205;
                  description
                    "1557.97 nm/192.42500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1557.92" {
                  value 206;
                  description
                    "1557.92 nm/192.43125 THz 6.25GHz spacing";
                }
                enum "1557.87" {
                  value 207;
                  description
                    "1557.87 nm/192.43750 THz 6.25/12.5GHz spacing";
                }
                enum "1557.82" {
                  value 208;
                  description
                    "1557.82 nm/192.44375 THz 6.25GHz spacing";
                }
                enum "1557.77" {
                  value 209;
                  description
                    "1557.77 nm/192.45000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1557.72" {
                  value 210;
                  description
                    "1557.72 nm/192.45625 THz 6.25GHz spacing";
                }
                enum "1557.67" {
                  value 211;
                  description
                    "1557.67 nm/192.46250 THz 6.25/12.5GHz spacing";
                }
                enum "1557.62" {
                  value 212;
                  description
                    "1557.62 nm/192.46875 THz 6.25GHz spacing";
                }
                enum "1557.57" {
                  value 213;
                  description
                    "1557.57 nm/192.47500 THz 6.25/12.5GHz spacing";
                }
                enum "1557.52" {
                  value 214;
                  description
                    "1557.52 nm/192.48125 THz 6.25GHz spacing";
                }
                enum "1557.46" {
                  value 215;
                  description
                    "1557.46 nm/192.48750 THz 6.25/12.5GHz spacing";
                }
                enum "1557.41" {
                  value 216;
                  description
                    "1557.41 nm/192.49375 THz 6.25GHz spacing";
                }
                enum "1557.36" {
                  value 217;
                  description
                    "1557.36 nm/192.50000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1557.31" {
                  value 218;
                  description
                    "1557.31 nm/192.50625 THz 6.25GHz spacing";
                }
                enum "1557.26" {
                  value 219;
                  description
                    "1557.26 nm/192.51250 THz 6.25/12.5GHz spacing";
                }
                enum "1557.21" {
                  value 220;
                  description
                    "1557.21 nm/192.51875 THz 6.25GHz spacing";
                }
                enum "1557.16" {
                  value 221;
                  description
                    "1557.16 nm/192.52500 THz 6.25/12.5GHz spacing";
                }
                enum "1557.11" {
                  value 222;
                  description
                    "1557.11 nm/192.53125 THz 6.25GHz spacing";
                }
                enum "1557.06" {
                  value 223;
                  description
                    "1557.06 nm/192.53750 THz 6.25/12.5GHz spacing";
                }
                enum "1557.01" {
                  value 224;
                  description
                    "1557.01 nm/192.54375 THz 6.25GHz spacing";
                }
                enum "1556.96" {
                  value 225;
                  description
                    "1556.96 nm/192.55000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1556.91" {
                  value 226;
                  description
                    "1556.91 nm/192.55625 THz 6.25GHz spacing";
                }
                enum "1556.86" {
                  value 227;
                  description
                    "1556.86 nm/192.56250 THz 6.25/12.5GHz spacing";
                }
                enum "1556.81" {
                  value 228;
                  description
                    "1556.81 nm/192.56875 THz 6.25GHz spacing";
                }
                enum "1556.76" {
                  value 229;
                  description
                    "1556.76 nm/192.57500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1556.71" {
                  value 230;
                  description
                    "1556.71 nm/192.58125 THz 6.25GHz spacing";
                }
                enum "1556.66" {
                  value 231;
                  description
                    "1556.66 nm/192.58750 THz 6.25/12.5GHz spacing";
                }
                enum "1556.61" {
                  value 232;
                  description
                    "1556.61 nm/192.59375 THz 6.25GHz spacing";
                }
                enum "1556.55" {
                  value 233;
                  description
                    "1556.55 nm/192.60000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1556.50" {
                  value 234;
                  description
                    "1556.50 nm/192.60625 THz 6.25GHz spacing";
                }
                enum "1556.45" {
                  value 235;
                  description
                    "1556.45 nm/192.61250 THz 6.25/12.5GHz spacing";
                }
                enum "1556.40" {
                  value 236;
                  description
                    "1556.40 nm/192.61875 THz 6.25GHz spacing";
                }
                enum "1556.35" {
                  value 237;
                  description
                    "1556.35 nm/192.62500 THz 6.25/12.5GHz spacing";
                }
                enum "1556.30" {
                  value 238;
                  description
                    "1556.30 nm/192.63125 THz 6.25GHz spacing";
                }
                enum "1556.25" {
                  value 239;
                  description
                    "1556.25 nm/192.63750 THz 6.25/12.5GHz spacing";
                }
                enum "1556.20" {
                  value 240;
                  description
                    "1556.20 nm/192.64375 THz 6.25GHz spacing";
                }
                enum "1556.15" {
                  value 241;
                  description
                    "1556.15 nm/192.65000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1556.10" {
                  value 242;
                  description
                    "1556.10 nm/192.65625 THz 6.25GHz spacing";
                }
                enum "1556.05" {
                  value 243;
                  description
                    "1556.05 nm/192.66250 THz 6.25/12.5GHz spacing";
                }
                enum "1556.00" {
                  value 244;
                  description
                    "1556.00 nm/192.66875 THz 6.25GHz spacing";
                }
                enum "1555.95" {
                  value 245;
                  description
                    "1555.95 nm/192.67500 THz 6.25/12.5GHz spacing";
                }
                enum "1555.90" {
                  value 246;
                  description
                    "1555.90 nm/192.68125 THz 6.25GHz spacing";
                }
                enum "1555.85" {
                  value 247;
                  description
                    "1555.85 nm/192.68750 THz 6.25/12.5GHz spacing";
                }
                enum "1555.80" {
                  value 248;
                  description
                    "1555.80 nm/192.69375 THz 6.25GHz spacing";
                }
                enum "1555.75" {
                  value 249;
                  description
                    "1555.75 nm/192.70000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1555.70" {
                  value 250;
                  description
                    "1555.70 nm/192.70625 THz 6.25GHz spacing";
                }
                enum "1555.65" {
                  value 251;
                  description
                    "1555.65 nm/192.71250 THz 6.25/12.5GHz spacing";
                }
                enum "1555.60" {
                  value 252;
                  description
                    "1555.60 nm/192.71875 THz 6.25GHz spacing";
                }
                enum "1555.55" {
                  value 253;
                  description
                    "1555.55 nm/192.72500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1555.49" {
                  value 254;
                  description
                    "1555.49 nm/192.73125 THz 6.25GHz spacing";
                }
                enum "1555.44" {
                  value 255;
                  description
                    "1555.44 nm/192.73750 THz 6.25/12.5GHz spacing";
                }
                enum "1555.39" {
                  value 256;
                  description
                    "1555.39 nm/192.74375 THz 6.25GHz spacing";
                }
                enum "1555.34" {
                  value 257;
                  description
                    "1555.34 nm/192.75000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1555.29" {
                  value 258;
                  description
                    "1555.29 nm/192.75625 THz 6.25GHz spacing";
                }
                enum "1555.24" {
                  value 259;
                  description
                    "1555.24 nm/192.76250 THz 6.25/12.5GHz spacing";
                }
                enum "1555.19" {
                  value 260;
                  description
                    "1555.19 nm/192.76875 THz 6.25GHz spacing";
                }
                enum "1555.14" {
                  value 261;
                  description
                    "1555.14 nm/192.77500 THz 6.25/12.5GHz spacing";
                }
                enum "1555.09" {
                  value 262;
                  description
                    "1555.09 nm/192.78125 THz 6.25GHz spacing";
                }
                enum "1555.04" {
                  value 263;
                  description
                    "1555.04 nm/192.78750 THz 6.25/12.5GHz spacing";
                }
                enum "1554.99" {
                  value 264;
                  description
                    "1554.99 nm/192.79375 THz 6.25GHz spacing";
                }
                enum "1554.94" {
                  value 265;
                  description
                    "1554.94 nm/192.80000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1554.89" {
                  value 266;
                  description
                    "1554.89 nm/192.80625 THz 6.25GHz spacing";
                }
                enum "1554.84" {
                  value 267;
                  description
                    "1554.84 nm/192.81250 THz 6.25/12.5GHz spacing";
                }
                enum "1554.79" {
                  value 268;
                  description
                    "1554.79 nm/192.81875 THz 6.25GHz spacing";
                }
                enum "1554.74" {
                  value 269;
                  description
                    "1554.74 nm/192.82500 THz 6.25/12.5GHz spacing";
                }
                enum "1554.69" {
                  value 270;
                  description
                    "1554.69 nm/192.83125 THz 6.25GHz spacing";
                }
                enum "1554.64" {
                  value 271;
                  description
                    "1554.64 nm/192.83750 THz 6.25/12.5GHz spacing";
                }
                enum "1554.59" {
                  value 272;
                  description
                    "1554.59 nm/192.84375 THz 6.25GHz spacing";
                }
                enum "1554.54" {
                  value 273;
                  description
                    "1554.54 nm/192.85000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1554.49" {
                  value 274;
                  description
                    "1554.49 nm/192.85625 THz 6.25GHz spacing";
                }
                enum "1554.44" {
                  value 275;
                  description
                    "1554.44 nm/192.86250 THz 6.25/12.5GHz spacing";
                }
                enum "1554.39" {
                  value 276;
                  description
                    "1554.39 nm/192.86875 THz 6.25GHz spacing";
                }
                enum "1554.34" {
                  value 277;
                  description
                    "1554.34 nm/192.87500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1554.29" {
                  value 278;
                  description
                    "1554.29 nm/192.88125 THz 6.25GHz spacing";
                }
                enum "1554.23" {
                  value 279;
                  description
                    "1554.23 nm/192.88750 THz 6.25/12.5GHz spacing";
                }
                enum "1554.18" {
                  value 280;
                  description
                    "1554.18 nm/192.89375 THz 6.25GHz spacing";
                }
                enum "1554.13" {
                  value 281;
                  description
                    "1554.13 nm/192.90000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1554.08" {
                  value 282;
                  description
                    "1554.08 nm/192.90625 THz 6.25GHz spacing";
                }
                enum "1554.03" {
                  value 283;
                  description
                    "1554.03 nm/192.91250 THz 6.25/12.5GHz spacing";
                }
                enum "1553.98" {
                  value 284;
                  description
                    "1553.98 nm/192.91875 THz 6.25GHz spacing";
                }
                enum "1553.93" {
                  value 285;
                  description
                    "1553.93 nm/192.92500 THz 6.25/12.5GHz spacing";
                }
                enum "1553.88" {
                  value 286;
                  description
                    "1553.88 nm/192.93125 THz 6.25GHz spacing";
                }
                enum "1553.83" {
                  value 287;
                  description
                    "1553.83 nm/192.93750 THz 6.25/12.5GHz spacing";
                }
                enum "1553.78" {
                  value 288;
                  description
                    "1553.78 nm/192.94375 THz 6.25GHz spacing";
                }
                enum "1553.73" {
                  value 289;
                  description
                    "1553.73 nm/192.95000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1553.68" {
                  value 290;
                  description
                    "1553.68 nm/192.95625 THz 6.25GHz spacing";
                }
                enum "1553.63" {
                  value 291;
                  description
                    "1553.63 nm/192.96250 THz 6.25/12.5GHz spacing";
                }
                enum "1553.58" {
                  value 292;
                  description
                    "1553.58 nm/192.96875 THz 6.25GHz spacing";
                }
                enum "1553.53" {
                  value 293;
                  description
                    "1553.53 nm/192.97500 THz 6.25/12.5GHz spacing";
                }
                enum "1553.48" {
                  value 294;
                  description
                    "1553.48 nm/192.98125 THz 6.25GHz spacing";
                }
                enum "1553.43" {
                  value 295;
                  description
                    "1553.43 nm/192.98750 THz 6.25/12.5GHz spacing";
                }
                enum "1553.38" {
                  value 296;
                  description
                    "1553.38 nm/192.99375 THz 6.25GHz spacing";
                }
                enum "1553.33" {
                  value 297;
                  description
                    "1553.33 nm/193.00000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1553.28" {
                  value 298;
                  description
                    "1553.28 nm/193.00625 THz 6.25GHz spacing";
                }
                enum "1553.23" {
                  value 299;
                  description
                    "1553.23 nm/193.01250 THz 6.25/12.5GHz spacing";
                }
                enum "1553.18" {
                  value 300;
                  description
                    "1553.18 nm/193.01875 THz 6.25GHz spacing";
                }
                enum "1553.13" {
                  value 301;
                  description
                    "1553.13 nm/193.02500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1553.08" {
                  value 302;
                  description
                    "1553.08 nm/193.03125 THz 6.25GHz spacing";
                }
                enum "1553.03" {
                  value 303;
                  description
                    "1553.03 nm/193.03750 THz 6.25/12.5GHz spacing";
                }
                enum "1552.98" {
                  value 304;
                  description
                    "1552.98 nm/193.04375 THz 6.25GHz spacing";
                }
                enum "1552.93" {
                  value 305;
                  description
                    "1552.93 nm/193.05000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1552.88" {
                  value 306;
                  description
                    "1552.88 nm/193.05625 THz 6.25GHz spacing";
                }
                enum "1552.83" {
                  value 307;
                  description
                    "1552.83 nm/193.06250 THz 6.25/12.5GHz spacing";
                }
                enum "1552.78" {
                  value 308;
                  description
                    "1552.78 nm/193.06875 THz 6.25GHz spacing";
                }
                enum "1552.73" {
                  value 309;
                  description
                    "1552.73 nm/193.07500 THz 6.25/12.5GHz spacing";
                }
                enum "1552.68" {
                  value 310;
                  description
                    "1552.68 nm/193.08125 THz 6.25GHz spacing";
                }
                enum "1552.62" {
                  value 311;
                  description
                    "1552.62 nm/193.08750 THz 6.25/12.5GHz spacing";
                }
                enum "1552.57" {
                  value 312;
                  description
                    "1552.57 nm/193.09375 THz 6.25GHz spacing";
                }
                enum "1552.52" {
                  value 313;
                  description
                    "1552.52 nm/193.10000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1552.47" {
                  value 314;
                  description
                    "1552.47 nm/193.10625 THz 6.25GHz spacing";
                }
                enum "1552.42" {
                  value 315;
                  description
                    "1552.42 nm/193.11250 THz 6.25/12.5GHz spacing";
                }
                enum "1552.37" {
                  value 316;
                  description
                    "1552.37 nm/193.11875 THz 6.25GHz spacing";
                }
                enum "1552.32" {
                  value 317;
                  description
                    "1552.32 nm/193.12500 THz 6.25/12.5GHz spacing";
                }
                enum "1552.27" {
                  value 318;
                  description
                    "1552.27 nm/193.13125 THz 6.25GHz spacing";
                }
                enum "1552.22" {
                  value 319;
                  description
                    "1552.22 nm/193.13750 THz 6.25/12.5GHz spacing";
                }
                enum "1552.17" {
                  value 320;
                  description
                    "1552.17 nm/193.14375 THz 6.25GHz spacing";
                }
                enum "1552.12" {
                  value 321;
                  description
                    "1552.12 nm/193.15000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1552.07" {
                  value 322;
                  description
                    "1552.07 nm/193.15625 THz 6.25GHz spacing";
                }
                enum "1552.02" {
                  value 323;
                  description
                    "1552.02 nm/193.16250 THz 6.25/12.5GHz spacing";
                }
                enum "1551.97" {
                  value 324;
                  description
                    "1551.97 nm/193.16875 THz 6.25GHz spacing";
                }
                enum "1551.92" {
                  value 325;
                  description
                    "1551.92 nm/193.17500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1551.87" {
                  value 326;
                  description
                    "1551.87 nm/193.18125 THz 6.25GHz spacing";
                }
                enum "1551.82" {
                  value 327;
                  description
                    "1551.82 nm/193.18750 THz 6.25/12.5GHz spacing";
                }
                enum "1551.77" {
                  value 328;
                  description
                    "1551.77 nm/193.19375 THz 6.25GHz spacing";
                }
                enum "1551.72" {
                  value 329;
                  description
                    "1551.72 nm/193.20000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1551.67" {
                  value 330;
                  description
                    "1551.67 nm/193.20625 THz 6.25GHz spacing";
                }
                enum "1551.62" {
                  value 331;
                  description
                    "1551.62 nm/193.21250 THz 6.25/12.5GHz spacing";
                }
                enum "1551.57" {
                  value 332;
                  description
                    "1551.57 nm/193.21875 THz 6.25GHz spacing";
                }
                enum "1551.52" {
                  value 333;
                  description
                    "1551.52 nm/193.22500 THz 6.25/12.5GHz spacing";
                }
                enum "1551.47" {
                  value 334;
                  description
                    "1551.47 nm/193.23125 THz 6.25GHz spacing";
                }
                enum "1551.42" {
                  value 335;
                  description
                    "1551.42 nm/193.23750 THz 6.25/12.5GHz spacing";
                }
                enum "1551.37" {
                  value 336;
                  description
                    "1551.37 nm/193.24375 THz 6.25GHz spacing";
                }
                enum "1551.32" {
                  value 337;
                  description
                    "1551.32 nm/193.25000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1551.27" {
                  value 338;
                  description
                    "1551.27 nm/193.25625 THz 6.25GHz spacing";
                }
                enum "1551.22" {
                  value 339;
                  description
                    "1551.22 nm/193.26250 THz 6.25/12.5GHz spacing";
                }
                enum "1551.17" {
                  value 340;
                  description
                    "1551.17 nm/193.26875 THz 6.25GHz spacing";
                }
                enum "1551.12" {
                  value 341;
                  description
                    "1551.12 nm/193.27500 THz 6.25/12.5GHz spacing";
                }
                enum "1551.07" {
                  value 342;
                  description
                    "1551.07 nm/193.28125 THz 6.25GHz spacing";
                }
                enum "1551.02" {
                  value 343;
                  description
                    "1551.02 nm/193.28750 THz 6.25/12.5GHz spacing";
                }
                enum "1550.97" {
                  value 344;
                  description
                    "1550.97 nm/193.29375 THz 6.25GHz spacing";
                }
                enum "1550.92" {
                  value 345;
                  description
                    "1550.92 nm/193.30000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1550.87" {
                  value 346;
                  description
                    "1550.87 nm/193.30625 THz 6.25GHz spacing";
                }
                enum "1550.82" {
                  value 347;
                  description
                    "1550.82 nm/193.31250 THz 6.25/12.5GHz spacing";
                }
                enum "1550.77" {
                  value 348;
                  description
                    "1550.77 nm/193.31875 THz 6.25GHz spacing";
                }
                enum "1550.72" {
                  value 349;
                  description
                    "1550.72 nm/193.32500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1550.67" {
                  value 350;
                  description
                    "1550.67 nm/193.33125 THz 6.25GHz spacing";
                }
                enum "1550.62" {
                  value 351;
                  description
                    "1550.62 nm/193.33750 THz 6.25/12.5GHz spacing";
                }
                enum "1550.57" {
                  value 352;
                  description
                    "1550.57 nm/193.34375 THz 6.25GHz spacing";
                }
                enum "1550.52" {
                  value 353;
                  description
                    "1550.52 nm/193.35000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1550.47" {
                  value 354;
                  description
                    "1550.47 nm/193.35625 THz 6.25GHz spacing";
                }
                enum "1550.42" {
                  value 355;
                  description
                    "1550.42 nm/193.36250 THz 6.25/12.5GHz spacing";
                }
                enum "1550.37" {
                  value 356;
                  description
                    "1550.37 nm/193.36875 THz 6.25GHz spacing";
                }
                enum "1550.32" {
                  value 357;
                  description
                    "1550.32 nm/193.37500 THz 6.25/12.5GHz spacing";
                }
                enum "1550.27" {
                  value 358;
                  description
                    "1550.27 nm/193.38125 THz 6.25GHz spacing";
                }
                enum "1550.22" {
                  value 359;
                  description
                    "1550.22 nm/193.38750 THz 6.25/12.5GHz spacing";
                }
                enum "1550.17" {
                  value 360;
                  description
                    "1550.17 nm/193.39375 THz 6.25GHz spacing";
                }
                enum "1550.12" {
                  value 361;
                  description
                    "1550.12 nm/193.40000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1550.07" {
                  value 362;
                  description
                    "1550.07 nm/193.40625 THz 6.25GHz spacing";
                }
                enum "1550.02" {
                  value 363;
                  description
                    "1550.02 nm/193.41250 THz 6.25/12.5GHz spacing";
                }
                enum "1549.97" {
                  value 364;
                  description
                    "1549.97 nm/193.41875 THz 6.25GHz spacing";
                }
                enum "1549.92" {
                  value 365;
                  description
                    "1549.92 nm/193.42500 THz 6.25/12.5GHz spacing";
                }
                enum "1549.87" {
                  value 366;
                  description
                    "1549.87 nm/193.43125 THz 6.25GHz spacing";
                }
                enum "1549.82" {
                  value 367;
                  description
                    "1549.82 nm/193.43750 THz 6.25/12.5GHz spacing";
                }
                enum "1549.77" {
                  value 368;
                  description
                    "1549.77 nm/193.44375 THz 6.25GHz spacing";
                }
                enum "1549.72" {
                  value 369;
                  description
                    "1549.72 nm/193.45000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1549.67" {
                  value 370;
                  description
                    "1549.67 nm/193.45625 THz 6.25GHz spacing";
                }
                enum "1549.62" {
                  value 371;
                  description
                    "1549.62 nm/193.46250 THz 6.25/12.5GHz spacing";
                }
                enum "1549.57" {
                  value 372;
                  description
                    "1549.57 nm/193.46875 THz 6.25GHz spacing";
                }
                enum "1549.52" {
                  value 373;
                  description
                    "1549.52 nm/193.47500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1549.47" {
                  value 374;
                  description
                    "1549.47 nm/193.48125 THz 6.25GHz spacing";
                }
                enum "1549.42" {
                  value 375;
                  description
                    "1549.42 nm/193.48750 THz 6.25/12.5GHz spacing";
                }
                enum "1549.37" {
                  value 376;
                  description
                    "1549.37 nm/193.49375 THz 6.25GHz spacing";
                }
                enum "1549.32" {
                  value 377;
                  description
                    "1549.32 nm/193.50000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1549.26" {
                  value 378;
                  description
                    "1549.26 nm/193.50625 THz 6.25GHz spacing";
                }
                enum "1549.21" {
                  value 379;
                  description
                    "1549.21 nm/193.51250 THz 6.25/12.5GHz spacing";
                }
                enum "1549.16" {
                  value 380;
                  description
                    "1549.16 nm/193.51875 THz 6.25GHz spacing";
                }
                enum "1549.11" {
                  value 381;
                  description
                    "1549.11 nm/193.52500 THz 6.25/12.5GHz spacing";
                }
                enum "1549.06" {
                  value 382;
                  description
                    "1549.06 nm/193.53125 THz 6.25GHz spacing";
                }
                enum "1549.01" {
                  value 383;
                  description
                    "1549.01 nm/193.53750 THz 6.25/12.5GHz spacing";
                }
                enum "1548.96" {
                  value 384;
                  description
                    "1548.96 nm/193.54375 THz 6.25GHz spacing";
                }
                enum "1548.91" {
                  value 385;
                  description
                    "1548.91 nm/193.55000 THz 6.25/12.5/50G/75Hz spacing";
                }
                enum "1548.86" {
                  value 386;
                  description
                    "1548.86 nm/193.55625 THz 6.25GHz spacing";
                }
                enum "1548.81" {
                  value 387;
                  description
                    "1548.81 nm/193.56250 THz 6.25/12.5GHz spacing";
                }
                enum "1548.76" {
                  value 388;
                  description
                    "1548.76 nm/193.56875 THz 6.25GHz spacing";
                }
                enum "1548.71" {
                  value 389;
                  description
                    "1548.71 nm/193.57500 THz 6.25/12.5GHz spacing";
                }
                enum "1548.66" {
                  value 390;
                  description
                    "1548.66 nm/193.58125 THz 6.25GHz spacing";
                }
                enum "1548.61" {
                  value 391;
                  description
                    "1548.61 nm/193.58750 THz 6.25/12.5GHz spacing";
                }
                enum "1548.56" {
                  value 392;
                  description
                    "1548.56 nm/193.59375 THz 6.25GHz spacing";
                }
                enum "1548.51" {
                  value 393;
                  description
                    "1548.51 nm/193.60000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1548.46" {
                  value 394;
                  description
                    "1548.46 nm/193.60625 THz 6.25GHz spacing";
                }
                enum "1548.41" {
                  value 395;
                  description
                    "1548.41 nm/193.61250 THz 6.25/12.5GHz spacing";
                }
                enum "1548.36" {
                  value 396;
                  description
                    "1548.36 nm/193.61875 THz 6.25GHz spacing";
                }
                enum "1548.31" {
                  value 397;
                  description
                    "1548.31 nm/193.62500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1548.26" {
                  value 398;
                  description
                    "1548.26 nm/193.63125 THz 6.25GHz spacing";
                }
                enum "1548.21" {
                  value 399;
                  description
                    "1548.21 nm/193.63750 THz 6.25/12.5GHz spacing";
                }
                enum "1548.16" {
                  value 400;
                  description
                    "1548.16 nm/193.64375 THz 6.25GHz spacing";
                }
                enum "1548.11" {
                  value 401;
                  description
                    "1548.11 nm/193.65000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1548.06" {
                  value 402;
                  description
                    "1548.06 nm/193.65625 THz 6.25GHz spacing";
                }
                enum "1548.02" {
                  value 403;
                  description
                    "1548.02 nm/193.66250 THz 6.25/12.5GHz spacing";
                }
                enum "1547.97" {
                  value 404;
                  description
                    "1547.97 nm/193.66875 THz 6.25GHz spacing";
                }
                enum "1547.92" {
                  value 405;
                  description
                    "1547.92 nm/193.67500 THz 6.25/12.5GHz spacing";
                }
                enum "1547.87" {
                  value 406;
                  description
                    "1547.87 nm/193.68125 THz 6.25GHz spacing";
                }
                enum "1547.82" {
                  value 407;
                  description
                    "1547.82 nm/193.68750 THz 6.25/12.5GHz spacing";
                }
                enum "1547.77" {
                  value 408;
                  description
                    "1547.77 nm/193.69375 THz 6.25GHz spacing";
                }
                enum "1547.72" {
                  value 409;
                  description
                    "1547.72 nm/193.70000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1547.67" {
                  value 410;
                  description
                    "1547.67 nm/193.70625 THz 6.25GHz spacing";
                }
                enum "1547.62" {
                  value 411;
                  description
                    "1547.62 nm/193.71250 THz 6.25/12.5GHz spacing";
                }
                enum "1547.57" {
                  value 412;
                  description
                    "1547.57 nm/193.71875 THz 6.25GHz spacing";
                }
                enum "1547.52" {
                  value 413;
                  description
                    "1547.52 nm/193.72500 THz 6.25/12.5GHz spacing";
                }
                enum "1547.47" {
                  value 414;
                  description
                    "1547.47 nm/193.73125 THz 6.25GHz spacing";
                }
                enum "1547.42" {
                  value 415;
                  description
                    "1547.42 nm/193.73750 THz 6.25/12.5GHz spacing";
                }
                enum "1547.37" {
                  value 416;
                  description
                    "1547.37 nm/193.74375 THz 6.25GHz spacing";
                }
                enum "1547.32" {
                  value 417;
                  description
                    "1547.32 nm/193.75000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1547.27" {
                  value 418;
                  description
                    "1547.27 nm/193.75625 THz 6.25GHz spacing";
                }
                enum "1547.22" {
                  value 419;
                  description
                    "1547.22 nm/193.76250 THz 6.25/12.5GHz spacing";
                }
                enum "1547.17" {
                  value 420;
                  description
                    "1547.17 nm/193.76875 THz 6.25GHz spacing";
                }
                enum "1547.12" {
                  value 421;
                  description
                    "1547.12 nm/193.77500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1547.07" {
                  value 422;
                  description
                    "1547.07 nm/193.78125 THz 6.25GHz spacing";
                }
                enum "1547.02" {
                  value 423;
                  description
                    "1547.02 nm/193.78750 THz 6.25/12.5GHz spacing";
                }
                enum "1546.97" {
                  value 424;
                  description
                    "1546.97 nm/193.79375 THz 6.25GHz spacing";
                }
                enum "1546.92" {
                  value 425;
                  description
                    "1546.92 nm/193.80000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1546.87" {
                  value 426;
                  description
                    "1546.87 nm/193.80625 THz 6.25GHz spacing";
                }
                enum "1546.82" {
                  value 427;
                  description
                    "1546.82 nm/193.81250 THz 6.25/12.5GHz spacing";
                }
                enum "1546.77" {
                  value 428;
                  description
                    "1546.77 nm/193.81875 THz 6.25GHz spacing";
                }
                enum "1546.72" {
                  value 429;
                  description
                    "1546.72 nm/193.82500 THz 6.25/12.5GHz spacing";
                }
                enum "1546.67" {
                  value 430;
                  description
                    "1546.67 nm/193.83125 THz 6.25GHz spacing";
                }
                enum "1546.62" {
                  value 431;
                  description
                    "1546.62 nm/193.83750 THz 6.25/12.5GHz spacing";
                }
                enum "1546.57" {
                  value 432;
                  description
                    "1546.57 nm/193.84375 THz 6.25GHz spacing";
                }
                enum "1546.52" {
                  value 433;
                  description
                    "1546.52 nm/193.85000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1546.47" {
                  value 434;
                  description
                    "1546.47 nm/193.85625 THz 6.25GHz spacing";
                }
                enum "1546.42" {
                  value 435;
                  description
                    "1546.42 nm/193.86250 THz 6.25/12.5GHz spacing";
                }
                enum "1546.37" {
                  value 436;
                  description
                    "1546.37 nm/193.86875 THz 6.25GHz spacing";
                }
                enum "1546.32" {
                  value 437;
                  description
                    "1546.32 nm/193.87500 THz 6.25/12.5GHz spacing";
                }
                enum "1546.27" {
                  value 438;
                  description
                    "1546.27 nm/193.88125 THz 6.25GHz spacing";
                }
                enum "1546.22" {
                  value 439;
                  description
                    "1546.22 nm/193.88750 THz 6.25/12.5GHz spacing";
                }
                enum "1546.17" {
                  value 440;
                  description
                    "1546.17 nm/193.89375 THz 6.25GHz spacing";
                }
                enum "1546.12" {
                  value 441;
                  description
                    "1546.12 nm/193.90000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1546.07" {
                  value 442;
                  description
                    "1546.07 nm/193.90625 THz 6.25GHz spacing";
                }
                enum "1546.02" {
                  value 443;
                  description
                    "1546.02 nm/193.91250 THz 6.25/12.5GHz spacing";
                }
                enum "1545.97" {
                  value 444;
                  description
                    "1545.97 nm/193.91875 THz 6.25GHz spacing";
                }
                enum "1545.92" {
                  value 445;
                  description
                    "1545.92 nm/193.92500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1545.87" {
                  value 446;
                  description
                    "1545.87 nm/193.93125 THz 6.25GHz spacing";
                }
                enum "1545.82" {
                  value 447;
                  description
                    "1545.82 nm/193.93750 THz 6.25/12.5GHz spacing";
                }
                enum "1545.77" {
                  value 448;
                  description
                    "1545.77 nm/193.94375 THz 6.25GHz spacing";
                }
                enum "1545.72" {
                  value 449;
                  description
                    "1545.72 nm/193.95000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1545.67" {
                  value 450;
                  description
                    "1545.67 nm/193.95625 THz 6.25GHz spacing";
                }
                enum "1545.62" {
                  value 451;
                  description
                    "1545.62 nm/193.96250 THz 6.25/12.5GHz spacing";
                }
                enum "1545.57" {
                  value 452;
                  description
                    "1545.57 nm/193.96875 THz 6.25GHz spacing";
                }
                enum "1545.52" {
                  value 453;
                  description
                    "1545.52 nm/193.97500 THz 6.25/12.5GHz spacing";
                }
                enum "1545.47" {
                  value 454;
                  description
                    "1545.47 nm/193.98125 THz 6.25GHz spacing";
                }
                enum "1545.42" {
                  value 455;
                  description
                    "1545.42 nm/193.98750 THz 6.25/12.5GHz spacing";
                }
                enum "1545.37" {
                  value 456;
                  description
                    "1545.37 nm/193.99375 THz 6.25GHz spacing";
                }
                enum "1545.32" {
                  value 457;
                  description
                    "1545.32 nm/194.00000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1545.27" {
                  value 458;
                  description
                    "1545.27 nm/194.00625 THz 6.25GHz spacing";
                }
                enum "1545.22" {
                  value 459;
                  description
                    "1545.22 nm/194.01250 THz 6.25/12.5GHz spacing";
                }
                enum "1545.17" {
                  value 460;
                  description
                    "1545.17 nm/194.01875 THz 6.25GHz spacing";
                }
                enum "1545.12" {
                  value 461;
                  description
                    "1545.12 nm/194.02500 THz 6.25/12.5GHz spacing";
                }
                enum "1545.07" {
                  value 462;
                  description
                    "1545.07 nm/194.03125 THz 6.25GHz spacing";
                }
                enum "1545.02" {
                  value 463;
                  description
                    "1545.02 nm/194.03750 THz 6.25/12.5GHz spacing";
                }
                enum "1544.97" {
                  value 464;
                  description
                    "1544.97 nm/194.04375 THz 6.25GHz spacing";
                }
                enum "1544.92" {
                  value 465;
                  description
                    "1544.92 nm/194.05000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1544.87" {
                  value 466;
                  description
                    "1544.87 nm/194.05625 THz 6.25GHz spacing";
                }
                enum "1544.82" {
                  value 467;
                  description
                    "1544.82 nm/194.06250 THz 6.25/12.5GHz spacing";
                }
                enum "1544.77" {
                  value 468;
                  description
                    "1544.77 nm/194.06875 THz 6.25GHz spacing";
                }
                enum "1544.72" {
                  value 469;
                  description
                    "1544.72 nm/194.07500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1544.68" {
                  value 470;
                  description
                    "1544.68 nm/194.08125 THz 6.25GHz spacing";
                }
                enum "1544.63" {
                  value 471;
                  description
                    "1544.63 nm/194.08750 THz 6.25/12.5GHz spacing";
                }
                enum "1544.58" {
                  value 472;
                  description
                    "1544.58 nm/194.09375 THz 6.25GHz spacing";
                }
                enum "1544.53" {
                  value 473;
                  description
                    "1544.53 nm/194.10000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1544.48" {
                  value 474;
                  description
                    "1544.48 nm/194.10625 THz 6.25GHz spacing";
                }
                enum "1544.43" {
                  value 475;
                  description
                    "1544.43 nm/194.11250 THz 6.25/12.5GHz spacing";
                }
                enum "1544.38" {
                  value 476;
                  description
                    "1544.38 nm/194.11875 THz 6.25GHz spacing";
                }
                enum "1544.33" {
                  value 477;
                  description
                    "1544.33 nm/194.12500 THz 6.25/12.5GHz spacing";
                }
                enum "1544.28" {
                  value 478;
                  description
                    "1544.28 nm/194.13125 THz 6.25GHz spacing";
                }
                enum "1544.23" {
                  value 479;
                  description
                    "1544.23 nm/194.13750 THz 6.25/12.5GHz spacing";
                }
                enum "1544.18" {
                  value 480;
                  description
                    "1544.18 nm/194.14375 THz 6.25GHz spacing";
                }
                enum "1544.13" {
                  value 481;
                  description
                    "1544.13 nm/194.15000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1544.08" {
                  value 482;
                  description
                    "1544.08 nm/194.15625 THz 6.25GHz spacing";
                }
                enum "1544.03" {
                  value 483;
                  description
                    "1544.03 nm/194.16250 THz 6.25/12.5GHz spacing";
                }
                enum "1543.98" {
                  value 484;
                  description
                    "1543.98 nm/194.16875 THz 6.25GHz spacing";
                }
                enum "1543.93" {
                  value 485;
                  description
                    "1543.93 nm/194.17500 THz 6.25/12.5GHz spacing";
                }
                enum "1543.88" {
                  value 486;
                  description
                    "1543.88 nm/194.18125 THz 6.25GHz spacing";
                }
                enum "1543.83" {
                  value 487;
                  description
                    "1543.83 nm/194.18750 THz 6.25/12.5GHz spacing";
                }
                enum "1543.78" {
                  value 488;
                  description
                    "1543.78 nm/194.19375 THz 6.25GHz spacing";
                }
                enum "1543.73" {
                  value 489;
                  description
                    "1543.73 nm/194.20000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1543.68" {
                  value 490;
                  description
                    "1543.68 nm/194.20625 THz 6.25GHz spacing";
                }
                enum "1543.63" {
                  value 491;
                  description
                    "1543.63 nm/194.21250 THz 6.25/12.5GHz spacing";
                }
                enum "1543.58" {
                  value 492;
                  description
                    "1543.58 nm/194.21875 THz 6.25GHz spacing";
                }
                enum "1543.53" {
                  value 493;
                  description
                    "1543.53 nm/194.22500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1543.48" {
                  value 494;
                  description
                    "1543.48 nm/194.23125 THz 6.25GHz spacing";
                }
                enum "1543.43" {
                  value 495;
                  description
                    "1543.43 nm/194.23750 THz 6.25/12.5GHz spacing";
                }
                enum "1543.38" {
                  value 496;
                  description
                    "1543.38 nm/194.24375 THz 6.25GHz spacing";
                }
                enum "1543.33" {
                  value 497;
                  description
                    "1543.33 nm/194.25000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1543.28" {
                  value 498;
                  description
                    "1543.28 nm/194.25625 THz 6.25GHz spacing";
                }
                enum "1543.23" {
                  value 499;
                  description
                    "1543.23 nm/194.26250 THz 6.25/12.5GHz spacing";
                }
                enum "1543.18" {
                  value 500;
                  description
                    "1543.18 nm/194.26875 THz 6.25GHz spacing";
                }
                enum "1543.13" {
                  value 501;
                  description
                    "1543.13 nm/194.27500 THz 6.25/12.5GHz spacing";
                }
                enum "1543.08" {
                  value 502;
                  description
                    "1543.08 nm/194.28125 THz 6.25GHz spacing";
                }
                enum "1543.04" {
                  value 503;
                  description
                    "1543.04 nm/194.28750 THz 6.25/12.5GHz spacing";
                }
                enum "1542.99" {
                  value 504;
                  description
                    "1542.99 nm/194.29375 THz 6.25GHz spacing";
                }
                enum "1542.94" {
                  value 505;
                  description
                    "1542.94 nm/194.30000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1542.89" {
                  value 506;
                  description
                    "1542.89 nm/194.30625 THz 6.25GHz spacing";
                }
                enum "1542.84" {
                  value 507;
                  description
                    "1542.84 nm/194.31250 THz 6.25/12.5GHz spacing";
                }
                enum "1542.79" {
                  value 508;
                  description
                    "1542.79 nm/194.31875 THz 6.25GHz spacing";
                }
                enum "1542.74" {
                  value 509;
                  description
                    "1542.74 nm/194.32500 THz 6.25/12.5GHz spacing";
                }
                enum "1542.69" {
                  value 510;
                  description
                    "1542.69 nm/194.33125 THz 6.25GHz spacing";
                }
                enum "1542.64" {
                  value 511;
                  description
                    "1542.64 nm/194.33750 THz 6.25/12.5GHz spacing";
                }
                enum "1542.59" {
                  value 512;
                  description
                    "1542.59 nm/194.34375 THz 6.25GHz spacing";
                }
                enum "1542.54" {
                  value 513;
                  description
                    "1542.54 nm/194.35000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1542.49" {
                  value 514;
                  description
                    "1542.49 nm/194.35625 THz 6.25GHz spacing";
                }
                enum "1542.44" {
                  value 515;
                  description
                    "1542.44 nm/194.36250 THz 6.25/12.5GHz spacing";
                }
                enum "1542.39" {
                  value 516;
                  description
                    "1542.39 nm/194.36875 THz 6.25GHz spacing";
                }
                enum "1542.34" {
                  value 517;
                  description
                    "1542.34 nm/194.37500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1542.29" {
                  value 518;
                  description
                    "1542.29 nm/194.38125 THz 6.25GHz spacing";
                }
                enum "1542.24" {
                  value 519;
                  description
                    "1542.24 nm/194.38750 THz 6.25/12.5GHz spacing";
                }
                enum "1542.19" {
                  value 520;
                  description
                    "1542.19 nm/194.39375 THz 6.25GHz spacing";
                }
                enum "1542.14" {
                  value 521;
                  description
                    "1542.14 nm/194.40000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1542.09" {
                  value 522;
                  description
                    "1542.09 nm/194.40625 THz 6.25GHz spacing";
                }
                enum "1542.04" {
                  value 523;
                  description
                    "1542.04 nm/194.41250 THz 6.25/12.5GHz spacing";
                }
                enum "1541.99" {
                  value 524;
                  description
                    "1541.99 nm/194.41875 THz 6.25GHz spacing";
                }
                enum "1541.94" {
                  value 525;
                  description
                    "1541.94 nm/194.42500 THz 6.25/12.5GHz spacing";
                }
                enum "1541.89" {
                  value 526;
                  description
                    "1541.89 nm/194.43125 THz 6.25GHz spacing";
                }
                enum "1541.84" {
                  value 527;
                  description
                    "1541.84 nm/194.43750 THz 6.25/12.5GHz spacing";
                }
                enum "1541.80" {
                  value 528;
                  description
                    "1541.80 nm/194.44375 THz 6.25GHz spacing";
                }
                enum "1541.75" {
                  value 529;
                  description
                    "1541.75 nm/194.45000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1541.70" {
                  value 530;
                  description
                    "1541.70 nm/194.45625 THz 6.25GHz spacing";
                }
                enum "1541.65" {
                  value 531;
                  description
                    "1541.65 nm/194.46250 THz 6.25/12.5GHz spacing";
                }
                enum "1541.60" {
                  value 532;
                  description
                    "1541.60 nm/194.46875 THz 6.25GHz spacing";
                }
                enum "1541.55" {
                  value 533;
                  description
                    "1541.55 nm/194.47500 THz 6.25/12.5GHz spacing";
                }
                enum "1541.50" {
                  value 534;
                  description
                    "1541.50 nm/194.48125 THz 6.25GHz spacing";
                }
                enum "1541.45" {
                  value 535;
                  description
                    "1541.45 nm/194.48750 THz 6.25/12.5GHz spacing";
                }
                enum "1541.40" {
                  value 536;
                  description
                    "1541.40 nm/194.49375 THz 6.25GHz spacing";
                }
                enum "1541.35" {
                  value 537;
                  description
                    "1541.35 nm/194.50000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1541.30" {
                  value 538;
                  description
                    "1541.30 nm/194.50625 THz 6.25GHz spacing";
                }
                enum "1541.25" {
                  value 539;
                  description
                    "1541.25 nm/194.51250 THz 6.25/12.5GHz spacing";
                }
                enum "1541.20" {
                  value 540;
                  description
                    "1541.20 nm/194.51875 THz 6.25GHz spacing";
                }
                enum "1541.15" {
                  value 541;
                  description
                    "1541.15 nm/194.52500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1541.10" {
                  value 542;
                  description
                    "1541.10 nm/194.53125 THz 6.25GHz spacing";
                }
                enum "1541.05" {
                  value 543;
                  description
                    "1541.05 nm/194.53750 THz 6.25/12.5GHz spacing";
                }
                enum "1541.00" {
                  value 544;
                  description
                    "1541.00 nm/194.54375 THz 6.25GHz spacing";
                }
                enum "1540.95" {
                  value 545;
                  description
                    "1540.95 nm/194.55000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1540.90" {
                  value 546;
                  description
                    "1540.90 nm/194.55625 THz 6.25GHz spacing";
                }
                enum "1540.85" {
                  value 547;
                  description
                    "1540.85 nm/194.56250 THz 6.25/12.5GHz spacing";
                }
                enum "1540.80" {
                  value 548;
                  description
                    "1540.80 nm/194.56875 THz 6.25GHz spacing";
                }
                enum "1540.76" {
                  value 549;
                  description
                    "1540.76 nm/194.57500 THz 6.25/12.5GHz spacing";
                }
                enum "1540.71" {
                  value 550;
                  description
                    "1540.71 nm/194.58125 THz 6.25GHz spacing";
                }
                enum "1540.66" {
                  value 551;
                  description
                    "1540.66 nm/194.58750 THz 6.25/12.5GHz spacing";
                }
                enum "1540.61" {
                  value 552;
                  description
                    "1540.61 nm/194.59375 THz 6.25GHz spacing";
                }
                enum "1540.56" {
                  value 553;
                  description
                    "1540.56 nm/194.60000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1540.51" {
                  value 554;
                  description
                    "1540.51 nm/194.60625 THz 6.25GHz spacing";
                }
                enum "1540.46" {
                  value 555;
                  description
                    "1540.46 nm/194.61250 THz 6.25/12.5GHz spacing";
                }
                enum "1540.41" {
                  value 556;
                  description
                    "1540.41 nm/194.61875 THz 6.25GHz spacing";
                }
                enum "1540.36" {
                  value 557;
                  description
                    "1540.36 nm/194.62500 THz 6.25/12.5GHz spacing";
                }
                enum "1540.31" {
                  value 558;
                  description
                    "1540.31 nm/194.63125 THz 6.25GHz spacing";
                }
                enum "1540.26" {
                  value 559;
                  description
                    "1540.26 nm/194.63750 THz 6.25/12.5GHz spacing";
                }
                enum "1540.21" {
                  value 560;
                  description
                    "1540.21 nm/194.64375 THz 6.25GHz spacing";
                }
                enum "1540.16" {
                  value 561;
                  description
                    "1540.16 nm/194.65000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1540.11" {
                  value 562;
                  description
                    "1540.11 nm/194.65625 THz 6.25GHz spacing";
                }
                enum "1540.06" {
                  value 563;
                  description
                    "1540.06 nm/194.66250 THz 6.25/12.5GHz spacing";
                }
                enum "1540.01" {
                  value 564;
                  description
                    "1540.01 nm/194.66875 THz 6.25GHz spacing";
                }
                enum "1539.96" {
                  value 565;
                  description
                    "1539.96 nm/194.67500 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1539.91" {
                  value 566;
                  description
                    "1539.91 nm/194.68125 THz 6.25GHz spacing";
                }
                enum "1539.86" {
                  value 567;
                  description
                    "1539.86 nm/194.68750 THz 6.25/12.5GHz spacing";
                }
                enum "1539.82" {
                  value 568;
                  description
                    "1539.82 nm/194.69375 THz 6.25GHz spacing";
                }
                enum "1539.77" {
                  value 569;
                  description
                    "1539.77 nm/194.70000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1539.72" {
                  value 570;
                  description
                    "1539.72 nm/194.70625 THz 6.25GHz spacing";
                }
                enum "1539.67" {
                  value 571;
                  description
                    "1539.67 nm/194.71250 THz 6.25/12.5GHz spacing";
                }
                enum "1539.62" {
                  value 572;
                  description
                    "1539.62 nm/194.71875 THz 6.25GHz spacing";
                }
                enum "1539.57" {
                  value 573;
                  description
                    "1539.57 nm/194.72500 THz 6.25/12.5GHz spacing";
                }
                enum "1539.52" {
                  value 574;
                  description
                    "1539.52 nm/194.73125 THz 6.25GHz spacing";
                }
                enum "1539.47" {
                  value 575;
                  description
                    "1539.47 nm/194.73750 THz 6.25/12.5GHz spacing";
                }
                enum "1539.42" {
                  value 576;
                  description
                    "1539.42 nm/194.74375 THz 6.25GHz spacing";
                }
                enum "1539.37" {
                  value 577;
                  description
                    "1539.37 nm/194.75000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1539.32" {
                  value 578;
                  description
                    "1539.32 nm/194.75625 THz 6.25GHz spacing";
                }
                enum "1539.27" {
                  value 579;
                  description
                    "1539.27 nm/194.76250 THz 6.25/12.5GHz spacing";
                }
                enum "1539.22" {
                  value 580;
                  description
                    "1539.22 nm/194.76875 THz 6.25GHz spacing";
                }
                enum "1539.17" {
                  value 581;
                  description
                    "1539.17 nm/194.77500 THz 6.25/12.5GHz spacing";
                }
                enum "1539.12" {
                  value 582;
                  description
                    "1539.12 nm/194.78125 THz 6.25GHz spacing";
                }
                enum "1539.07" {
                  value 583;
                  description
                    "1539.07 nm/194.78750 THz 6.25/12.5GHz spacing";
                }
                enum "1539.03" {
                  value 584;
                  description
                    "1539.03 nm/194.79375 THz 6.25GHz spacing";
                }
                enum "1538.98" {
                  value 585;
                  description
                    "1538.98 nm/194.80000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1538.93" {
                  value 586;
                  description
                    "1538.93 nm/194.80625 THz 6.25GHz spacing";
                }
                enum "1538.88" {
                  value 587;
                  description
                    "1538.88 nm/194.81250 THz 6.25/12.5GHz spacing";
                }
                enum "1538.83" {
                  value 588;
                  description
                    "1538.83 nm/194.81875 THz 6.25GHz spacing";
                }
                enum "1538.78" {
                  value 589;
                  description
                    "1538.78 nm/194.82500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1538.73" {
                  value 590;
                  description
                    "1538.73 nm/194.83125 THz 6.25GHz spacing";
                }
                enum "1538.68" {
                  value 591;
                  description
                    "1538.68 nm/194.83750 THz 6.25/12.5GHz spacing";
                }
                enum "1538.63" {
                  value 592;
                  description
                    "1538.63 nm/194.84375 THz 6.25GHz spacing";
                }
                enum "1538.58" {
                  value 593;
                  description
                    "1538.58 nm/194.85000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1538.53" {
                  value 594;
                  description
                    "1538.53 nm/194.85625 THz 6.25GHz spacing";
                }
                enum "1538.48" {
                  value 595;
                  description
                    "1538.48 nm/194.86250 THz 6.25/12.5GHz spacing";
                }
                enum "1538.43" {
                  value 596;
                  description
                    "1538.43 nm/194.86875 THz 6.25GHz spacing";
                }
                enum "1538.38" {
                  value 597;
                  description
                    "1538.38 nm/194.87500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1538.33" {
                  value 598;
                  description
                    "1538.33 nm/194.88125 THz 6.25GHz spacing";
                }
                enum "1538.28" {
                  value 599;
                  description
                    "1538.28 nm/194.88750 THz 6.25/12.5GHz spacing";
                }
                enum "1538.24" {
                  value 600;
                  description
                    "1538.24 nm/194.89375 THz 6.25GHz spacing";
                }
                enum "1538.19" {
                  value 601;
                  description
                    "1538.19 nm/194.90000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1538.14" {
                  value 602;
                  description
                    "1538.14 nm/194.90625 THz 6.25GHz spacing";
                }
                enum "1538.09" {
                  value 603;
                  description
                    "1538.09 nm/194.91250 THz 6.25/12.5GHz spacing";
                }
                enum "1538.04" {
                  value 604;
                  description
                    "1538.04 nm/194.91875 THz 6.25GHz spacing";
                }
                enum "1537.99" {
                  value 605;
                  description
                    "1537.99 nm/194.92500 THz 6.25/12.5GHz spacing";
                }
                enum "1537.94" {
                  value 606;
                  description
                    "1537.94 nm/194.93125 THz 6.25GHz spacing";
                }
                enum "1537.89" {
                  value 607;
                  description
                    "1537.89 nm/194.93750 THz 6.25/12.5GHz spacing";
                }
                enum "1537.84" {
                  value 608;
                  description
                    "1537.84 nm/194.94375 THz 6.25GHz spacing";
                }
                enum "1537.79" {
                  value 609;
                  description
                    "1537.79 nm/194.95000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1537.74" {
                  value 610;
                  description
                    "1537.74 nm/194.95625 THz 6.25GHz spacing";
                }
                enum "1537.69" {
                  value 611;
                  description
                    "1537.69 nm/194.96250 THz 6.25/12.5GHz spacing";
                }
                enum "1537.64" {
                  value 612;
                  description
                    "1537.64 nm/194.96875 THz 6.25GHz spacing";
                }
                enum "1537.59" {
                  value 613;
                  description
                    "1537.59 nm/194.97500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1537.55" {
                  value 614;
                  description
                    "1537.55 nm/194.98125 THz 6.25GHz spacing";
                }
                enum "1537.50" {
                  value 615;
                  description
                    "1537.50 nm/194.98750 THz 6.25/12.5GHz spacing";
                }
                enum "1537.45" {
                  value 616;
                  description
                    "1537.45 nm/194.99375 THz 6.25GHz spacing";
                }
                enum "1537.40" {
                  value 617;
                  description
                    "1537.40 nm/195.00000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1537.35" {
                  value 618;
                  description
                    "1537.35 nm/195.00625 THz 6.25GHz spacing";
                }
                enum "1537.30" {
                  value 619;
                  description
                    "1537.30 nm/195.01250 THz 6.25/12.5GHz spacing";
                }
                enum "1537.25" {
                  value 620;
                  description
                    "1537.25 nm/195.01875 THz 6.25GHz spacing";
                }
                enum "1537.20" {
                  value 621;
                  description
                    "1537.20 nm/195.02500 THz 6.25/12.5GHz spacing";
                }
                enum "1537.15" {
                  value 622;
                  description
                    "1537.15 nm/195.03125 THz 6.25GHz spacing";
                }
                enum "1537.10" {
                  value 623;
                  description
                    "1537.10 nm/195.03750 THz 6.25/12.5GHz spacing";
                }
                enum "1537.05" {
                  value 624;
                  description
                    "1537.05 nm/195.04375 THz 6.25GHz spacing";
                }
                enum "1537.00" {
                  value 625;
                  description
                    "1537.00 nm/195.05000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1536.95" {
                  value 626;
                  description
                    "1536.95 nm/195.05625 THz 6.25GHz spacing";
                }
                enum "1536.90" {
                  value 627;
                  description
                    "1536.90 nm/195.06250 THz 6.25/12.5GHz spacing";
                }
                enum "1536.86" {
                  value 628;
                  description
                    "1536.86 nm/195.06875 THz 6.25GHz spacing";
                }
                enum "1536.81" {
                  value 629;
                  description
                    "1536.81 nm/195.07500 THz 6.25/12.5GHz spacing";
                }
                enum "1536.76" {
                  value 630;
                  description
                    "1536.76 nm/195.08125 THz 6.25GHz spacing";
                }
                enum "1536.71" {
                  value 631;
                  description
                    "1536.71 nm/195.08750 THz 6.25/12.5GHz spacing";
                }
                enum "1536.66" {
                  value 632;
                  description
                    "1536.66 nm/195.09375 THz 6.25GHz spacing";
                }
                enum "1536.61" {
                  value 633;
                  description
                    "1536.61 nm/195.10000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1536.56" {
                  value 634;
                  description
                    "1536.56 nm/195.10625 THz 6.25GHz spacing";
                }
                enum "1536.51" {
                  value 635;
                  description
                    "1536.51 nm/195.11250 THz 6.25/12.5GHz spacing";
                }
                enum "1536.46" {
                  value 636;
                  description
                    "1536.46 nm/195.11875 THz 6.25GHz spacing";
                }
                enum "1536.41" {
                  value 637;
                  description
                    "1536.41 nm/195.12500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1536.36" {
                  value 638;
                  description
                    "1536.36 nm/195.13125 THz 6.25GHz spacing";
                }
                enum "1536.31" {
                  value 639;
                  description
                    "1536.31 nm/195.13750 THz 6.25/12.5GHz spacing";
                }
                enum "1536.26" {
                  value 640;
                  description
                    "1536.26 nm/195.14375 THz 6.25GHz spacing";
                }
                enum "1536.22" {
                  value 641;
                  description
                    "1536.22 nm/195.15000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1536.17" {
                  value 642;
                  description
                    "1536.17 nm/195.15625 THz 6.25GHz spacing";
                }
                enum "1536.12" {
                  value 643;
                  description
                    "1536.12 nm/195.16250 THz 6.25/12.5GHz spacing";
                }
                enum "1536.07" {
                  value 644;
                  description
                    "1536.07 nm/195.16875 THz 6.25GHz spacing";
                }
                enum "1536.02" {
                  value 645;
                  description
                    "1536.02 nm/195.17500 THz 6.25/12.5GHz spacing";
                }
                enum "1535.97" {
                  value 646;
                  description
                    "1535.97 nm/195.18125 THz 6.25GHz spacing";
                }
                enum "1535.92" {
                  value 647;
                  description
                    "1535.92 nm/195.18750 THz 6.25/12.5GHz spacing";
                }
                enum "1535.87" {
                  value 648;
                  description
                    "1535.87 nm/195.19375 THz 6.25GHz spacing";
                }
                enum "1535.82" {
                  value 649;
                  description
                    "1535.82 nm/195.20000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1535.77" {
                  value 650;
                  description
                    "1535.77 nm/195.20625 THz 6.25GHz spacing";
                }
                enum "1535.72" {
                  value 651;
                  description
                    "1535.72 nm/195.21250 THz 6.25/12.5GHz spacing";
                }
                enum "1535.67" {
                  value 652;
                  description
                    "1535.67 nm/195.21875 THz 6.25GHz spacing";
                }
                enum "1535.63" {
                  value 653;
                  description
                    "1535.63 nm/195.22500 THz 6.25/12.5GHz spacing";
                }
                enum "1535.58" {
                  value 654;
                  description
                    "1535.58 nm/195.23125 THz 6.25GHz spacing";
                }
                enum "1535.53" {
                  value 655;
                  description
                    "1535.53 nm/195.23750 THz 6.25/12.5GHz spacing";
                }
                enum "1535.48" {
                  value 656;
                  description
                    "1535.48 nm/195.24375 THz 6.25GHz spacing";
                }
                enum "1535.43" {
                  value 657;
                  description
                    "1535.43 nm/195.25000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1535.38" {
                  value 658;
                  description
                    "1535.38 nm/195.25625 THz 6.25GHz spacing";
                }
                enum "1535.33" {
                  value 659;
                  description
                    "1535.33 nm/195.26250 THz 6.25/12.5GHz spacing";
                }
                enum "1535.28" {
                  value 660;
                  description
                    "1535.28 nm/195.26875 THz 6.25GHz spacing";
                }
                enum "1535.23" {
                  value 661;
                  description
                    "1535.23 nm/195.27500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1535.18" {
                  value 662;
                  description
                    "1535.18 nm/195.28125 THz 6.25GHz spacing";
                }
                enum "1535.13" {
                  value 663;
                  description
                    "1535.13 nm/195.28750 THz 6.25/12.5GHz spacing";
                }
                enum "1535.08" {
                  value 664;
                  description
                    "1535.08 nm/195.29375 THz 6.25GHz spacing";
                }
                enum "1535.04" {
                  value 665;
                  description
                    "1535.04 nm/195.30000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1534.99" {
                  value 666;
                  description
                    "1534.99 nm/195.30625 THz 6.25GHz spacing";
                }
                enum "1534.94" {
                  value 667;
                  description
                    "1534.94 nm/195.31250 THz 6.25/12.5GHz spacing";
                }
                enum "1534.89" {
                  value 668;
                  description
                    "1534.89 nm/195.31875 THz 6.25GHz spacing";
                }
                enum "1534.84" {
                  value 669;
                  description
                    "1534.84 nm/195.32500 THz 6.25/12.5GHz spacing";
                }
                enum "1534.79" {
                  value 670;
                  description
                    "1534.79 nm/195.33125 THz 6.25GHz spacing";
                }
                enum "1534.74" {
                  value 671;
                  description
                    "1534.74 nm/195.33750 THz 6.25/12.5GHz spacing";
                }
                enum "1534.69" {
                  value 672;
                  description
                    "1534.69 nm/195.34375 THz 6.25GHz spacing";
                }
                enum "1534.64" {
                  value 673;
                  description
                    "1534.64 nm/195.35000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1534.59" {
                  value 674;
                  description
                    "1534.59 nm/195.35625 THz 6.25GHz spacing";
                }
                enum "1534.54" {
                  value 675;
                  description
                    "1534.54 nm/195.36250 THz 6.25/12.5GHz spacing";
                }
                enum "1534.50" {
                  value 676;
                  description
                    "1534.50 nm/195.36875 THz 6.25GHz spacing";
                }
                enum "1534.45" {
                  value 677;
                  description
                    "1534.45 nm/195.37500 THz 6.25/12.5GHz spacing";
                }
                enum "1534.40" {
                  value 678;
                  description
                    "1534.40 nm/195.38125 THz 6.25GHz spacing";
                }
                enum "1534.35" {
                  value 679;
                  description
                    "1534.35 nm/195.38750 THz 6.25/12.5GHz spacing";
                }
                enum "1534.30" {
                  value 680;
                  description
                    "1534.30 nm/195.39375 THz 6.25GHz spacing";
                }
                enum "1534.25" {
                  value 681;
                  description
                    "1534.25 nm/195.40000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1534.20" {
                  value 682;
                  description
                    "1534.20 nm/195.40625 THz 6.25GHz spacing";
                }
                enum "1534.15" {
                  value 683;
                  description
                    "1534.15 nm/195.41250 THz 6.25/12.5GHz spacing";
                }
                enum "1534.10" {
                  value 684;
                  description
                    "1534.10 nm/195.41875 THz 6.25GHz spacing";
                }
                enum "1534.05" {
                  value 685;
                  description
                    "1534.05 nm/195.42500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1534.00" {
                  value 686;
                  description
                    "1534.00 nm/195.43125 THz 6.25GHz spacing";
                }
                enum "1533.96" {
                  value 687;
                  description
                    "1533.96 nm/195.43750 THz 6.25/12.5GHz spacing";
                }
                enum "1533.91" {
                  value 688;
                  description
                    "1533.91 nm/195.44375 THz 6.25GHz spacing";
                }
                enum "1533.86" {
                  value 689;
                  description
                    "1533.86 nm/195.45000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1533.81" {
                  value 690;
                  description
                    "1533.81 nm/195.45625 THz 6.25GHz spacing";
                }
                enum "1533.76" {
                  value 691;
                  description
                    "1533.76 nm/195.46250 THz 6.25/12.5GHz spacing";
                }
                enum "1533.71" {
                  value 692;
                  description
                    "1533.71 nm/195.46875 THz 6.25GHz spacing";
                }
                enum "1533.66" {
                  value 693;
                  description
                    "1533.66 nm/195.47500 THz 6.25/12.5GHz spacing";
                }
                enum "1533.61" {
                  value 694;
                  description
                    "1533.61 nm/195.48125 THz 6.25GHz spacing";
                }
                enum "1533.56" {
                  value 695;
                  description
                    "1533.56 nm/195.48750 THz 6.25/12.5GHz spacing";
                }
                enum "1533.51" {
                  value 696;
                  description
                    "1533.51 nm/195.49375 THz 6.25GHz spacing";
                }
                enum "1533.47" {
                  value 697;
                  description
                    "1533.47 nm/195.50000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1533.42" {
                  value 698;
                  description
                    "1533.42 nm/195.50625 THz 6.25GHz spacing";
                }
                enum "1533.37" {
                  value 699;
                  description
                    "1533.37 nm/195.51250 THz 6.25/12.5GHz spacing";
                }
                enum "1533.32" {
                  value 700;
                  description
                    "1533.32 nm/195.51875 THz 6.25GHz spacing";
                }
                enum "1533.27" {
                  value 701;
                  description
                    "1533.27 nm/195.52500 THz 6.25/12.5GHz spacing";
                }
                enum "1533.22" {
                  value 702;
                  description
                    "1533.22 nm/195.53125 THz 6.25GHz spacing";
                }
                enum "1533.17" {
                  value 703;
                  description
                    "1533.17 nm/195.53750 THz 6.25/12.5GHz spacing";
                }
                enum "1533.12" {
                  value 704;
                  description
                    "1533.12 nm/195.54375 THz 6.25GHz spacing";
                }
                enum "1533.07" {
                  value 705;
                  description
                    "1533.07 nm/195.55000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1533.02" {
                  value 706;
                  description
                    "1533.02 nm/195.55625 THz 6.25GHz spacing";
                }
                enum "1532.98" {
                  value 707;
                  description
                    "1532.98 nm/195.56250 THz 6.25/12.5GHz spacing";
                }
                enum "1532.93" {
                  value 708;
                  description
                    "1532.93 nm/195.56875 THz 6.25GHz spacing";
                }
                enum "1532.88" {
                  value 709;
                  description
                    "1532.88 nm/195.57500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1532.83" {
                  value 710;
                  description
                    "1532.83 nm/195.58125 THz 6.25GHz spacing";
                }
                enum "1532.78" {
                  value 711;
                  description
                    "1532.78 nm/195.58750 THz 6.25/12.5GHz spacing";
                }
                enum "1532.73" {
                  value 712;
                  description
                    "1532.73 nm/195.59375 THz 6.25GHz spacing";
                }
                enum "1532.68" {
                  value 713;
                  description
                    "1532.68 nm/195.60000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1532.63" {
                  value 714;
                  description
                    "1532.63 nm/195.60625 THz 6.25GHz spacing";
                }
                enum "1532.58" {
                  value 715;
                  description
                    "1532.58 nm/195.61250 THz 6.25/12.5GHz spacing";
                }
                enum "1532.53" {
                  value 716;
                  description
                    "1532.53 nm/195.61875 THz 6.25GHz spacing";
                }
                enum "1532.49" {
                  value 717;
                  description
                    "1532.49 nm/195.62500 THz 6.25/12.5GHz spacing";
                }
                enum "1532.44" {
                  value 718;
                  description
                    "1532.44 nm/195.63125 THz 6.25GHz spacing";
                }
                enum "1532.39" {
                  value 719;
                  description
                    "1532.39 nm/195.63750 THz 6.25/12.5GHz spacing";
                }
                enum "1532.34" {
                  value 720;
                  description
                    "1532.34 nm/195.64375 THz 6.25GHz spacing";
                }
                enum "1532.29" {
                  value 721;
                  description
                    "1532.29 nm/195.65000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1532.24" {
                  value 722;
                  description
                    "1532.24 nm/195.65625 THz 6.25GHz spacing";
                }
                enum "1532.19" {
                  value 723;
                  description
                    "1532.19 nm/195.66250 THz 6.25/12.5GHz spacing";
                }
                enum "1532.14" {
                  value 724;
                  description
                    "1532.14 nm/195.66875 THz 6.25GHz spacing";
                }
                enum "1532.09" {
                  value 725;
                  description
                    "1532.09 nm/195.67500 THz 6.25/12.5GHz spacing";
                }
                enum "1532.04" {
                  value 726;
                  description
                    "1532.04 nm/195.68125 THz 6.25GHz spacing";
                }
                enum "1532.00" {
                  value 727;
                  description
                    "1532.00 nm/195.68750 THz 6.25/12.5GHz spacing";
                }
                enum "1531.95" {
                  value 728;
                  description
                    "1531.95 nm/195.69375 THz 6.25GHz spacing";
                }
                enum "1531.90" {
                  value 729;
                  description
                    "1531.90 nm/195.70000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1531.85" {
                  value 730;
                  description
                    "1531.85 nm/195.70625 THz 6.25GHz spacing";
                }
                enum "1531.80" {
                  value 731;
                  description
                    "1531.80 nm/195.71250 THz 6.25/12.5GHz spacing";
                }
                enum "1531.75" {
                  value 732;
                  description
                    "1531.75 nm/195.71875 THz 6.25GHz spacing";
                }
                enum "1531.70" {
                  value 733;
                  description
                    "1531.70 nm/195.72500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1531.65" {
                  value 734;
                  description
                    "1531.65 nm/195.73125 THz 6.25GHz spacing";
                }
                enum "1531.60" {
                  value 735;
                  description
                    "1531.60 nm/195.73750 THz 6.25/12.5GHz spacing";
                }
                enum "1531.56" {
                  value 736;
                  description
                    "1531.56 nm/195.74375 THz 6.25GHz spacing";
                }
                enum "1531.51" {
                  value 737;
                  description
                    "1531.51 nm/195.75000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1531.46" {
                  value 738;
                  description
                    "1531.46 nm/195.75625 THz 6.25GHz spacing";
                }
                enum "1531.41" {
                  value 739;
                  description
                    "1531.41 nm/195.76250 THz 6.25/12.5GHz spacing";
                }
                enum "1531.36" {
                  value 740;
                  description
                    "1531.36 nm/195.76875 THz 6.25GHz spacing";
                }
                enum "1531.31" {
                  value 741;
                  description
                    "1531.31 nm/195.77500 THz 6.25/12.5GHz spacing";
                }
                enum "1531.26" {
                  value 742;
                  description
                    "1531.26 nm/195.78125 THz 6.25GHz spacing";
                }
                enum "1531.21" {
                  value 743;
                  description
                    "1531.21 nm/195.78750 THz 6.25/12.5GHz spacing";
                }
                enum "1531.16" {
                  value 744;
                  description
                    "1531.16 nm/195.79375 THz 6.25GHz spacing";
                }
                enum "1531.12" {
                  value 745;
                  description
                    "1531.12 nm/195.80000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1531.07" {
                  value 746;
                  description
                    "1531.07 nm/195.80625 THz 6.25GHz spacing";
                }
                enum "1531.02" {
                  value 747;
                  description
                    "1531.02 nm/195.81250 THz 6.25/12.5GHz spacing";
                }
                enum "1530.97" {
                  value 748;
                  description
                    "1530.97 nm/195.81875 THz 6.25GHz spacing";
                }
                enum "1530.92" {
                  value 749;
                  description
                    "1530.92 nm/195.82500 THz 6.25/12.5GHz spacing";
                }
                enum "1530.87" {
                  value 750;
                  description
                    "1530.87 nm/195.83125 THz 6.25GHz spacing";
                }
                enum "1530.82" {
                  value 751;
                  description
                    "1530.82 nm/195.83750 THz 6.25/12.5GHz spacing";
                }
                enum "1530.77" {
                  value 752;
                  description
                    "1530.77 nm/195.84375 THz 6.25GHz spacing";
                }
                enum "1530.72" {
                  value 753;
                  description
                    "1530.72 nm/195.85000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1530.68" {
                  value 754;
                  description
                    "1530.68 nm/195.85625 THz 6.25GHz spacing";
                }
                enum "1530.63" {
                  value 755;
                  description
                    "1530.63 nm/195.86250 THz 6.25/12.5GHz spacing";
                }
                enum "1530.58" {
                  value 756;
                  description
                    "1530.58 nm/195.86875 THz 6.25GHz spacing";
                }
                enum "1530.53" {
                  value 757;
                  description
                    "1530.53 nm/195.87500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1530.48" {
                  value 758;
                  description
                    "1530.48 nm/195.88125 THz 6.25GHz spacing";
                }
                enum "1530.43" {
                  value 759;
                  description
                    "1530.43 nm/195.88750 THz 6.25/12.5GHz spacing";
                }
                enum "1530.38" {
                  value 760;
                  description
                    "1530.38 nm/195.89375 THz 6.25GHz spacing";
                }
                enum "1530.33" {
                  value 761;
                  description
                    "1530.33 nm/195.90000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1530.29" {
                  value 762;
                  description
                    "1530.29 nm/195.90625 THz 6.25GHz spacing";
                }
                enum "1530.24" {
                  value 763;
                  description
                    "1530.24 nm/195.91250 THz 6.25/12.5GHz spacing";
                }
                enum "1530.19" {
                  value 764;
                  description
                    "1530.19 nm/195.91875 THz 6.25GHz spacing";
                }
                enum "1530.14" {
                  value 765;
                  description
                    "1530.14 nm/195.92500 THz 6.25/12.5GHz spacing";
                }
                enum "1530.09" {
                  value 766;
                  description
                    "1530.09 nm/195.93125 THz 6.25GHz spacing";
                }
                enum "1530.04" {
                  value 767;
                  description
                    "1530.04 nm/195.93750 THz 6.25/12.5GHz spacing";
                }
                enum "1529.99" {
                  value 768;
                  description
                    "1529.99 nm/195.94375 THz 6.25GHz spacing";
                }
                enum "1529.94" {
                  value 769;
                  description
                    "1529.94 nm/195.95000 THz 6.25/12.5/50/75GHz spacing";
                }
                enum "1529.89" {
                  value 770;
                  description
                    "1529.89 nm/195.95625 THz 6.25GHz spacing";
                }
                enum "1529.85" {
                  value 771;
                  description
                    "1529.85 nm/195.96250 THz 6.25/12.5GHz spacing";
                }
                enum "1529.80" {
                  value 772;
                  description
                    "1529.80 nm/195.96875 THz 6.25GHz spacing";
                }
                enum "1529.75" {
                  value 773;
                  description
                    "1529.75 nm/195.97500 THz 6.25/12.5GHz spacing";
                }
                enum "1529.70" {
                  value 774;
                  description
                    "1529.70 nm/195.98125 THz 6.25GHz spacing";
                }
                enum "1529.65" {
                  value 775;
                  description
                    "1529.65 nm/195.98750 THz 6.25/12.5GHz spacing";
                }
                enum "1529.60" {
                  value 776;
                  description
                    "1529.60 nm/195.99375 THz 6.25GHz spacing";
                }
                enum "1529.55" {
                  value 777;
                  description
                    "1529.55 nm/196.00000 THz 6.25/12.5/50/100GHz spacing";
                }
                enum "1529.50" {
                  value 778;
                  description
                    "1529.50 nm/196.00625 THz 6.25GHz spacing";
                }
                enum "1529.46" {
                  value 779;
                  description
                    "1529.46 nm/196.01250 THz 6.25/12.5GHz spacing";
                }
                enum "1529.41" {
                  value 780;
                  description
                    "1529.41 nm/196.01875 THz 6.25GHz spacing";
                }
                enum "1529.36" {
                  value 781;
                  description
                    "1529.36 nm/196.02500 THz 6.25/12.5/75GHz spacing";
                }
                enum "1529.31" {
                  value 782;
                  description
                    "1529.31 nm/196.03125 THz 6.25GHz spacing";
                }
                enum "1529.26" {
                  value 783;
                  description
                    "1529.26 nm/196.03750 THz 6.25/12.5GHz spacing";
                }
                enum "1529.21" {
                  value 784;
                  description
                    "1529.21 nm/196.04375 THz 6.25GHz spacing";
                }
                enum "1529.16" {
                  value 785;
                  description
                    "1529.16 nm/196.05000 THz 6.25/12.5/50GHz spacing";
                }
                enum "1529.11" {
                  value 786;
                  description
                    "1529.11 nm/196.05625 THz 6.25GHz spacing";
                }
                enum "1529.07" {
                  value 787;
                  description
                    "1529.07 nm/196.06250 THz 6.25/12.5GHz spacing";
                }
                enum "1529.02" {
                  value 788;
                  description
                    "1529.02 nm/196.06875 THz 6.25GHz spacing";
                }
                enum "1528.97" {
                  value 789;
                  description
                    "1528.97 nm/196.07500 THz 6.25/12.5GHz spacing";
                }
                enum "1528.92" {
                  value 790;
                  description
                    "1528.92 nm/196.08125 THz 6.25GHz spacing";
                }
                enum "1528.87" {
                  value 791;
                  description
                    "1528.87 nm/196.08750 THz 6.25/12.5GHz spacing";
                }
                enum "1528.82" {
                  value 792;
                  description
                    "1528.82 nm/196.09375 THz 6.25GHz spacing";
                }
                enum "1528.77" {
                  value 793;
                  description
                    "1528.77 nm/196.10000 THz 6.25/12.5/50/75/100GHz spacing";
                }
                enum "1528.38" {
                  value 794;
                  description
                    "1528.38 nm/196.15040 THz 50Ghz spacing";
                }
              }
              description
                "Optical channel wavelength in nanometers";
            }
            leaf frequency {
              type enumeration {
                enum "191.1003" {
                  value 0;
                  description
                    "191.1003 THz/1568.77 nm 50/100Ghz spacing";
                }
                enum "191.15000" {
                  value 1;
                  description
                    "191.15000 THz/1568.36 nm 6.25/12.5/50GHz spacing";
                }
                enum "191.15625" {
                  value 2;
                  description
                    "191.15625 THz/1568.31 nm 6.25GHz spacing";
                }
                enum "191.16250" {
                  value 3;
                  description
                    "191.16250 THz/1568.26 nm 6.25/12.5GHz spacing";
                }
                enum "191.16875" {
                  value 4;
                  description
                    "191.16875 THz/1568.21 nm 6.25GHz spacing";
                }
                enum "191.17500" {
                  value 5;
                  description
                    "191.17500 THz/1568.16 nm 6.25/12.5GHz spacing";
                }
                enum "191.18125" {
                  value 6;
                  description
                    "191.18125 THz/1568.11 nm 6.25GHz spacing";
                }
                enum "191.18750" {
                  value 7;
                  description
                    "191.18750 THz/1568.05 nm 6.25/12.5GHz spacing";
                }
                enum "191.19375" {
                  value 8;
                  description
                    "191.19375 THz/1568.00 nm 6.25GHz spacing";
                }
                enum "191.20000" {
                  value 9;
                  description
                    "191.20000 THz/1567.95 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "191.20625" {
                  value 10;
                  description
                    "191.20625 THz/1567.90 nm 6.25GHz spacing";
                }
                enum "191.21250" {
                  value 11;
                  description
                    "191.21250 THz/1567.85 nm 6.25/12.5GHz spacing";
                }
                enum "191.21875" {
                  value 12;
                  description
                    "191.21875 THz/1567.80 nm 6.25GHz spacing";
                }
                enum "191.22500" {
                  value 13;
                  description
                    "191.22500 THz/1567.75 nm 6.25/12.5GHz spacing";
                }
                enum "191.23125" {
                  value 14;
                  description
                    "191.23125 THz/1567.70 nm 6.25GHz spacing";
                }
                enum "191.23750" {
                  value 15;
                  description
                    "191.23750 THz/1567.64 nm 6.25/12.5GHz spacing";
                }
                enum "191.24375" {
                  value 16;
                  description
                    "191.24375 THz/1567.59 nm 6.25GHz spacing";
                }
                enum "191.25000" {
                  value 17;
                  description
                    "191.25000 THz/1567.54 nm 6.25/12.5/50GHz spacing";
                }
                enum "191.25625" {
                  value 18;
                  description
                    "191.25625 THz/1567.49 nm 6.25GHz spacing";
                }
                enum "191.26250" {
                  value 19;
                  description
                    "191.26250 THz/1567.44 nm 6.25/12.5GHz spacing";
                }
                enum "191.26875" {
                  value 20;
                  description
                    "191.26875 THz/1567.39 nm 6.25GHz spacing";
                }
                enum "191.27500" {
                  value 21;
                  description
                    "191.27500 THz/1567.34 nm 6.25/12.5GHz spacing";
                }
                enum "191.28125" {
                  value 22;
                  description
                    "191.28125 THz/1567.29 nm 6.25GHz spacing";
                }
                enum "191.28750" {
                  value 23;
                  description
                    "191.28750 THz/1567.23 nm 6.25/12.5GHz spacing";
                }
                enum "191.29375" {
                  value 24;
                  description
                    "191.29375 THz/1567.18 nm 6.25GHz spacing";
                }
                enum "191.30000" {
                  value 25;
                  description
                    "191.30000 THz/1567.13 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "191.30625" {
                  value 26;
                  description
                    "191.30625 THz/1567.08 nm 6.25GHz spacing";
                }
                enum "191.31250" {
                  value 27;
                  description
                    "191.31250 THz/1567.03 nm 6.25/12.5GHz spacing";
                }
                enum "191.31875" {
                  value 28;
                  description
                    "191.31875 THz/1566.98 nm 6.25GHz spacing";
                }
                enum "191.32500" {
                  value 29;
                  description
                    "191.32500 THz/1566.93 nm 6.25/12.5GHz spacing";
                }
                enum "191.33125" {
                  value 30;
                  description
                    "191.33125 THz/1566.88 nm 6.25GHz spacing";
                }
                enum "191.33750" {
                  value 31;
                  description
                    "191.33750 THz/1566.83 nm 6.25/12.5GHz spacing";
                }
                enum "191.34375" {
                  value 32;
                  description
                    "191.34375 THz/1566.77 nm 6.25GHz spacing";
                }
                enum "191.35000" {
                  value 33;
                  description
                    "191.35000 THz/1566.72 nm 6.25/12.5/50GHz spacing";
                }
                enum "191.35625" {
                  value 34;
                  description
                    "191.35625 THz/1566.67 nm 6.25GHz spacing";
                }
                enum "191.36250" {
                  value 35;
                  description
                    "191.36250 THz/1566.62 nm 6.25/12.5GHz spacing";
                }
                enum "191.36875" {
                  value 36;
                  description
                    "191.36875 THz/1566.57 nm 6.25GHz spacing";
                }
                enum "191.37500" {
                  value 37;
                  description
                    "191.37500 THz/1566.52 nm 6.25/12.5/75GHz spacing";
                }
                enum "191.38125" {
                  value 38;
                  description
                    "191.38125 THz/1566.47 nm 6.25GHz spacing";
                }
                enum "191.38750" {
                  value 39;
                  description
                    "191.38750 THz/1566.42 nm 6.25/12.5GHz spacing";
                }
                enum "191.39375" {
                  value 40;
                  description
                    "191.39375 THz/1566.36 nm 6.25GHz spacing";
                }
                enum "191.40000" {
                  value 41;
                  description
                    "191.40000 THz/1566.31 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "191.40625" {
                  value 42;
                  description
                    "191.40625 THz/1566.26 nm 6.25GHz spacing";
                }
                enum "191.41250" {
                  value 43;
                  description
                    "191.41250 THz/1566.21 nm 6.25/12.5GHz spacing";
                }
                enum "191.41875" {
                  value 44;
                  description
                    "191.41875 THz/1566.16 nm 6.25GHz spacing";
                }
                enum "191.42500" {
                  value 45;
                  description
                    "191.42500 THz/1566.11 nm 6.25/12.5GHz spacing";
                }
                enum "191.43125" {
                  value 46;
                  description
                    "191.43125 THz/1566.06 nm 6.25GHz spacing";
                }
                enum "191.43750" {
                  value 47;
                  description
                    "191.43750 THz/1566.01 nm 6.25/12.5GHz spacing";
                }
                enum "191.44375" {
                  value 48;
                  description
                    "191.44375 THz/1565.96 nm 6.25GHz spacing";
                }
                enum "191.45000" {
                  value 49;
                  description
                    "191.45000 THz/1565.90 nm 6.25/12.5/50/75GHz spacing";
                }
                enum "191.45625" {
                  value 50;
                  description
                    "191.45625 THz/1565.85 nm 6.25GHz spacing";
                }
                enum "191.46250" {
                  value 51;
                  description
                    "191.46250 THz/1565.80 nm 6.25/12.5GHz spacing";
                }
                enum "191.46875" {
                  value 52;
                  description
                    "191.46875 THz/1565.75 nm 6.25GHz spacing";
                }
                enum "191.47500" {
                  value 53;
                  description
                    "191.47500 THz/1565.70 nm 6.25/12.5GHz spacing";
                }
                enum "191.48125" {
                  value 54;
                  description
                    "191.48125 THz/1565.65 nm 6.25GHz spacing";
                }
                enum "191.48750" {
                  value 55;
                  description
                    "191.48750 THz/1565.60 nm 6.25/12.5GHz spacing";
                }
                enum "191.49375" {
                  value 56;
                  description
                    "191.49375 THz/1565.55 nm 6.25GHz spacing";
                }
                enum "191.50000" {
                  value 57;
                  description
                    "191.50000 THz/1565.50 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "191.50625" {
                  value 58;
                  description
                    "191.50625 THz/1565.44 nm 6.25GHz spacing";
                }
                enum "191.51250" {
                  value 59;
                  description
                    "191.51250 THz/1565.39 nm 6.25/12.5GHz spacing";
                }
                enum "191.51875" {
                  value 60;
                  description
                    "191.51875 THz/1565.34 nm 6.25GHz spacing";
                }
                enum "191.52500" {
                  value 61;
                  description
                    "191.52500 THz/1565.29 nm 6.25/12.5/75GHz spacing";
                }
                enum "191.53125" {
                  value 62;
                  description
                    "191.53125 THz/1565.24 nm 6.25GHz spacing";
                }
                enum "191.53750" {
                  value 63;
                  description
                    "191.53750 THz/1565.19 nm 6.25/12.5GHz spacing";
                }
                enum "191.54375" {
                  value 64;
                  description
                    "191.54375 THz/1565.14 nm 6.25GHz spacing";
                }
                enum "191.55000" {
                  value 65;
                  description
                    "191.55000 THz/1565.09 nm 6.25/12.5/50GHz spacing";
                }
                enum "191.55625" {
                  value 66;
                  description
                    "191.55625 THz/1565.04 nm 6.25GHz spacing";
                }
                enum "191.56250" {
                  value 67;
                  description
                    "191.56250 THz/1564.99 nm 6.25/12.5GHz spacing";
                }
                enum "191.56875" {
                  value 68;
                  description
                    "191.56875 THz/1564.93 nm 6.25GHz spacing";
                }
                enum "191.57500" {
                  value 69;
                  description
                    "191.57500 THz/1564.88 nm 6.25/12.5GHz spacing";
                }
                enum "191.58125" {
                  value 70;
                  description
                    "191.58125 THz/1564.83 nm 6.25GHz spacing";
                }
                enum "191.58750" {
                  value 71;
                  description
                    "191.58750 THz/1564.78 nm 6.25/12.5GHz spacing";
                }
                enum "191.59375" {
                  value 72;
                  description
                    "191.59375 THz/1564.73 nm 6.25GHz spacing";
                }
                enum "191.60000" {
                  value 73;
                  description
                    "191.60000 THz/1564.68 nm 6.25/12.5/50/75/100GHz spacing";
                }
                enum "191.60625" {
                  value 74;
                  description
                    "191.60625 THz/1564.63 nm 6.25GHz spacing";
                }
                enum "191.61250" {
                  value 75;
                  description
                    "191.61250 THz/1564.58 nm 6.25/12.5GHz spacing";
                }
                enum "191.61875" {
                  value 76;
                  description
                    "191.61875 THz/1564.53 nm 6.25GHz spacing";
                }
                enum "191.62500" {
                  value 77;
                  description
                    "191.62500 THz/1564.47 nm 6.25/12.5GHz spacing";
                }
                enum "191.63125" {
                  value 78;
                  description
                    "191.63125 THz/1564.42 nm 6.25GHz spacing";
                }
                enum "191.63750" {
                  value 79;
                  description
                    "191.63750 THz/1564.37 nm 6.25/12.5GHz spacing";
                }
                enum "191.64375" {
                  value 80;
                  description
                    "191.64375 THz/1564.32 nm 6.25GHz spacing";
                }
                enum "191.65000" {
                  value 81;
                  description
                    "191.65000 THz/1564.27 nm 6.25/12.5/50GHz spacing";
                }
                enum "191.65625" {
                  value 82;
                  description
                    "191.65625 THz/1564.22 nm 6.25GHz spacing";
                }
                enum "191.66250" {
                  value 83;
                  description
                    "191.66250 THz/1564.17 nm 6.25/12.5GHz spacing";
                }
                enum "191.66875" {
                  value 84;
                  description
                    "191.66875 THz/1564.12 nm 6.25GHz spacing";
                }
                enum "191.67500" {
                  value 85;
                  description
                    "191.67500 THz/1564.07 nm 6.25/12.5/75GHz spacing";
                }
                enum "191.68125" {
                  value 86;
                  description
                    "191.68125 THz/1564.02 nm 6.25GHz spacing";
                }
                enum "191.68750" {
                  value 87;
                  description
                    "191.68750 THz/1563.96 nm 6.25/12.5GHz spacing";
                }
                enum "191.69375" {
                  value 88;
                  description
                    "191.69375 THz/1563.91 nm 6.25GHz spacing";
                }
                enum "191.70000" {
                  value 89;
                  description
                    "191.70000 THz/1563.86 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "191.70625" {
                  value 90;
                  description
                    "191.70625 THz/1563.81 nm 6.25GHz spacing";
                }
                enum "191.71250" {
                  value 91;
                  description
                    "191.71250 THz/1563.76 nm 6.25/12.5GHz spacing";
                }
                enum "191.71875" {
                  value 92;
                  description
                    "191.71875 THz/1563.71 nm 6.25GHz spacing";
                }
                enum "191.72500" {
                  value 93;
                  description
                    "191.72500 THz/1563.66 nm 6.25/12.5GHz spacing";
                }
                enum "191.73125" {
                  value 94;
                  description
                    "191.73125 THz/1563.61 nm 6.25GHz spacing";
                }
                enum "191.73750" {
                  value 95;
                  description
                    "191.73750 THz/1563.56 nm 6.25/12.5GHz spacing";
                }
                enum "191.74375" {
                  value 96;
                  description
                    "191.74375 THz/1563.51 nm 6.25GHz spacing";
                }
                enum "191.75000" {
                  value 97;
                  description
                    "191.75000 THz/1563.45 nm 6.25/12.5/50/75GHz spacing";
                }
                enum "191.75625" {
                  value 98;
                  description
                    "191.75625 THz/1563.40 nm 6.25GHz spacing";
                }
                enum "191.76250" {
                  value 99;
                  description
                    "191.76250 THz/1563.35 nm 6.25/12.5GHz spacing";
                }
                enum "191.76875" {
                  value 100;
                  description
                    "191.76875 THz/1563.30 nm 6.25GHz spacing";
                }
                enum "191.77500" {
                  value 101;
                  description
                    "191.77500 THz/1563.25 nm 6.25/12.5GHz spacing";
                }
                enum "191.78125" {
                  value 102;
                  description
                    "191.78125 THz/1563.20 nm 6.25GHz spacing";
                }
                enum "191.78750" {
                  value 103;
                  description
                    "191.78750 THz/1563.15 nm 6.25/12.5GHz spacing";
                }
                enum "191.79375" {
                  value 104;
                  description
                    "191.79375 THz/1563.10 nm 6.25GHz spacing";
                }
                enum "191.80000" {
                  value 105;
                  description
                    "191.80000 THz/1563.05 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "191.80625" {
                  value 106;
                  description
                    "191.80625 THz/1563.00 nm 6.25GHz spacing";
                }
                enum "191.81250" {
                  value 107;
                  description
                    "191.81250 THz/1562.95 nm 6.25/12.5GHz spacing";
                }
                enum "191.81875" {
                  value 108;
                  description
                    "191.81875 THz/1562.89 nm 6.25GHz spacing";
                }
                enum "191.82500" {
                  value 109;
                  description
                    "191.82500 THz/1562.84 nm 6.25/12.5/75GHz spacing";
                }
                enum "191.83125" {
                  value 110;
                  description
                    "191.83125 THz/1562.79 nm 6.25GHz spacing";
                }
                enum "191.83750" {
                  value 111;
                  description
                    "191.83750 THz/1562.74 nm 6.25/12.5GHz spacing";
                }
                enum "191.84375" {
                  value 112;
                  description
                    "191.84375 THz/1562.69 nm 6.25GHz spacing";
                }
                enum "191.85000" {
                  value 113;
                  description
                    "191.85000 THz/1562.64 nm 6.25/12.5/50GHz spacing";
                }
                enum "191.85625" {
                  value 114;
                  description
                    "191.85625 THz/1562.59 nm 6.25GHz spacing";
                }
                enum "191.86250" {
                  value 115;
                  description
                    "191.86250 THz/1562.54 nm 6.25/12.5GHz spacing";
                }
                enum "191.86875" {
                  value 116;
                  description
                    "191.86875 THz/1562.49 nm 6.25GHz spacing";
                }
                enum "191.87500" {
                  value 117;
                  description
                    "191.87500 THz/1562.44 nm 6.25/12.5GHz spacing";
                }
                enum "191.88125" {
                  value 118;
                  description
                    "191.88125 THz/1562.39 nm 6.25GHz spacing";
                }
                enum "191.88750" {
                  value 119;
                  description
                    "191.88750 THz/1562.33 nm 6.25/12.5GHz spacing";
                }
                enum "191.89375" {
                  value 120;
                  description
                    "191.89375 THz/1562.28 nm 6.25GHz spacing";
                }
                enum "191.90000" {
                  value 121;
                  description
                    "191.90000 THz/1562.23 nm 6.25/12.5/50/75/100GHz spacing";
                }
                enum "191.90625" {
                  value 122;
                  description
                    "191.90625 THz/1562.18 nm 6.25GHz spacing";
                }
                enum "191.91250" {
                  value 123;
                  description
                    "191.91250 THz/1562.13 nm 6.25/12.5GHz spacing";
                }
                enum "191.91875" {
                  value 124;
                  description
                    "191.91875 THz/1562.08 nm 6.25GHz spacing";
                }
                enum "191.92500" {
                  value 125;
                  description
                    "191.92500 THz/1562.03 nm 6.25/12.5GHz spacing";
                }
                enum "191.93125" {
                  value 126;
                  description
                    "191.93125 THz/1561.98 nm 6.25GHz spacing";
                }
                enum "191.93750" {
                  value 127;
                  description
                    "191.93750 THz/1561.93 nm 6.25/12.5GHz spacing";
                }
                enum "191.94375" {
                  value 128;
                  description
                    "191.94375 THz/1561.88 nm 6.25GHz spacing";
                }
                enum "191.95000" {
                  value 129;
                  description
                    "191.95000 THz/1561.83 nm 6.25/12.5/50GHz spacing";
                }
                enum "191.95625" {
                  value 130;
                  description
                    "191.95625 THz/1561.77 nm 6.25GHz spacing";
                }
                enum "191.96250" {
                  value 131;
                  description
                    "191.96250 THz/1561.72 nm 6.25/12.5GHz spacing";
                }
                enum "191.96875" {
                  value 132;
                  description
                    "191.96875 THz/1561.67 nm 6.25GHz spacing";
                }
                enum "191.97500" {
                  value 133;
                  description
                    "191.97500 THz/1561.62 nm 6.25/12.5/75GHz spacing";
                }
                enum "191.98125" {
                  value 134;
                  description
                    "191.98125 THz/1561.57 nm 6.25GHz spacing";
                }
                enum "191.98750" {
                  value 135;
                  description
                    "191.98750 THz/1561.52 nm 6.25/12.5GHz spacing";
                }
                enum "191.99375" {
                  value 136;
                  description
                    "191.99375 THz/1561.47 nm 6.25GHz spacing";
                }
                enum "192.00000" {
                  value 137;
                  description
                    "192.00000 THz/1561.42 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "192.00625" {
                  value 138;
                  description
                    "192.00625 THz/1561.37 nm 6.25GHz spacing";
                }
                enum "192.01250" {
                  value 139;
                  description
                    "192.01250 THz/1561.32 nm 6.25/12.5GHz spacing";
                }
                enum "192.01875" {
                  value 140;
                  description
                    "192.01875 THz/1561.27 nm 6.25GHz spacing";
                }
                enum "192.02500" {
                  value 141;
                  description
                    "192.02500 THz/1561.22 nm 6.25/12.5GHz spacing";
                }
                enum "192.03125" {
                  value 142;
                  description
                    "192.03125 THz/1561.16 nm 6.25GHz spacing";
                }
                enum "192.03750" {
                  value 143;
                  description
                    "192.03750 THz/1561.11 nm 6.25/12.5GHz spacing";
                }
                enum "192.04375" {
                  value 144;
                  description
                    "192.04375 THz/1561.06 nm 6.25GHz spacing";
                }
                enum "192.05000" {
                  value 145;
                  description
                    "192.05000 THz/1561.01 nm 6.25/12.5/50/75GHz spacing";
                }
                enum "192.05625" {
                  value 146;
                  description
                    "192.05625 THz/1560.96 nm 6.25GHz spacing";
                }
                enum "192.06250" {
                  value 147;
                  description
                    "192.06250 THz/1560.91 nm 6.25/12.5GHz spacing";
                }
                enum "192.06875" {
                  value 148;
                  description
                    "192.06875 THz/1560.86 nm 6.25GHz spacing";
                }
                enum "192.07500" {
                  value 149;
                  description
                    "192.07500 THz/1560.81 nm 6.25/12.5GHz spacing";
                }
                enum "192.08125" {
                  value 150;
                  description
                    "192.08125 THz/1560.76 nm 6.25GHz spacing";
                }
                enum "192.08750" {
                  value 151;
                  description
                    "192.08750 THz/1560.71 nm 6.25/12.5GHz spacing";
                }
                enum "192.09375" {
                  value 152;
                  description
                    "192.09375 THz/1560.66 nm 6.25GHz spacing";
                }
                enum "192.10000" {
                  value 153;
                  description
                    "192.10000 THz/1560.61 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "192.10625" {
                  value 154;
                  description
                    "192.10625 THz/1560.56 nm 6.25GHz spacing";
                }
                enum "192.11250" {
                  value 155;
                  description
                    "192.11250 THz/1560.50 nm 6.25/12.5GHz spacing";
                }
                enum "192.11875" {
                  value 156;
                  description
                    "192.11875 THz/1560.45 nm 6.25GHz spacing";
                }
                enum "192.12500" {
                  value 157;
                  description
                    "192.12500 THz/1560.40 nm 6.25/12.5/75GHz spacing";
                }
                enum "192.13125" {
                  value 158;
                  description
                    "192.13125 THz/1560.35 nm 6.25GHz spacing";
                }
                enum "192.13750" {
                  value 159;
                  description
                    "192.13750 THz/1560.30 nm 6.25/12.5GHz spacing";
                }
                enum "192.14375" {
                  value 160;
                  description
                    "192.14375 THz/1560.25 nm 6.25GHz spacing";
                }
                enum "192.15000" {
                  value 161;
                  description
                    "192.15000 THz/1560.20 nm 6.25/12.5/50GHz spacing";
                }
                enum "192.15625" {
                  value 162;
                  description
                    "192.15625 THz/1560.15 nm 6.25GHz spacing";
                }
                enum "192.16250" {
                  value 163;
                  description
                    "192.16250 THz/1560.10 nm 6.25/12.5GHz spacing";
                }
                enum "192.16875" {
                  value 164;
                  description
                    "192.16875 THz/1560.05 nm 6.25GHz spacing";
                }
                enum "192.17500" {
                  value 165;
                  description
                    "192.17500 THz/1560.00 nm 6.25/12.5GHz spacing";
                }
                enum "192.18125" {
                  value 166;
                  description
                    "192.18125 THz/1559.95 nm 6.25GHz spacing";
                }
                enum "192.18750" {
                  value 167;
                  description
                    "192.18750 THz/1559.90 nm 6.25/12.5GHz spacing";
                }
                enum "192.19375" {
                  value 168;
                  description
                    "192.19375 THz/1559.84 nm 6.25GHz spacing";
                }
                enum "192.20000" {
                  value 169;
                  description
                    "192.20000 THz/1559.79 nm 6.25/12.5/50/75/100GHz spacing";
                }
                enum "192.20625" {
                  value 170;
                  description
                    "192.20625 THz/1559.74 nm 6.25GHz spacing";
                }
                enum "192.21250" {
                  value 171;
                  description
                    "192.21250 THz/1559.69 nm 6.25/12.5GHz spacing";
                }
                enum "192.21875" {
                  value 172;
                  description
                    "192.21875 THz/1559.64 nm 6.25GHz spacing";
                }
                enum "192.22500" {
                  value 173;
                  description
                    "192.22500 THz/1559.59 nm 6.25/12.5GHz spacing";
                }
                enum "192.23125" {
                  value 174;
                  description
                    "192.23125 THz/1559.54 nm 6.25GHz spacing";
                }
                enum "192.23750" {
                  value 175;
                  description
                    "192.23750 THz/1559.49 nm 6.25/12.5GHz spacing";
                }
                enum "192.24375" {
                  value 176;
                  description
                    "192.24375 THz/1559.44 nm 6.25GHz spacing";
                }
                enum "192.25000" {
                  value 177;
                  description
                    "192.25000 THz/1559.39 nm 6.25/12.5/50GHz spacing";
                }
                enum "192.25625" {
                  value 178;
                  description
                    "192.25625 THz/1559.34 nm 6.25GHz spacing";
                }
                enum "192.26250" {
                  value 179;
                  description
                    "192.26250 THz/1559.29 nm 6.25/12.5GHz spacing";
                }
                enum "192.26875" {
                  value 180;
                  description
                    "192.26875 THz/1559.24 nm 6.25GHz spacing";
                }
                enum "192.27500" {
                  value 181;
                  description
                    "192.27500 THz/1559.19 nm 6.25/12.5GHz spacing";
                }
                enum "192.28125" {
                  value 182;
                  description
                    "192.28125 THz/1559.14 nm 6.25GHz spacing";
                }
                enum "192.28750" {
                  value 183;
                  description
                    "192.28750 THz/1559.08 nm 6.25/12.5GHz spacing";
                }
                enum "192.29375" {
                  value 184;
                  description
                    "192.29375 THz/1559.03 nm 6.25GHz spacing";
                }
                enum "192.30000" {
                  value 185;
                  description
                    "192.30000 THz/1558.98 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "192.30625" {
                  value 186;
                  description
                    "192.30625 THz/1558.93 nm 6.25GHz spacing";
                }
                enum "192.31250" {
                  value 187;
                  description
                    "192.31250 THz/1558.88 nm 6.25/12.5GHz spacing";
                }
                enum "192.31875" {
                  value 188;
                  description
                    "192.31875 THz/1558.83 nm 6.25GHz spacing";
                }
                enum "192.32500" {
                  value 189;
                  description
                    "192.32500 THz/1558.78 nm 6.25/12.5GHz spacing";
                }
                enum "192.33125" {
                  value 190;
                  description
                    "192.33125 THz/1558.73 nm 6.25GHz spacing";
                }
                enum "192.33750" {
                  value 191;
                  description
                    "192.33750 THz/1558.68 nm 6.25/12.5GHz spacing";
                }
                enum "192.34375" {
                  value 192;
                  description
                    "192.34375 THz/1558.63 nm 6.25GHz spacing";
                }
                enum "192.35000" {
                  value 193;
                  description
                    "192.35000 THz/1558.58 nm 6.25/12.5/50/75GHz spacing";
                }
                enum "192.35625" {
                  value 194;
                  description
                    "192.35625 THz/1558.53 nm 6.25GHz spacing";
                }
                enum "192.36250" {
                  value 195;
                  description
                    "192.36250 THz/1558.48 nm 6.25/12.5GHz spacing";
                }
                enum "192.36875" {
                  value 196;
                  description
                    "192.36875 THz/1558.43 nm 6.25GHz spacing";
                }
                enum "192.37500" {
                  value 197;
                  description
                    "192.37500 THz/1558.38 nm 6.25/12.5GHz spacing";
                }
                enum "192.38125" {
                  value 198;
                  description
                    "192.38125 THz/1558.32 nm 6.25GHz spacing";
                }
                enum "192.38750" {
                  value 199;
                  description
                    "192.38750 THz/1558.27 nm 6.25/12.5GHz spacing";
                }
                enum "192.39375" {
                  value 200;
                  description
                    "192.39375 THz/1558.22 nm 6.25GHz spacing";
                }
                enum "192.40000" {
                  value 201;
                  description
                    "192.40000 THz/1558.17 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "192.40625" {
                  value 202;
                  description
                    "192.40625 THz/1558.12 nm 6.25GHz spacing";
                }
                enum "192.41250" {
                  value 203;
                  description
                    "192.41250 THz/1558.07 nm 6.25/12.5GHz spacing";
                }
                enum "192.41875" {
                  value 204;
                  description
                    "192.41875 THz/1558.02 nm 6.25GHz spacing";
                }
                enum "192.42500" {
                  value 205;
                  description
                    "192.42500 THz/1557.97 nm 6.25/12.5/75GHz spacing";
                }
                enum "192.43125" {
                  value 206;
                  description
                    "192.43125 THz/1557.92 nm 6.25GHz spacing";
                }
                enum "192.43750" {
                  value 207;
                  description
                    "192.43750 THz/1557.87 nm 6.25/12.5GHz spacing";
                }
                enum "192.44375" {
                  value 208;
                  description
                    "192.44375 THz/1557.82 nm 6.25GHz spacing";
                }
                enum "192.45000" {
                  value 209;
                  description
                    "192.45000 THz/1557.77 nm 6.25/12.5/50GHz spacing";
                }
                enum "192.45625" {
                  value 210;
                  description
                    "192.45625 THz/1557.72 nm 6.25GHz spacing";
                }
                enum "192.46250" {
                  value 211;
                  description
                    "192.46250 THz/1557.67 nm 6.25/12.5GHz spacing";
                }
                enum "192.46875" {
                  value 212;
                  description
                    "192.46875 THz/1557.62 nm 6.25GHz spacing";
                }
                enum "192.47500" {
                  value 213;
                  description
                    "192.47500 THz/1557.57 nm 6.25/12.5GHz spacing";
                }
                enum "192.48125" {
                  value 214;
                  description
                    "192.48125 THz/1557.52 nm 6.25GHz spacing";
                }
                enum "192.48750" {
                  value 215;
                  description
                    "192.48750 THz/1557.46 nm 6.25/12.5GHz spacing";
                }
                enum "192.49375" {
                  value 216;
                  description
                    "192.49375 THz/1557.41 nm 6.25GHz spacing";
                }
                enum "192.50000" {
                  value 217;
                  description
                    "192.50000 THz/1557.36 nm 6.25/12.5/50/75/100GHz spacing";
                }
                enum "192.50625" {
                  value 218;
                  description
                    "192.50625 THz/1557.31 nm 6.25GHz spacing";
                }
                enum "192.51250" {
                  value 219;
                  description
                    "192.51250 THz/1557.26 nm 6.25/12.5GHz spacing";
                }
                enum "192.51875" {
                  value 220;
                  description
                    "192.51875 THz/1557.21 nm 6.25GHz spacing";
                }
                enum "192.52500" {
                  value 221;
                  description
                    "192.52500 THz/1557.16 nm 6.25/12.5GHz spacing";
                }
                enum "192.53125" {
                  value 222;
                  description
                    "192.53125 THz/1557.11 nm 6.25GHz spacing";
                }
                enum "192.53750" {
                  value 223;
                  description
                    "192.53750 THz/1557.06 nm 6.25/12.5GHz spacing";
                }
                enum "192.54375" {
                  value 224;
                  description
                    "192.54375 THz/1557.01 nm 6.25GHz spacing";
                }
                enum "192.55000" {
                  value 225;
                  description
                    "192.55000 THz/1556.96 nm 6.25/12.5/50GHz spacing";
                }
                enum "192.55625" {
                  value 226;
                  description
                    "192.55625 THz/1556.91 nm 6.25GHz spacing";
                }
                enum "192.56250" {
                  value 227;
                  description
                    "192.56250 THz/1556.86 nm 6.25/12.5GHz spacing";
                }
                enum "192.56875" {
                  value 228;
                  description
                    "192.56875 THz/1556.81 nm 6.25GHz spacing";
                }
                enum "192.57500" {
                  value 229;
                  description
                    "192.57500 THz/1556.76 nm 6.25/12.5/75GHz spacing";
                }
                enum "192.58125" {
                  value 230;
                  description
                    "192.58125 THz/1556.71 nm 6.25GHz spacing";
                }
                enum "192.58750" {
                  value 231;
                  description
                    "192.58750 THz/1556.66 nm 6.25/12.5GHz spacing";
                }
                enum "192.59375" {
                  value 232;
                  description
                    "192.59375 THz/1556.61 nm 6.25GHz spacing";
                }
                enum "192.60000" {
                  value 233;
                  description
                    "192.60000 THz/1556.55 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "192.60625" {
                  value 234;
                  description
                    "192.60625 THz/1556.50 nm 6.25GHz spacing";
                }
                enum "192.61250" {
                  value 235;
                  description
                    "192.61250 THz/1556.45 nm 6.25/12.5GHz spacing";
                }
                enum "192.61875" {
                  value 236;
                  description
                    "192.61875 THz/1556.40 nm 6.25GHz spacing";
                }
                enum "192.62500" {
                  value 237;
                  description
                    "192.62500 THz/1556.35 nm 6.25/12.5GHz spacing";
                }
                enum "192.63125" {
                  value 238;
                  description
                    "192.63125 THz/1556.30 nm 6.25GHz spacing";
                }
                enum "192.63750" {
                  value 239;
                  description
                    "192.63750 THz/1556.25 nm 6.25/12.5GHz spacing";
                }
                enum "192.64375" {
                  value 240;
                  description
                    "192.64375 THz/1556.20 nm 6.25GHz spacing";
                }
                enum "192.65000" {
                  value 241;
                  description
                    "192.65000 THz/1556.15 nm 6.25/12.5/50/75GHz spacing";
                }
                enum "192.65625" {
                  value 242;
                  description
                    "192.65625 THz/1556.10 nm 6.25GHz spacing";
                }
                enum "192.66250" {
                  value 243;
                  description
                    "192.66250 THz/1556.05 nm 6.25/12.5GHz spacing";
                }
                enum "192.66875" {
                  value 244;
                  description
                    "192.66875 THz/1556.00 nm 6.25GHz spacing";
                }
                enum "192.67500" {
                  value 245;
                  description
                    "192.67500 THz/1555.95 nm 6.25/12.5GHz spacing";
                }
                enum "192.68125" {
                  value 246;
                  description
                    "192.68125 THz/1555.90 nm 6.25GHz spacing";
                }
                enum "192.68750" {
                  value 247;
                  description
                    "192.68750 THz/1555.85 nm 6.25/12.5GHz spacing";
                }
                enum "192.69375" {
                  value 248;
                  description
                    "192.69375 THz/1555.80 nm 6.25GHz spacing";
                }
                enum "192.70000" {
                  value 249;
                  description
                    "192.70000 THz/1555.75 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "192.70625" {
                  value 250;
                  description
                    "192.70625 THz/1555.70 nm 6.25GHz spacing";
                }
                enum "192.71250" {
                  value 251;
                  description
                    "192.71250 THz/1555.65 nm 6.25/12.5GHz spacing";
                }
                enum "192.71875" {
                  value 252;
                  description
                    "192.71875 THz/1555.60 nm 6.25GHz spacing";
                }
                enum "192.72500" {
                  value 253;
                  description
                    "192.72500 THz/1555.55 nm 6.25/12.5/75GHz spacing";
                }
                enum "192.73125" {
                  value 254;
                  description
                    "192.73125 THz/1555.49 nm 6.25GHz spacing";
                }
                enum "192.73750" {
                  value 255;
                  description
                    "192.73750 THz/1555.44 nm 6.25/12.5GHz spacing";
                }
                enum "192.74375" {
                  value 256;
                  description
                    "192.74375 THz/1555.39 nm 6.25GHz spacing";
                }
                enum "192.75000" {
                  value 257;
                  description
                    "192.75000 THz/1555.34 nm 6.25/12.5/50GHz spacing";
                }
                enum "192.75625" {
                  value 258;
                  description
                    "192.75625 THz/1555.29 nm 6.25GHz spacing";
                }
                enum "192.76250" {
                  value 259;
                  description
                    "192.76250 THz/1555.24 nm 6.25/12.5GHz spacing";
                }
                enum "192.76875" {
                  value 260;
                  description
                    "192.76875 THz/1555.19 nm 6.25GHz spacing";
                }
                enum "192.77500" {
                  value 261;
                  description
                    "192.77500 THz/1555.14 nm 6.25/12.5GHz spacing";
                }
                enum "192.78125" {
                  value 262;
                  description
                    "192.78125 THz/1555.09 nm 6.25GHz spacing";
                }
                enum "192.78750" {
                  value 263;
                  description
                    "192.78750 THz/1555.04 nm 6.25/12.5GHz spacing";
                }
                enum "192.79375" {
                  value 264;
                  description
                    "192.79375 THz/1554.99 nm 6.25GHz spacing";
                }
                enum "192.80000" {
                  value 265;
                  description
                    "192.80000 THz/1554.94 nm 6.25/12.5/50/75/100GHz spacing";
                }
                enum "192.80625" {
                  value 266;
                  description
                    "192.80625 THz/1554.89 nm 6.25GHz spacing";
                }
                enum "192.81250" {
                  value 267;
                  description
                    "192.81250 THz/1554.84 nm 6.25/12.5GHz spacing";
                }
                enum "192.81875" {
                  value 268;
                  description
                    "192.81875 THz/1554.79 nm 6.25GHz spacing";
                }
                enum "192.82500" {
                  value 269;
                  description
                    "192.82500 THz/1554.74 nm 6.25/12.5GHz spacing";
                }
                enum "192.83125" {
                  value 270;
                  description
                    "192.83125 THz/1554.69 nm 6.25GHz spacing";
                }
                enum "192.83750" {
                  value 271;
                  description
                    "192.83750 THz/1554.64 nm 6.25/12.5GHz spacing";
                }
                enum "192.84375" {
                  value 272;
                  description
                    "192.84375 THz/1554.59 nm 6.25GHz spacing";
                }
                enum "192.85000" {
                  value 273;
                  description
                    "192.85000 THz/1554.54 nm 6.25/12.5/50GHz spacing";
                }
                enum "192.85625" {
                  value 274;
                  description
                    "192.85625 THz/1554.49 nm 6.25GHz spacing";
                }
                enum "192.86250" {
                  value 275;
                  description
                    "192.86250 THz/1554.44 nm 6.25/12.5GHz spacing";
                }
                enum "192.86875" {
                  value 276;
                  description
                    "192.86875 THz/1554.39 nm 6.25GHz spacing";
                }
                enum "192.87500" {
                  value 277;
                  description
                    "192.87500 THz/1554.34 nm 6.25/12.5/75GHz spacing";
                }
                enum "192.88125" {
                  value 278;
                  description
                    "192.88125 THz/1554.29 nm 6.25GHz spacing";
                }
                enum "192.88750" {
                  value 279;
                  description
                    "192.88750 THz/1554.23 nm 6.25/12.5GHz spacing";
                }
                enum "192.89375" {
                  value 280;
                  description
                    "192.89375 THz/1554.18 nm 6.25GHz spacing";
                }
                enum "192.90000" {
                  value 281;
                  description
                    "192.90000 THz/1554.13 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "192.90625" {
                  value 282;
                  description
                    "192.90625 THz/1554.08 nm 6.25GHz spacing";
                }
                enum "192.91250" {
                  value 283;
                  description
                    "192.91250 THz/1554.03 nm 6.25/12.5GHz spacing";
                }
                enum "192.91875" {
                  value 284;
                  description
                    "192.91875 THz/1553.98 nm 6.25GHz spacing";
                }
                enum "192.92500" {
                  value 285;
                  description
                    "192.92500 THz/1553.93 nm 6.25/12.5GHz spacing";
                }
                enum "192.93125" {
                  value 286;
                  description
                    "192.93125 THz/1553.88 nm 6.25GHz spacing";
                }
                enum "192.93750" {
                  value 287;
                  description
                    "192.93750 THz/1553.83 nm 6.25/12.5GHz spacing";
                }
                enum "192.94375" {
                  value 288;
                  description
                    "192.94375 THz/1553.78 nm 6.25GHz spacing";
                }
                enum "192.95000" {
                  value 289;
                  description
                    "192.95000 THz/1553.73 nm 6.25/12.5/50/75GHz spacing";
                }
                enum "192.95625" {
                  value 290;
                  description
                    "192.95625 THz/1553.68 nm 6.25GHz spacing";
                }
                enum "192.96250" {
                  value 291;
                  description
                    "192.96250 THz/1553.63 nm 6.25/12.5GHz spacing";
                }
                enum "192.96875" {
                  value 292;
                  description
                    "192.96875 THz/1553.58 nm 6.25GHz spacing";
                }
                enum "192.97500" {
                  value 293;
                  description
                    "192.97500 THz/1553.53 nm 6.25/12.5GHz spacing";
                }
                enum "192.98125" {
                  value 294;
                  description
                    "192.98125 THz/1553.48 nm 6.25GHz spacing";
                }
                enum "192.98750" {
                  value 295;
                  description
                    "192.98750 THz/1553.43 nm 6.25/12.5GHz spacing";
                }
                enum "192.99375" {
                  value 296;
                  description
                    "192.99375 THz/1553.38 nm 6.25GHz spacing";
                }
                enum "193.00000" {
                  value 297;
                  description
                    "193.00000 THz/1553.33 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "193.00625" {
                  value 298;
                  description
                    "193.00625 THz/1553.28 nm 6.25GHz spacing";
                }
                enum "193.01250" {
                  value 299;
                  description
                    "193.01250 THz/1553.23 nm 6.25/12.5GHz spacing";
                }
                enum "193.01875" {
                  value 300;
                  description
                    "193.01875 THz/1553.18 nm 6.25GHz spacing";
                }
                enum "193.02500" {
                  value 301;
                  description
                    "193.02500 THz/1553.13 nm 6.25/12.5/75GHz spacing";
                }
                enum "193.03125" {
                  value 302;
                  description
                    "193.03125 THz/1553.08 nm 6.25GHz spacing";
                }
                enum "193.03750" {
                  value 303;
                  description
                    "193.03750 THz/1553.03 nm 6.25/12.5GHz spacing";
                }
                enum "193.04375" {
                  value 304;
                  description
                    "193.04375 THz/1552.98 nm 6.25GHz spacing";
                }
                enum "193.05000" {
                  value 305;
                  description
                    "193.05000 THz/1552.93 nm 6.25/12.5/50GHz spacing";
                }
                enum "193.05625" {
                  value 306;
                  description
                    "193.05625 THz/1552.88 nm 6.25GHz spacing";
                }
                enum "193.06250" {
                  value 307;
                  description
                    "193.06250 THz/1552.83 nm 6.25/12.5GHz spacing";
                }
                enum "193.06875" {
                  value 308;
                  description
                    "193.06875 THz/1552.78 nm 6.25GHz spacing";
                }
                enum "193.07500" {
                  value 309;
                  description
                    "193.07500 THz/1552.73 nm 6.25/12.5GHz spacing";
                }
                enum "193.08125" {
                  value 310;
                  description
                    "193.08125 THz/1552.68 nm 6.25GHz spacing";
                }
                enum "193.08750" {
                  value 311;
                  description
                    "193.08750 THz/1552.62 nm 6.25/12.5GHz spacing";
                }
                enum "193.09375" {
                  value 312;
                  description
                    "193.09375 THz/1552.57 nm 6.25GHz spacing";
                }
                enum "193.10000" {
                  value 313;
                  description
                    "193.10000 THz/1552.52 nm 6.25/12.5/50/75/100GHz spacing";
                }
                enum "193.10625" {
                  value 314;
                  description
                    "193.10625 THz/1552.47 nm 6.25GHz spacing";
                }
                enum "193.11250" {
                  value 315;
                  description
                    "193.11250 THz/1552.42 nm 6.25/12.5GHz spacing";
                }
                enum "193.11875" {
                  value 316;
                  description
                    "193.11875 THz/1552.37 nm 6.25GHz spacing";
                }
                enum "193.12500" {
                  value 317;
                  description
                    "193.12500 THz/1552.32 nm 6.25/12.5GHz spacing";
                }
                enum "193.13125" {
                  value 318;
                  description
                    "193.13125 THz/1552.27 nm 6.25GHz spacing";
                }
                enum "193.13750" {
                  value 319;
                  description
                    "193.13750 THz/1552.22 nm 6.25/12.5GHz spacing";
                }
                enum "193.14375" {
                  value 320;
                  description
                    "193.14375 THz/1552.17 nm 6.25GHz spacing";
                }
                enum "193.15000" {
                  value 321;
                  description
                    "193.15000 THz/1552.12 nm 6.25/12.5/50GHz spacing";
                }
                enum "193.15625" {
                  value 322;
                  description
                    "193.15625 THz/1552.07 nm 6.25GHz spacing";
                }
                enum "193.16250" {
                  value 323;
                  description
                    "193.16250 THz/1552.02 nm 6.25/12.5GHz spacing";
                }
                enum "193.16875" {
                  value 324;
                  description
                    "193.16875 THz/1551.97 nm 6.25GHz spacing";
                }
                enum "193.17500" {
                  value 325;
                  description
                    "193.17500 THz/1551.92 nm 6.25/12.5/75GHz spacing";
                }
                enum "193.18125" {
                  value 326;
                  description
                    "193.18125 THz/1551.87 nm 6.25GHz spacing";
                }
                enum "193.18750" {
                  value 327;
                  description
                    "193.18750 THz/1551.82 nm 6.25/12.5GHz spacing";
                }
                enum "193.19375" {
                  value 328;
                  description
                    "193.19375 THz/1551.77 nm 6.25GHz spacing";
                }
                enum "193.20000" {
                  value 329;
                  description
                    "193.20000 THz/1551.72 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "193.20625" {
                  value 330;
                  description
                    "193.20625 THz/1551.67 nm 6.25GHz spacing";
                }
                enum "193.21250" {
                  value 331;
                  description
                    "193.21250 THz/1551.62 nm 6.25/12.5GHz spacing";
                }
                enum "193.21875" {
                  value 332;
                  description
                    "193.21875 THz/1551.57 nm 6.25GHz spacing";
                }
                enum "193.22500" {
                  value 333;
                  description
                    "193.22500 THz/1551.52 nm 6.25/12.5GHz spacing";
                }
                enum "193.23125" {
                  value 334;
                  description
                    "193.23125 THz/1551.47 nm 6.25GHz spacing";
                }
                enum "193.23750" {
                  value 335;
                  description
                    "193.23750 THz/1551.42 nm 6.25/12.5GHz spacing";
                }
                enum "193.24375" {
                  value 336;
                  description
                    "193.24375 THz/1551.37 nm 6.25GHz spacing";
                }
                enum "193.25000" {
                  value 337;
                  description
                    "193.25000 THz/1551.32 nm 6.25/12.5/50/75GHz spacing";
                }
                enum "193.25625" {
                  value 338;
                  description
                    "193.25625 THz/1551.27 nm 6.25GHz spacing";
                }
                enum "193.26250" {
                  value 339;
                  description
                    "193.26250 THz/1551.22 nm 6.25/12.5GHz spacing";
                }
                enum "193.26875" {
                  value 340;
                  description
                    "193.26875 THz/1551.17 nm 6.25GHz spacing";
                }
                enum "193.27500" {
                  value 341;
                  description
                    "193.27500 THz/1551.12 nm 6.25/12.5GHz spacing";
                }
                enum "193.28125" {
                  value 342;
                  description
                    "193.28125 THz/1551.07 nm 6.25GHz spacing";
                }
                enum "193.28750" {
                  value 343;
                  description
                    "193.28750 THz/1551.02 nm 6.25/12.5GHz spacing";
                }
                enum "193.29375" {
                  value 344;
                  description
                    "193.29375 THz/1550.97 nm 6.25GHz spacing";
                }
                enum "193.30000" {
                  value 345;
                  description
                    "193.30000 THz/1550.92 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "193.30625" {
                  value 346;
                  description
                    "193.30625 THz/1550.87 nm 6.25GHz spacing";
                }
                enum "193.31250" {
                  value 347;
                  description
                    "193.31250 THz/1550.82 nm 6.25/12.5GHz spacing";
                }
                enum "193.31875" {
                  value 348;
                  description
                    "193.31875 THz/1550.77 nm 6.25GHz spacing";
                }
                enum "193.32500" {
                  value 349;
                  description
                    "193.32500 THz/1550.72 nm 6.25/12.5/75GHz spacing";
                }
                enum "193.33125" {
                  value 350;
                  description
                    "193.33125 THz/1550.67 nm 6.25GHz spacing";
                }
                enum "193.33750" {
                  value 351;
                  description
                    "193.33750 THz/1550.62 nm 6.25/12.5GHz spacing";
                }
                enum "193.34375" {
                  value 352;
                  description
                    "193.34375 THz/1550.57 nm 6.25GHz spacing";
                }
                enum "193.35000" {
                  value 353;
                  description
                    "193.35000 THz/1550.52 nm 6.25/12.5/50GHz spacing";
                }
                enum "193.35625" {
                  value 354;
                  description
                    "193.35625 THz/1550.47 nm 6.25GHz spacing";
                }
                enum "193.36250" {
                  value 355;
                  description
                    "193.36250 THz/1550.42 nm 6.25/12.5GHz spacing";
                }
                enum "193.36875" {
                  value 356;
                  description
                    "193.36875 THz/1550.37 nm 6.25GHz spacing";
                }
                enum "193.37500" {
                  value 357;
                  description
                    "193.37500 THz/1550.32 nm 6.25/12.5GHz spacing";
                }
                enum "193.38125" {
                  value 358;
                  description
                    "193.38125 THz/1550.27 nm 6.25GHz spacing";
                }
                enum "193.38750" {
                  value 359;
                  description
                    "193.38750 THz/1550.22 nm 6.25/12.5GHz spacing";
                }
                enum "193.39375" {
                  value 360;
                  description
                    "193.39375 THz/1550.17 nm 6.25GHz spacing";
                }
                enum "193.40000" {
                  value 361;
                  description
                    "193.40000 THz/1550.12 nm 6.25/12.5/50/75/100GHz spacing";
                }
                enum "193.40625" {
                  value 362;
                  description
                    "193.40625 THz/1550.07 nm 6.25GHz spacing";
                }
                enum "193.41250" {
                  value 363;
                  description
                    "193.41250 THz/1550.02 nm 6.25/12.5GHz spacing";
                }
                enum "193.41875" {
                  value 364;
                  description
                    "193.41875 THz/1549.97 nm 6.25GHz spacing";
                }
                enum "193.42500" {
                  value 365;
                  description
                    "193.42500 THz/1549.92 nm 6.25/12.5GHz spacing";
                }
                enum "193.43125" {
                  value 366;
                  description
                    "193.43125 THz/1549.87 nm 6.25GHz spacing";
                }
                enum "193.43750" {
                  value 367;
                  description
                    "193.43750 THz/1549.82 nm 6.25/12.5GHz spacing";
                }
                enum "193.44375" {
                  value 368;
                  description
                    "193.44375 THz/1549.77 nm 6.25GHz spacing";
                }
                enum "193.45000" {
                  value 369;
                  description
                    "193.45000 THz/1549.72 nm 6.25/12.5/50GHz spacing";
                }
                enum "193.45625" {
                  value 370;
                  description
                    "193.45625 THz/1549.67 nm 6.25GHz spacing";
                }
                enum "193.46250" {
                  value 371;
                  description
                    "193.46250 THz/1549.62 nm 6.25/12.5GHz spacing";
                }
                enum "193.46875" {
                  value 372;
                  description
                    "193.46875 THz/1549.57 nm 6.25GHz spacing";
                }
                enum "193.47500" {
                  value 373;
                  description
                    "193.47500 THz/1549.52 nm 6.25/12.5/75GHz spacing";
                }
                enum "193.48125" {
                  value 374;
                  description
                    "193.48125 THz/1549.47 nm 6.25GHz spacing";
                }
                enum "193.48750" {
                  value 375;
                  description
                    "193.48750 THz/1549.42 nm 6.25/12.5GHz spacing";
                }
                enum "193.49375" {
                  value 376;
                  description
                    "193.49375 THz/1549.37 nm 6.25GHz spacing";
                }
                enum "193.50000" {
                  value 377;
                  description
                    "193.50000 THz/1549.32 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "193.50625" {
                  value 378;
                  description
                    "193.50625 THz/1549.26 nm 6.25GHz spacing";
                }
                enum "193.51250" {
                  value 379;
                  description
                    "193.51250 THz/1549.21 nm 6.25/12.5GHz spacing";
                }
                enum "193.51875" {
                  value 380;
                  description
                    "193.51875 THz/1549.16 nm 6.25GHz spacing";
                }
                enum "193.52500" {
                  value 381;
                  description
                    "193.52500 THz/1549.11 nm 6.25/12.5GHz spacing";
                }
                enum "193.53125" {
                  value 382;
                  description
                    "193.53125 THz/1549.06 nm 6.25GHz spacing";
                }
                enum "193.53750" {
                  value 383;
                  description
                    "193.53750 THz/1549.01 nm 6.25/12.5GHz spacing";
                }
                enum "193.54375" {
                  value 384;
                  description
                    "193.54375 THz/1548.96 nm 6.25GHz spacing";
                }
                enum "193.55000" {
                  value 385;
                  description
                    "193.55000 THz/1548.91 nm 6.25/12.5/50/75GHz spacing";
                }
                enum "193.55625" {
                  value 386;
                  description
                    "193.55625 THz/1548.86 nm 6.25GHz spacing";
                }
                enum "193.56250" {
                  value 387;
                  description
                    "193.56250 THz/1548.81 nm 6.25/12.5GHz spacing";
                }
                enum "193.56875" {
                  value 388;
                  description
                    "193.56875 THz/1548.76 nm 6.25GHz spacing";
                }
                enum "193.57500" {
                  value 389;
                  description
                    "193.57500 THz/1548.71 nm 6.25/12.5GHz spacing";
                }
                enum "193.58125" {
                  value 390;
                  description
                    "193.58125 THz/1548.66 nm 6.25GHz spacing";
                }
                enum "193.58750" {
                  value 391;
                  description
                    "193.58750 THz/1548.61 nm 6.25/12.5GHz spacing";
                }
                enum "193.59375" {
                  value 392;
                  description
                    "193.59375 THz/1548.56 nm 6.25GHz spacing";
                }
                enum "193.60000" {
                  value 393;
                  description
                    "193.60000 THz/1548.51 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "193.60625" {
                  value 394;
                  description
                    "193.60625 THz/1548.46 nm 6.25GHz spacing";
                }
                enum "193.61250" {
                  value 395;
                  description
                    "193.61250 THz/1548.41 nm 6.25/12.5GHz spacing";
                }
                enum "193.61875" {
                  value 396;
                  description
                    "193.61875 THz/1548.36 nm 6.25GHz spacing";
                }
                enum "193.62500" {
                  value 397;
                  description
                    "193.62500 THz/1548.31 nm 6.25/12.5/75GHz spacing";
                }
                enum "193.63125" {
                  value 398;
                  description
                    "193.63125 THz/1548.26 nm 6.25GHz spacing";
                }
                enum "193.63750" {
                  value 399;
                  description
                    "193.63750 THz/1548.21 nm 6.25/12.5GHz spacing";
                }
                enum "193.64375" {
                  value 400;
                  description
                    "193.64375 THz/1548.16 nm 6.25GHz spacing";
                }
                enum "193.65000" {
                  value 401;
                  description
                    "193.65000 THz/1548.11 nm 6.25/12.5/50GHz spacing";
                }
                enum "193.65625" {
                  value 402;
                  description
                    "193.65625 THz/1548.06 nm 6.25GHz spacing";
                }
                enum "193.66250" {
                  value 403;
                  description
                    "193.66250 THz/1548.02 nm 6.25/12.5GHz spacing";
                }
                enum "193.66875" {
                  value 404;
                  description
                    "193.66875 THz/1547.97 nm 6.25GHz spacing";
                }
                enum "193.67500" {
                  value 405;
                  description
                    "193.67500 THz/1547.92 nm 6.25/12.5GHz spacing";
                }
                enum "193.68125" {
                  value 406;
                  description
                    "193.68125 THz/1547.87 nm 6.25GHz spacing";
                }
                enum "193.68750" {
                  value 407;
                  description
                    "193.68750 THz/1547.82 nm 6.25/12.5GHz spacing";
                }
                enum "193.69375" {
                  value 408;
                  description
                    "193.69375 THz/1547.77 nm 6.25GHz spacing";
                }
                enum "193.70000" {
                  value 409;
                  description
                    "193.70000 THz/1547.72 nm 6.25/12.5/50/100/75GHz spacing";
                }
                enum "193.70625" {
                  value 410;
                  description
                    "193.70625 THz/1547.67 nm 6.25GHz spacing";
                }
                enum "193.71250" {
                  value 411;
                  description
                    "193.71250 THz/1547.62 nm 6.25/12.5GHz spacing";
                }
                enum "193.71875" {
                  value 412;
                  description
                    "193.71875 THz/1547.57 nm 6.25GHz spacing";
                }
                enum "193.72500" {
                  value 413;
                  description
                    "193.72500 THz/1547.52 nm 6.25/12.5GHz spacing";
                }
                enum "193.73125" {
                  value 414;
                  description
                    "193.73125 THz/1547.47 nm 6.25GHz spacing";
                }
                enum "193.73750" {
                  value 415;
                  description
                    "193.73750 THz/1547.42 nm 6.25/12.5GHz spacing";
                }
                enum "193.74375" {
                  value 416;
                  description
                    "193.74375 THz/1547.37 nm 6.25GHz spacing";
                }
                enum "193.75000" {
                  value 417;
                  description
                    "193.75000 THz/1547.32 nm 6.25/12.5/50GHz spacing";
                }
                enum "193.75625" {
                  value 418;
                  description
                    "193.75625 THz/1547.27 nm 6.25GHz spacing";
                }
                enum "193.76250" {
                  value 419;
                  description
                    "193.76250 THz/1547.22 nm 6.25/12.5GHz spacing";
                }
                enum "193.76875" {
                  value 420;
                  description
                    "193.76875 THz/1547.17 nm 6.25GHz spacing";
                }
                enum "193.77500" {
                  value 421;
                  description
                    "193.77500 THz/1547.12 nm 6.25/12.5/75GHz spacing";
                }
                enum "193.78125" {
                  value 422;
                  description
                    "193.78125 THz/1547.07 nm 6.25GHz spacing";
                }
                enum "193.78750" {
                  value 423;
                  description
                    "193.78750 THz/1547.02 nm 6.25/12.5GHz spacing";
                }
                enum "193.79375" {
                  value 424;
                  description
                    "193.79375 THz/1546.97 nm 6.25GHz spacing";
                }
                enum "193.80000" {
                  value 425;
                  description
                    "193.80000 THz/1546.92 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "193.80625" {
                  value 426;
                  description
                    "193.80625 THz/1546.87 nm 6.25GHz spacing";
                }
                enum "193.81250" {
                  value 427;
                  description
                    "193.81250 THz/1546.82 nm 6.25/12.5GHz spacing";
                }
                enum "193.81875" {
                  value 428;
                  description
                    "193.81875 THz/1546.77 nm 6.25GHz spacing";
                }
                enum "193.82500" {
                  value 429;
                  description
                    "193.82500 THz/1546.72 nm 6.25/12.5GHz spacing";
                }
                enum "193.83125" {
                  value 430;
                  description
                    "193.83125 THz/1546.67 nm 6.25GHz spacing";
                }
                enum "193.83750" {
                  value 431;
                  description
                    "193.83750 THz/1546.62 nm 6.25/12.5GHz spacing";
                }
                enum "193.84375" {
                  value 432;
                  description
                    "193.84375 THz/1546.57 nm 6.25GHz spacing";
                }
                enum "193.85000" {
                  value 433;
                  description
                    "193.85000 THz/1546.52 nm 6.25/12.5/50/75GHz spacing";
                }
                enum "193.85625" {
                  value 434;
                  description
                    "193.85625 THz/1546.47 nm 6.25GHz spacing";
                }
                enum "193.86250" {
                  value 435;
                  description
                    "193.86250 THz/1546.42 nm 6.25/12.5GHz spacing";
                }
                enum "193.86875" {
                  value 436;
                  description
                    "193.86875 THz/1546.37 nm 6.25GHz spacing";
                }
                enum "193.87500" {
                  value 437;
                  description
                    "193.87500 THz/1546.32 nm 6.25/12.5GHz spacing";
                }
                enum "193.88125" {
                  value 438;
                  description
                    "193.88125 THz/1546.27 nm 6.25GHz spacing";
                }
                enum "193.88750" {
                  value 439;
                  description
                    "193.88750 THz/1546.22 nm 6.25/12.5GHz spacing";
                }
                enum "193.89375" {
                  value 440;
                  description
                    "193.89375 THz/1546.17 nm 6.25GHz spacing";
                }
                enum "193.90000" {
                  value 441;
                  description
                    "193.90000 THz/1546.12 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "193.90625" {
                  value 442;
                  description
                    "193.90625 THz/1546.07 nm 6.25GHz spacing";
                }
                enum "193.91250" {
                  value 443;
                  description
                    "193.91250 THz/1546.02 nm 6.25/12.5GHz spacing";
                }
                enum "193.91875" {
                  value 444;
                  description
                    "193.91875 THz/1545.97 nm 6.25GHz spacing";
                }
                enum "193.92500" {
                  value 445;
                  description
                    "193.92500 THz/1545.92 nm 6.25/12.5/75GHz spacing";
                }
                enum "193.93125" {
                  value 446;
                  description
                    "193.93125 THz/1545.87 nm 6.25GHz spacing";
                }
                enum "193.93750" {
                  value 447;
                  description
                    "193.93750 THz/1545.82 nm 6.25/12.5GHz spacing";
                }
                enum "193.94375" {
                  value 448;
                  description
                    "193.94375 THz/1545.77 nm 6.25GHz spacing";
                }
                enum "193.95000" {
                  value 449;
                  description
                    "193.95000 THz/1545.72 nm 6.25/12.5/50GHz spacing";
                }
                enum "193.95625" {
                  value 450;
                  description
                    "193.95625 THz/1545.67 nm 6.25GHz spacing";
                }
                enum "193.96250" {
                  value 451;
                  description
                    "193.96250 THz/1545.62 nm 6.25/12.5GHz spacing";
                }
                enum "193.96875" {
                  value 452;
                  description
                    "193.96875 THz/1545.57 nm 6.25GHz spacing";
                }
                enum "193.97500" {
                  value 453;
                  description
                    "193.97500 THz/1545.52 nm 6.25/12.5GHz spacing";
                }
                enum "193.98125" {
                  value 454;
                  description
                    "193.98125 THz/1545.47 nm 6.25GHz spacing";
                }
                enum "193.98750" {
                  value 455;
                  description
                    "193.98750 THz/1545.42 nm 6.25/12.5GHz spacing";
                }
                enum "193.99375" {
                  value 456;
                  description
                    "193.99375 THz/1545.37 nm 6.25GHz spacing";
                }
                enum "194.00000" {
                  value 457;
                  description
                    "194.00000 THz/1545.32 nm 6.25/12.5/50/75/100GHz spacing";
                }
                enum "194.00625" {
                  value 458;
                  description
                    "194.00625 THz/1545.27 nm 6.25GHz spacing";
                }
                enum "194.01250" {
                  value 459;
                  description
                    "194.01250 THz/1545.22 nm 6.25/12.5GHz spacing";
                }
                enum "194.01875" {
                  value 460;
                  description
                    "194.01875 THz/1545.17 nm 6.25GHz spacing";
                }
                enum "194.02500" {
                  value 461;
                  description
                    "194.02500 THz/1545.12 nm 6.25/12.5GHz spacing";
                }
                enum "194.03125" {
                  value 462;
                  description
                    "194.03125 THz/1545.07 nm 6.25GHz spacing";
                }
                enum "194.03750" {
                  value 463;
                  description
                    "194.03750 THz/1545.02 nm 6.25/12.5GHz spacing";
                }
                enum "194.04375" {
                  value 464;
                  description
                    "194.04375 THz/1544.97 nm 6.25GHz spacing";
                }
                enum "194.05000" {
                  value 465;
                  description
                    "194.05000 THz/1544.92 nm 6.25/12.5/50GHz spacing";
                }
                enum "194.05625" {
                  value 466;
                  description
                    "194.05625 THz/1544.87 nm 6.25GHz spacing";
                }
                enum "194.06250" {
                  value 467;
                  description
                    "194.06250 THz/1544.82 nm 6.25/12.5GHz spacing";
                }
                enum "194.06875" {
                  value 468;
                  description
                    "194.06875 THz/1544.77 nm 6.25GHz spacing";
                }
                enum "194.07500" {
                  value 469;
                  description
                    "194.07500 THz/1544.72 nm 6.25/12.5/75GHz spacing";
                }
                enum "194.08125" {
                  value 470;
                  description
                    "194.08125 THz/1544.68 nm 6.25GHz spacing";
                }
                enum "194.08750" {
                  value 471;
                  description
                    "194.08750 THz/1544.63 nm 6.25/12.5GHz spacing";
                }
                enum "194.09375" {
                  value 472;
                  description
                    "194.09375 THz/1544.58 nm 6.25GHz spacing";
                }
                enum "194.10000" {
                  value 473;
                  description
                    "194.10000 THz/1544.53 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "194.10625" {
                  value 474;
                  description
                    "194.10625 THz/1544.48 nm 6.25GHz spacing";
                }
                enum "194.11250" {
                  value 475;
                  description
                    "194.11250 THz/1544.43 nm 6.25/12.5GHz spacing";
                }
                enum "194.11875" {
                  value 476;
                  description
                    "194.11875 THz/1544.38 nm 6.25GHz spacing";
                }
                enum "194.12500" {
                  value 477;
                  description
                    "194.12500 THz/1544.33 nm 6.25/12.5GHz spacing";
                }
                enum "194.13125" {
                  value 478;
                  description
                    "194.13125 THz/1544.28 nm 6.25GHz spacing";
                }
                enum "194.13750" {
                  value 479;
                  description
                    "194.13750 THz/1544.23 nm 6.25/12.5GHz spacing";
                }
                enum "194.14375" {
                  value 480;
                  description
                    "194.14375 THz/1544.18 nm 6.25GHz spacing";
                }
                enum "194.15000" {
                  value 481;
                  description
                    "194.15000 THz/1544.13 nm 6.25/12.5/50/75GHz spacing";
                }
                enum "194.15625" {
                  value 482;
                  description
                    "194.15625 THz/1544.08 nm 6.25GHz spacing";
                }
                enum "194.16250" {
                  value 483;
                  description
                    "194.16250 THz/1544.03 nm 6.25/12.5GHz spacing";
                }
                enum "194.16875" {
                  value 484;
                  description
                    "194.16875 THz/1543.98 nm 6.25GHz spacing";
                }
                enum "194.17500" {
                  value 485;
                  description
                    "194.17500 THz/1543.93 nm 6.25/12.5GHz spacing";
                }
                enum "194.18125" {
                  value 486;
                  description
                    "194.18125 THz/1543.88 nm 6.25GHz spacing";
                }
                enum "194.18750" {
                  value 487;
                  description
                    "194.18750 THz/1543.83 nm 6.25/12.5GHz spacing";
                }
                enum "194.19375" {
                  value 488;
                  description
                    "194.19375 THz/1543.78 nm 6.25GHz spacing";
                }
                enum "194.20000" {
                  value 489;
                  description
                    "194.20000 THz/1543.73 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "194.20625" {
                  value 490;
                  description
                    "194.20625 THz/1543.68 nm 6.25GHz spacing";
                }
                enum "194.21250" {
                  value 491;
                  description
                    "194.21250 THz/1543.63 nm 6.25/12.5GHz spacing";
                }
                enum "194.21875" {
                  value 492;
                  description
                    "194.21875 THz/1543.58 nm 6.25GHz spacing";
                }
                enum "194.22500" {
                  value 493;
                  description
                    "194.22500 THz/1543.53 nm 6.25/12.5/75GHz spacing";
                }
                enum "194.23125" {
                  value 494;
                  description
                    "194.23125 THz/1543.48 nm 6.25GHz spacing";
                }
                enum "194.23750" {
                  value 495;
                  description
                    "194.23750 THz/1543.43 nm 6.25/12.5GHz spacing";
                }
                enum "194.24375" {
                  value 496;
                  description
                    "194.24375 THz/1543.38 nm 6.25GHz spacing";
                }
                enum "194.25000" {
                  value 497;
                  description
                    "194.25000 THz/1543.33 nm 6.25/12.5/50/75GHz spacing";
                }
                enum "194.25625" {
                  value 498;
                  description
                    "194.25625 THz/1543.28 nm 6.25GHz spacing";
                }
                enum "194.26250" {
                  value 499;
                  description
                    "194.26250 THz/1543.23 nm 6.25/12.5GHz spacing";
                }
                enum "194.26875" {
                  value 500;
                  description
                    "194.26875 THz/1543.18 nm 6.25GHz spacing";
                }
                enum "194.27500" {
                  value 501;
                  description
                    "194.27500 THz/1543.13 nm 6.25/12.5GHz spacing";
                }
                enum "194.28125" {
                  value 502;
                  description
                    "194.28125 THz/1543.08 nm 6.25GHz spacing";
                }
                enum "194.28750" {
                  value 503;
                  description
                    "194.28750 THz/1543.04 nm 6.25/12.5GHz spacing";
                }
                enum "194.29375" {
                  value 504;
                  description
                    "194.29375 THz/1542.99 nm 6.25GHz spacing";
                }
                enum "194.30000" {
                  value 505;
                  description
                    "194.30000 THz/1542.94 nm 6.25/12.5/50/75/100GHz spacing";
                }
                enum "194.30625" {
                  value 506;
                  description
                    "194.30625 THz/1542.89 nm 6.25GHz spacing";
                }
                enum "194.31250" {
                  value 507;
                  description
                    "194.31250 THz/1542.84 nm 6.25/12.5GHz spacing";
                }
                enum "194.31875" {
                  value 508;
                  description
                    "194.31875 THz/1542.79 nm 6.25GHz spacing";
                }
                enum "194.32500" {
                  value 509;
                  description
                    "194.32500 THz/1542.74 nm 6.25/12.5GHz spacing";
                }
                enum "194.33125" {
                  value 510;
                  description
                    "194.33125 THz/1542.69 nm 6.25GHz spacing";
                }
                enum "194.33750" {
                  value 511;
                  description
                    "194.33750 THz/1542.64 nm 6.25/12.5GHz spacing";
                }
                enum "194.34375" {
                  value 512;
                  description
                    "194.34375 THz/1542.59 nm 6.25GHz spacing";
                }
                enum "194.35000" {
                  value 513;
                  description
                    "194.35000 THz/1542.54 nm 6.25/12.5/50GHz spacing";
                }
                enum "194.35625" {
                  value 514;
                  description
                    "194.35625 THz/1542.49 nm 6.25GHz spacing";
                }
                enum "194.36250" {
                  value 515;
                  description
                    "194.36250 THz/1542.44 nm 6.25/12.5GHz spacing";
                }
                enum "194.36875" {
                  value 516;
                  description
                    "194.36875 THz/1542.39 nm 6.25GHz spacing";
                }
                enum "194.37500" {
                  value 517;
                  description
                    "194.37500 THz/1542.34 nm 6.25/12.5/75GHz spacing";
                }
                enum "194.38125" {
                  value 518;
                  description
                    "194.38125 THz/1542.29 nm 6.25GHz spacing";
                }
                enum "194.38750" {
                  value 519;
                  description
                    "194.38750 THz/1542.24 nm 6.25/12.5GHz spacing";
                }
                enum "194.39375" {
                  value 520;
                  description
                    "194.39375 THz/1542.19 nm 6.25GHz spacing";
                }
                enum "194.40000" {
                  value 521;
                  description
                    "194.40000 THz/1542.14 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "194.40625" {
                  value 522;
                  description
                    "194.40625 THz/1542.09 nm 6.25GHz spacing";
                }
                enum "194.41250" {
                  value 523;
                  description
                    "194.41250 THz/1542.04 nm 6.25/12.5GHz spacing";
                }
                enum "194.41875" {
                  value 524;
                  description
                    "194.41875 THz/1541.99 nm 6.25GHz spacing";
                }
                enum "194.42500" {
                  value 525;
                  description
                    "194.42500 THz/1541.94 nm 6.25/12.5GHz spacing";
                }
                enum "194.43125" {
                  value 526;
                  description
                    "194.43125 THz/1541.89 nm 6.25GHz spacing";
                }
                enum "194.43750" {
                  value 527;
                  description
                    "194.43750 THz/1541.84 nm 6.25/12.5GHz spacing";
                }
                enum "194.44375" {
                  value 528;
                  description
                    "194.44375 THz/1541.80 nm 6.25GHz spacing";
                }
                enum "194.45000" {
                  value 529;
                  description
                    "194.45000 THz/1541.75 nm 6.25/12.5/50/75GHz spacing";
                }
                enum "194.45625" {
                  value 530;
                  description
                    "194.45625 THz/1541.70 nm 6.25GHz spacing";
                }
                enum "194.46250" {
                  value 531;
                  description
                    "194.46250 THz/1541.65 nm 6.25/12.5GHz spacing";
                }
                enum "194.46875" {
                  value 532;
                  description
                    "194.46875 THz/1541.60 nm 6.25GHz spacing";
                }
                enum "194.47500" {
                  value 533;
                  description
                    "194.47500 THz/1541.55 nm 6.25/12.5GHz spacing";
                }
                enum "194.48125" {
                  value 534;
                  description
                    "194.48125 THz/1541.50 nm 6.25GHz spacing";
                }
                enum "194.48750" {
                  value 535;
                  description
                    "194.48750 THz/1541.45 nm 6.25/12.5GHz spacing";
                }
                enum "194.49375" {
                  value 536;
                  description
                    "194.49375 THz/1541.40 nm 6.25GHz spacing";
                }
                enum "194.50000" {
                  value 537;
                  description
                    "194.50000 THz/1541.35 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "194.50625" {
                  value 538;
                  description
                    "194.50625 THz/1541.30 nm 6.25GHz spacing";
                }
                enum "194.51250" {
                  value 539;
                  description
                    "194.51250 THz/1541.25 nm 6.25/12.5GHz spacing";
                }
                enum "194.51875" {
                  value 540;
                  description
                    "194.51875 THz/1541.20 nm 6.25GHz spacing";
                }
                enum "194.52500" {
                  value 541;
                  description
                    "194.52500 THz/1541.15 nm 6.25/12.5/75GHz spacing";
                }
                enum "194.53125" {
                  value 542;
                  description
                    "194.53125 THz/1541.10 nm 6.25GHz spacing";
                }
                enum "194.53750" {
                  value 543;
                  description
                    "194.53750 THz/1541.05 nm 6.25/12.5GHz spacing";
                }
                enum "194.54375" {
                  value 544;
                  description
                    "194.54375 THz/1541.00 nm 6.25GHz spacing";
                }
                enum "194.55000" {
                  value 545;
                  description
                    "194.55000 THz/1540.95 nm 6.25/12.5/50GHz spacing";
                }
                enum "194.55625" {
                  value 546;
                  description
                    "194.55625 THz/1540.90 nm 6.25GHz spacing";
                }
                enum "194.56250" {
                  value 547;
                  description
                    "194.56250 THz/1540.85 nm 6.25/12.5GHz spacing";
                }
                enum "194.56875" {
                  value 548;
                  description
                    "194.56875 THz/1540.80 nm 6.25GHz spacing";
                }
                enum "194.57500" {
                  value 549;
                  description
                    "194.57500 THz/1540.76 nm 6.25/12.5GHz spacing";
                }
                enum "194.58125" {
                  value 550;
                  description
                    "194.58125 THz/1540.71 nm 6.25GHz spacing";
                }
                enum "194.58750" {
                  value 551;
                  description
                    "194.58750 THz/1540.66 nm 6.25/12.5GHz spacing";
                }
                enum "194.59375" {
                  value 552;
                  description
                    "194.59375 THz/1540.61 nm 6.25GHz spacing";
                }
                enum "194.60000" {
                  value 553;
                  description
                    "194.60000 THz/1540.56 nm 6.25/12.5/50/75/100GHz spacing";
                }
                enum "194.60625" {
                  value 554;
                  description
                    "194.60625 THz/1540.51 nm 6.25GHz spacing";
                }
                enum "194.61250" {
                  value 555;
                  description
                    "194.61250 THz/1540.46 nm 6.25/12.5GHz spacing";
                }
                enum "194.61875" {
                  value 556;
                  description
                    "194.61875 THz/1540.41 nm 6.25GHz spacing";
                }
                enum "194.62500" {
                  value 557;
                  description
                    "194.62500 THz/1540.36 nm 6.25/12.5GHz spacing";
                }
                enum "194.63125" {
                  value 558;
                  description
                    "194.63125 THz/1540.31 nm 6.25GHz spacing";
                }
                enum "194.63750" {
                  value 559;
                  description
                    "194.63750 THz/1540.26 nm 6.25/12.5GHz spacing";
                }
                enum "194.64375" {
                  value 560;
                  description
                    "194.64375 THz/1540.21 nm 6.25GHz spacing";
                }
                enum "194.65000" {
                  value 561;
                  description
                    "194.65000 THz/1540.16 nm 6.25/12.5/50GHz spacing";
                }
                enum "194.65625" {
                  value 562;
                  description
                    "194.65625 THz/1540.11 nm 6.25GHz spacing";
                }
                enum "194.66250" {
                  value 563;
                  description
                    "194.66250 THz/1540.06 nm 6.25/12.5GHz spacing";
                }
                enum "194.66875" {
                  value 564;
                  description
                    "194.66875 THz/1540.01 nm 6.25GHz spacing";
                }
                enum "194.67500" {
                  value 565;
                  description
                    "194.67500 THz/1539.96 nm 6.25/12.5/75GHz spacing";
                }
                enum "194.68125" {
                  value 566;
                  description
                    "194.68125 THz/1539.91 nm 6.25GHz spacing";
                }
                enum "194.68750" {
                  value 567;
                  description
                    "194.68750 THz/1539.86 nm 6.25/12.5GHz spacing";
                }
                enum "194.69375" {
                  value 568;
                  description
                    "194.69375 THz/1539.82 nm 6.25GHz spacing";
                }
                enum "194.70000" {
                  value 569;
                  description
                    "194.70000 THz/1539.77 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "194.70625" {
                  value 570;
                  description
                    "194.70625 THz/1539.72 nm 6.25GHz spacing";
                }
                enum "194.71250" {
                  value 571;
                  description
                    "194.71250 THz/1539.67 nm 6.25/12.5GHz spacing";
                }
                enum "194.71875" {
                  value 572;
                  description
                    "194.71875 THz/1539.62 nm 6.25GHz spacing";
                }
                enum "194.72500" {
                  value 573;
                  description
                    "194.72500 THz/1539.57 nm 6.25/12.5GHz spacing";
                }
                enum "194.73125" {
                  value 574;
                  description
                    "194.73125 THz/1539.52 nm 6.25GHz spacing";
                }
                enum "194.73750" {
                  value 575;
                  description
                    "194.73750 THz/1539.47 nm 6.25/12.5GHz spacing";
                }
                enum "194.74375" {
                  value 576;
                  description
                    "194.74375 THz/1539.42 nm 6.25GHz spacing";
                }
                enum "194.75000" {
                  value 577;
                  description
                    "194.75000 THz/1539.37 nm 6.25/12.5/50/75GHz spacing";
                }
                enum "194.75625" {
                  value 578;
                  description
                    "194.75625 THz/1539.32 nm 6.25GHz spacing";
                }
                enum "194.76250" {
                  value 579;
                  description
                    "194.76250 THz/1539.27 nm 6.25/12.5GHz spacing";
                }
                enum "194.76875" {
                  value 580;
                  description
                    "194.76875 THz/1539.22 nm 6.25GHz spacing";
                }
                enum "194.77500" {
                  value 581;
                  description
                    "194.77500 THz/1539.17 nm 6.25/12.5GHz spacing";
                }
                enum "194.78125" {
                  value 582;
                  description
                    "194.78125 THz/1539.12 nm 6.25GHz spacing";
                }
                enum "194.78750" {
                  value 583;
                  description
                    "194.78750 THz/1539.07 nm 6.25/12.5GHz spacing";
                }
                enum "194.79375" {
                  value 584;
                  description
                    "194.79375 THz/1539.03 nm 6.25GHz spacing";
                }
                enum "194.80000" {
                  value 585;
                  description
                    "194.80000 THz/1538.98 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "194.80625" {
                  value 586;
                  description
                    "194.80625 THz/1538.93 nm 6.25GHz spacing";
                }
                enum "194.81250" {
                  value 587;
                  description
                    "194.81250 THz/1538.88 nm 6.25/12.5GHz spacing";
                }
                enum "194.81875" {
                  value 588;
                  description
                    "194.81875 THz/1538.83 nm 6.25GHz spacing";
                }
                enum "194.82500" {
                  value 589;
                  description
                    "194.82500 THz/1538.78 nm 6.25/12.5/75GHz spacing";
                }
                enum "194.83125" {
                  value 590;
                  description
                    "194.83125 THz/1538.73 nm 6.25GHz spacing";
                }
                enum "194.83750" {
                  value 591;
                  description
                    "194.83750 THz/1538.68 nm 6.25/12.5GHz spacing";
                }
                enum "194.84375" {
                  value 592;
                  description
                    "194.84375 THz/1538.63 nm 6.25GHz spacing";
                }
                enum "194.85000" {
                  value 593;
                  description
                    "194.85000 THz/1538.58 nm 6.25/12.5/50GHz spacing";
                }
                enum "194.85625" {
                  value 594;
                  description
                    "194.85625 THz/1538.53 nm 6.25GHz spacing";
                }
                enum "194.86250" {
                  value 595;
                  description
                    "194.86250 THz/1538.48 nm 6.25/12.5GHz spacing";
                }
                enum "194.86875" {
                  value 596;
                  description
                    "194.86875 THz/1538.43 nm 6.25GHz spacing";
                }
                enum "194.87500" {
                  value 597;
                  description
                    "194.87500 THz/1538.38 nm 6.25/12.5GHz spacing";
                }
                enum "194.88125" {
                  value 598;
                  description
                    "194.88125 THz/1538.33 nm 6.25GHz spacing";
                }
                enum "194.88750" {
                  value 599;
                  description
                    "194.88750 THz/1538.28 nm 6.25/12.5GHz spacing";
                }
                enum "194.89375" {
                  value 600;
                  description
                    "194.89375 THz/1538.24 nm 6.25GHz spacing";
                }
                enum "194.90000" {
                  value 601;
                  description
                    "194.90000 THz/1538.19 nm 6.25/12.5/50/75/100GHz spacing";
                }
                enum "194.90625" {
                  value 602;
                  description
                    "194.90625 THz/1538.14 nm 6.25GHz spacing";
                }
                enum "194.91250" {
                  value 603;
                  description
                    "194.91250 THz/1538.09 nm 6.25/12.5GHz spacing";
                }
                enum "194.91875" {
                  value 604;
                  description
                    "194.91875 THz/1538.04 nm 6.25GHz spacing";
                }
                enum "194.92500" {
                  value 605;
                  description
                    "194.92500 THz/1537.99 nm 6.25/12.5GHz spacing";
                }
                enum "194.93125" {
                  value 606;
                  description
                    "194.93125 THz/1537.94 nm 6.25GHz spacing";
                }
                enum "194.93750" {
                  value 607;
                  description
                    "194.93750 THz/1537.89 nm 6.25/12.5GHz spacing";
                }
                enum "194.94375" {
                  value 608;
                  description
                    "194.94375 THz/1537.84 nm 6.25GHz spacing";
                }
                enum "194.95000" {
                  value 609;
                  description
                    "194.95000 THz/1537.79 nm 6.25/12.5/50GHz spacing";
                }
                enum "194.95625" {
                  value 610;
                  description
                    "194.95625 THz/1537.74 nm 6.25GHz spacing";
                }
                enum "194.96250" {
                  value 611;
                  description
                    "194.96250 THz/1537.69 nm 6.25/12.5GHz spacing";
                }
                enum "194.96875" {
                  value 612;
                  description
                    "194.96875 THz/1537.64 nm 6.25GHz spacing";
                }
                enum "194.97500" {
                  value 613;
                  description
                    "194.97500 THz/1537.59 nm 6.25/12.5/75GHz spacing";
                }
                enum "194.98125" {
                  value 614;
                  description
                    "194.98125 THz/1537.55 nm 6.25GHz spacing";
                }
                enum "194.98750" {
                  value 615;
                  description
                    "194.98750 THz/1537.50 nm 6.25/12.5GHz spacing";
                }
                enum "194.99375" {
                  value 616;
                  description
                    "194.99375 THz/1537.45 nm 6.25GHz spacing";
                }
                enum "195.00000" {
                  value 617;
                  description
                    "195.00000 THz/1537.40 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "195.00625" {
                  value 618;
                  description
                    "195.00625 THz/1537.35 nm 6.25GHz spacing";
                }
                enum "195.01250" {
                  value 619;
                  description
                    "195.01250 THz/1537.30 nm 6.25/12.5GHz spacing";
                }
                enum "195.01875" {
                  value 620;
                  description
                    "195.01875 THz/1537.25 nm 6.25GHz spacing";
                }
                enum "195.02500" {
                  value 621;
                  description
                    "195.02500 THz/1537.20 nm 6.25/12.5GHz spacing";
                }
                enum "195.03125" {
                  value 622;
                  description
                    "195.03125 THz/1537.15 nm 6.25GHz spacing";
                }
                enum "195.03750" {
                  value 623;
                  description
                    "195.03750 THz/1537.10 nm 6.25/12.5GHz spacing";
                }
                enum "195.04375" {
                  value 624;
                  description
                    "195.04375 THz/1537.05 nm 6.25GHz spacing";
                }
                enum "195.05000" {
                  value 625;
                  description
                    "195.05000 THz/1537.00 nm 6.25/12.5/50/75GHz spacing";
                }
                enum "195.05625" {
                  value 626;
                  description
                    "195.05625 THz/1536.95 nm 6.25GHz spacing";
                }
                enum "195.06250" {
                  value 627;
                  description
                    "195.06250 THz/1536.90 nm 6.25/12.5GHz spacing";
                }
                enum "195.06875" {
                  value 628;
                  description
                    "195.06875 THz/1536.86 nm 6.25GHz spacing";
                }
                enum "195.07500" {
                  value 629;
                  description
                    "195.07500 THz/1536.81 nm 6.25/12.5GHz spacing";
                }
                enum "195.08125" {
                  value 630;
                  description
                    "195.08125 THz/1536.76 nm 6.25GHz spacing";
                }
                enum "195.08750" {
                  value 631;
                  description
                    "195.08750 THz/1536.71 nm 6.25/12.5GHz spacing";
                }
                enum "195.09375" {
                  value 632;
                  description
                    "195.09375 THz/1536.66 nm 6.25GHz spacing";
                }
                enum "195.10000" {
                  value 633;
                  description
                    "195.10000 THz/1536.61 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "195.10625" {
                  value 634;
                  description
                    "195.10625 THz/1536.56 nm 6.25GHz spacing";
                }
                enum "195.11250" {
                  value 635;
                  description
                    "195.11250 THz/1536.51 nm 6.25/12.5GHz spacing";
                }
                enum "195.11875" {
                  value 636;
                  description
                    "195.11875 THz/1536.46 nm 6.25GHz spacing";
                }
                enum "195.12500" {
                  value 637;
                  description
                    "195.12500 THz/1536.41 nm 6.25/12.5/75GHz spacing";
                }
                enum "195.13125" {
                  value 638;
                  description
                    "195.13125 THz/1536.36 nm 6.25GHz spacing";
                }
                enum "195.13750" {
                  value 639;
                  description
                    "195.13750 THz/1536.31 nm 6.25/12.5GHz spacing";
                }
                enum "195.14375" {
                  value 640;
                  description
                    "195.14375 THz/1536.26 nm 6.25GHz spacing";
                }
                enum "195.15000" {
                  value 641;
                  description
                    "195.15000 THz/1536.22 nm 6.25/12.5/50GHz spacing";
                }
                enum "195.15625" {
                  value 642;
                  description
                    "195.15625 THz/1536.17 nm 6.25GHz spacing";
                }
                enum "195.16250" {
                  value 643;
                  description
                    "195.16250 THz/1536.12 nm 6.25/12.5GHz spacing";
                }
                enum "195.16875" {
                  value 644;
                  description
                    "195.16875 THz/1536.07 nm 6.25GHz spacing";
                }
                enum "195.17500" {
                  value 645;
                  description
                    "195.17500 THz/1536.02 nm 6.25/12.5GHz spacing";
                }
                enum "195.18125" {
                  value 646;
                  description
                    "195.18125 THz/1535.97 nm 6.25GHz spacing";
                }
                enum "195.18750" {
                  value 647;
                  description
                    "195.18750 THz/1535.92 nm 6.25/12.5GHz spacing";
                }
                enum "195.19375" {
                  value 648;
                  description
                    "195.19375 THz/1535.87 nm 6.25GHz spacing";
                }
                enum "195.20000" {
                  value 649;
                  description
                    "195.20000 THz/1535.82 nm 6.25/12.5/50/75/100GHz spacing";
                }
                enum "195.20625" {
                  value 650;
                  description
                    "195.20625 THz/1535.77 nm 6.25GHz spacing";
                }
                enum "195.21250" {
                  value 651;
                  description
                    "195.21250 THz/1535.72 nm 6.25/12.5GHz spacing";
                }
                enum "195.21875" {
                  value 652;
                  description
                    "195.21875 THz/1535.67 nm 6.25GHz spacing";
                }
                enum "195.22500" {
                  value 653;
                  description
                    "195.22500 THz/1535.63 nm 6.25/12.5GHz spacing";
                }
                enum "195.23125" {
                  value 654;
                  description
                    "195.23125 THz/1535.58 nm 6.25GHz spacing";
                }
                enum "195.23750" {
                  value 655;
                  description
                    "195.23750 THz/1535.53 nm 6.25/12.5GHz spacing";
                }
                enum "195.24375" {
                  value 656;
                  description
                    "195.24375 THz/1535.48 nm 6.25GHz spacing";
                }
                enum "195.25000" {
                  value 657;
                  description
                    "195.25000 THz/1535.43 nm 6.25/12.5/50GHz spacing";
                }
                enum "195.25625" {
                  value 658;
                  description
                    "195.25625 THz/1535.38 nm 6.25GHz spacing";
                }
                enum "195.26250" {
                  value 659;
                  description
                    "195.26250 THz/1535.33 nm 6.25/12.5GHz spacing";
                }
                enum "195.26875" {
                  value 660;
                  description
                    "195.26875 THz/1535.28 nm 6.25GHz spacing";
                }
                enum "195.27500" {
                  value 661;
                  description
                    "195.27500 THz/1535.23 nm 6.25/12.5/75GHz spacing";
                }
                enum "195.28125" {
                  value 662;
                  description
                    "195.28125 THz/1535.18 nm 6.25GHz spacing";
                }
                enum "195.28750" {
                  value 663;
                  description
                    "195.28750 THz/1535.13 nm 6.25/12.5GHz spacing";
                }
                enum "195.29375" {
                  value 664;
                  description
                    "195.29375 THz/1535.08 nm 6.25GHz spacing";
                }
                enum "195.30000" {
                  value 665;
                  description
                    "195.30000 THz/1535.04 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "195.30625" {
                  value 666;
                  description
                    "195.30625 THz/1534.99 nm 6.25GHz spacing";
                }
                enum "195.31250" {
                  value 667;
                  description
                    "195.31250 THz/1534.94 nm 6.25/12.5GHz spacing";
                }
                enum "195.31875" {
                  value 668;
                  description
                    "195.31875 THz/1534.89 nm 6.25GHz spacing";
                }
                enum "195.32500" {
                  value 669;
                  description
                    "195.32500 THz/1534.84 nm 6.25/12.5GHz spacing";
                }
                enum "195.33125" {
                  value 670;
                  description
                    "195.33125 THz/1534.79 nm 6.25GHz spacing";
                }
                enum "195.33750" {
                  value 671;
                  description
                    "195.33750 THz/1534.74 nm 6.25/12.5GHz spacing";
                }
                enum "195.34375" {
                  value 672;
                  description
                    "195.34375 THz/1534.69 nm 6.25GHz spacing";
                }
                enum "195.35000" {
                  value 673;
                  description
                    "195.35000 THz/1534.64 nm 6.25/12.5/50/75GHz spacing";
                }
                enum "195.35625" {
                  value 674;
                  description
                    "195.35625 THz/1534.59 nm 6.25GHz spacing";
                }
                enum "195.36250" {
                  value 675;
                  description
                    "195.36250 THz/1534.54 nm 6.25/12.5GHz spacing";
                }
                enum "195.36875" {
                  value 676;
                  description
                    "195.36875 THz/1534.50 nm 6.25GHz spacing";
                }
                enum "195.37500" {
                  value 677;
                  description
                    "195.37500 THz/1534.45 nm 6.25/12.5GHz spacing";
                }
                enum "195.38125" {
                  value 678;
                  description
                    "195.38125 THz/1534.40 nm 6.25GHz spacing";
                }
                enum "195.38750" {
                  value 679;
                  description
                    "195.38750 THz/1534.35 nm 6.25/12.5GHz spacing";
                }
                enum "195.39375" {
                  value 680;
                  description
                    "195.39375 THz/1534.30 nm 6.25GHz spacing";
                }
                enum "195.40000" {
                  value 681;
                  description
                    "195.40000 THz/1534.25 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "195.40625" {
                  value 682;
                  description
                    "195.40625 THz/1534.20 nm 6.25GHz spacing";
                }
                enum "195.41250" {
                  value 683;
                  description
                    "195.41250 THz/1534.15 nm 6.25/12.5GHz spacing";
                }
                enum "195.41875" {
                  value 684;
                  description
                    "195.41875 THz/1534.10 nm 6.25GHz spacing";
                }
                enum "195.42500" {
                  value 685;
                  description
                    "195.42500 THz/1534.05 nm 6.25/12.5/75GHz spacing";
                }
                enum "195.43125" {
                  value 686;
                  description
                    "195.43125 THz/1534.00 nm 6.25GHz spacing";
                }
                enum "195.43750" {
                  value 687;
                  description
                    "195.43750 THz/1533.96 nm 6.25/12.5GHz spacing";
                }
                enum "195.44375" {
                  value 688;
                  description
                    "195.44375 THz/1533.91 nm 6.25GHz spacing";
                }
                enum "195.45000" {
                  value 689;
                  description
                    "195.45000 THz/1533.86 nm 6.25/12.5/50GHz spacing";
                }
                enum "195.45625" {
                  value 690;
                  description
                    "195.45625 THz/1533.81 nm 6.25GHz spacing";
                }
                enum "195.46250" {
                  value 691;
                  description
                    "195.46250 THz/1533.76 nm 6.25/12.5GHz spacing";
                }
                enum "195.46875" {
                  value 692;
                  description
                    "195.46875 THz/1533.71 nm 6.25GHz spacing";
                }
                enum "195.47500" {
                  value 693;
                  description
                    "195.47500 THz/1533.66 nm 6.25/12.5GHz spacing";
                }
                enum "195.48125" {
                  value 694;
                  description
                    "195.48125 THz/1533.61 nm 6.25GHz spacing";
                }
                enum "195.48750" {
                  value 695;
                  description
                    "195.48750 THz/1533.56 nm 6.25/12.5GHz spacing";
                }
                enum "195.49375" {
                  value 696;
                  description
                    "195.49375 THz/1533.51 nm 6.25GHz spacing";
                }
                enum "195.50000" {
                  value 697;
                  description
                    "195.50000 THz/1533.47 nm 6.25/12.5/50/75/100GHz spacing";
                }
                enum "195.50625" {
                  value 698;
                  description
                    "195.50625 THz/1533.42 nm 6.25GHz spacing";
                }
                enum "195.51250" {
                  value 699;
                  description
                    "195.51250 THz/1533.37 nm 6.25/12.5GHz spacing";
                }
                enum "195.51875" {
                  value 700;
                  description
                    "195.51875 THz/1533.32 nm 6.25GHz spacing";
                }
                enum "195.52500" {
                  value 701;
                  description
                    "195.52500 THz/1533.27 nm 6.25/12.5GHz spacing";
                }
                enum "195.53125" {
                  value 702;
                  description
                    "195.53125 THz/1533.22 nm 6.25GHz spacing";
                }
                enum "195.53750" {
                  value 703;
                  description
                    "195.53750 THz/1533.17 nm 6.25/12.5GHz spacing";
                }
                enum "195.54375" {
                  value 704;
                  description
                    "195.54375 THz/1533.12 nm 6.25GHz spacing";
                }
                enum "195.55000" {
                  value 705;
                  description
                    "195.55000 THz/1533.07 nm 6.25/12.5/50GHz spacing";
                }
                enum "195.55625" {
                  value 706;
                  description
                    "195.55625 THz/1533.02 nm 6.25GHz spacing";
                }
                enum "195.56250" {
                  value 707;
                  description
                    "195.56250 THz/1532.98 nm 6.25/12.5GHz spacing";
                }
                enum "195.56875" {
                  value 708;
                  description
                    "195.56875 THz/1532.93 nm 6.25GHz spacing";
                }
                enum "195.57500" {
                  value 709;
                  description
                    "195.57500 THz/1532.88 nm 6.25/12.5/75GHz spacing";
                }
                enum "195.58125" {
                  value 710;
                  description
                    "195.58125 THz/1532.83 nm 6.25GHz spacing";
                }
                enum "195.58750" {
                  value 711;
                  description
                    "195.58750 THz/1532.78 nm 6.25/12.5GHz spacing";
                }
                enum "195.59375" {
                  value 712;
                  description
                    "195.59375 THz/1532.73 nm 6.25GHz spacing";
                }
                enum "195.60000" {
                  value 713;
                  description
                    "195.60000 THz/1532.68 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "195.60625" {
                  value 714;
                  description
                    "195.60625 THz/1532.63 nm 6.25GHz spacing";
                }
                enum "195.61250" {
                  value 715;
                  description
                    "195.61250 THz/1532.58 nm 6.25/12.5GHz spacing";
                }
                enum "195.61875" {
                  value 716;
                  description
                    "195.61875 THz/1532.53 nm 6.25GHz spacing";
                }
                enum "195.62500" {
                  value 717;
                  description
                    "195.62500 THz/1532.49 nm 6.25/12.5GHz spacing";
                }
                enum "195.63125" {
                  value 718;
                  description
                    "195.63125 THz/1532.44 nm 6.25GHz spacing";
                }
                enum "195.63750" {
                  value 719;
                  description
                    "195.63750 THz/1532.39 nm 6.25/12.5GHz spacing";
                }
                enum "195.64375" {
                  value 720;
                  description
                    "195.64375 THz/1532.34 nm 6.25GHz spacing";
                }
                enum "195.65000" {
                  value 721;
                  description
                    "195.65000 THz/1532.29 nm 6.25/12.5/50/75GHz spacing";
                }
                enum "195.65625" {
                  value 722;
                  description
                    "195.65625 THz/1532.24 nm 6.25GHz spacing";
                }
                enum "195.66250" {
                  value 723;
                  description
                    "195.66250 THz/1532.19 nm 6.25/12.5GHz spacing";
                }
                enum "195.66875" {
                  value 724;
                  description
                    "195.66875 THz/1532.14 nm 6.25GHz spacing";
                }
                enum "195.67500" {
                  value 725;
                  description
                    "195.67500 THz/1532.09 nm 6.25/12.5GHz spacing";
                }
                enum "195.68125" {
                  value 726;
                  description
                    "195.68125 THz/1532.04 nm 6.25GHz spacing";
                }
                enum "195.68750" {
                  value 727;
                  description
                    "195.68750 THz/1532.00 nm 6.25/12.5GHz spacing";
                }
                enum "195.69375" {
                  value 728;
                  description
                    "195.69375 THz/1531.95 nm 6.25GHz spacing";
                }
                enum "195.70000" {
                  value 729;
                  description
                    "195.70000 THz/1531.90 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "195.70625" {
                  value 730;
                  description
                    "195.70625 THz/1531.85 nm 6.25GHz spacing";
                }
                enum "195.71250" {
                  value 731;
                  description
                    "195.71250 THz/1531.80 nm 6.25/12.5GHz spacing";
                }
                enum "195.71875" {
                  value 732;
                  description
                    "195.71875 THz/1531.75 nm 6.25GHz spacing";
                }
                enum "195.72500" {
                  value 733;
                  description
                    "195.72500 THz/1531.70 nm 6.25/12.5/75GHz spacing";
                }
                enum "195.73125" {
                  value 734;
                  description
                    "195.73125 THz/1531.65 nm 6.25GHz spacing";
                }
                enum "195.73750" {
                  value 735;
                  description
                    "195.73750 THz/1531.60 nm 6.25/12.5GHz spacing";
                }
                enum "195.74375" {
                  value 736;
                  description
                    "195.74375 THz/1531.56 nm 6.25GHz spacing";
                }
                enum "195.75000" {
                  value 737;
                  description
                    "195.75000 THz/1531.51 nm 6.25/12.5/50GHz spacing";
                }
                enum "195.75625" {
                  value 738;
                  description
                    "195.75625 THz/1531.46 nm 6.25GHz spacing";
                }
                enum "195.76250" {
                  value 739;
                  description
                    "195.76250 THz/1531.41 nm 6.25/12.5GHz spacing";
                }
                enum "195.76875" {
                  value 740;
                  description
                    "195.76875 THz/1531.36 nm 6.25GHz spacing";
                }
                enum "195.77500" {
                  value 741;
                  description
                    "195.77500 THz/1531.31 nm 6.25/12.5GHz spacing";
                }
                enum "195.78125" {
                  value 742;
                  description
                    "195.78125 THz/1531.26 nm 6.25GHz spacing";
                }
                enum "195.78750" {
                  value 743;
                  description
                    "195.78750 THz/1531.21 nm 6.25/12.5GHz spacing";
                }
                enum "195.79375" {
                  value 744;
                  description
                    "195.79375 THz/1531.16 nm 6.25GHz spacing";
                }
                enum "195.80000" {
                  value 745;
                  description
                    "195.80000 THz/1531.12 nm 6.25/12.5/50/75/100GHz spacing";
                }
                enum "195.80625" {
                  value 746;
                  description
                    "195.80625 THz/1531.07 nm 6.25GHz spacing";
                }
                enum "195.81250" {
                  value 747;
                  description
                    "195.81250 THz/1531.02 nm 6.25/12.5GHz spacing";
                }
                enum "195.81875" {
                  value 748;
                  description
                    "195.81875 THz/1530.97 nm 6.25GHz spacing";
                }
                enum "195.82500" {
                  value 749;
                  description
                    "195.82500 THz/1530.92 nm 6.25/12.5GHz spacing";
                }
                enum "195.83125" {
                  value 750;
                  description
                    "195.83125 THz/1530.87 nm 6.25GHz spacing";
                }
                enum "195.83750" {
                  value 751;
                  description
                    "195.83750 THz/1530.82 nm 6.25/12.5GHz spacing";
                }
                enum "195.84375" {
                  value 752;
                  description
                    "195.84375 THz/1530.77 nm 6.25GHz spacing";
                }
                enum "195.85000" {
                  value 753;
                  description
                    "195.85000 THz/1530.72 nm 6.25/12.5/50GHz spacing";
                }
                enum "195.85625" {
                  value 754;
                  description
                    "195.85625 THz/1530.68 nm 6.25GHz spacing";
                }
                enum "195.86250" {
                  value 755;
                  description
                    "195.86250 THz/1530.63 nm 6.25/12.5GHz spacing";
                }
                enum "195.86875" {
                  value 756;
                  description
                    "195.86875 THz/1530.58 nm 6.25GHz spacing";
                }
                enum "195.87500" {
                  value 757;
                  description
                    "195.87500 THz/1530.53 nm 6.25/12.5/75GHz spacing";
                }
                enum "195.88125" {
                  value 758;
                  description
                    "195.88125 THz/1530.48 nm 6.25GHz spacing";
                }
                enum "195.88750" {
                  value 759;
                  description
                    "195.88750 THz/1530.43 nm 6.25/12.5GHz spacing";
                }
                enum "195.89375" {
                  value 760;
                  description
                    "195.89375 THz/1530.38 nm 6.25GHz spacing";
                }
                enum "195.90000" {
                  value 761;
                  description
                    "195.90000 THz/1530.33 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "195.90625" {
                  value 762;
                  description
                    "195.90625 THz/1530.29 nm 6.25GHz spacing";
                }
                enum "195.91250" {
                  value 763;
                  description
                    "195.91250 THz/1530.24 nm 6.25/12.5GHz spacing";
                }
                enum "195.91875" {
                  value 764;
                  description
                    "195.91875 THz/1530.19 nm 6.25GHz spacing";
                }
                enum "195.92500" {
                  value 765;
                  description
                    "195.92500 THz/1530.14 nm 6.25/12.5GHz spacing";
                }
                enum "195.93125" {
                  value 766;
                  description
                    "195.93125 THz/1530.09 nm 6.25GHz spacing";
                }
                enum "195.93750" {
                  value 767;
                  description
                    "195.93750 THz/1530.04 nm 6.25/12.5GHz spacing";
                }
                enum "195.94375" {
                  value 768;
                  description
                    "195.94375 THz/1529.99 nm 6.25GHz spacing";
                }
                enum "195.95000" {
                  value 769;
                  description
                    "195.95000 THz/1529.94 nm 6.25/12.5/50/75GHz spacing";
                }
                enum "195.95625" {
                  value 770;
                  description
                    "195.95625 THz/1529.89 nm 6.25GHz spacing";
                }
                enum "195.96250" {
                  value 771;
                  description
                    "195.96250 THz/1529.85 nm 6.25/12.5GHz spacing";
                }
                enum "195.96875" {
                  value 772;
                  description
                    "195.96875 THz/1529.80 nm 6.25GHz spacing";
                }
                enum "195.97500" {
                  value 773;
                  description
                    "195.97500 THz/1529.75 nm 6.25/12.5GHz spacing";
                }
                enum "195.98125" {
                  value 774;
                  description
                    "195.98125 THz/1529.70 nm 6.25GHz spacing";
                }
                enum "195.98750" {
                  value 775;
                  description
                    "195.98750 THz/1529.65 nm 6.25/12.5GHz spacing";
                }
                enum "195.99375" {
                  value 776;
                  description
                    "195.99375 THz/1529.60 nm 6.25GHz spacing";
                }
                enum "196.00000" {
                  value 777;
                  description
                    "196.00000 THz/1529.55 nm 6.25/12.5/50/100GHz spacing";
                }
                enum "196.00625" {
                  value 778;
                  description
                    "196.00625 THz/1529.50 nm 6.25GHz spacing";
                }
                enum "196.01250" {
                  value 779;
                  description
                    "196.01250 THz/1529.46 nm 6.25/12.5GHz spacing";
                }
                enum "196.01875" {
                  value 780;
                  description
                    "196.01875 THz/1529.41 nm 6.25GHz spacing";
                }
                enum "196.02500" {
                  value 781;
                  description
                    "196.02500 THz/1529.36 nm 6.25/12.5/75GHz spacing";
                }
                enum "196.03125" {
                  value 782;
                  description
                    "196.03125 THz/1529.31 nm 6.25GHz spacing";
                }
                enum "196.03750" {
                  value 783;
                  description
                    "196.03750 THz/1529.26 nm 6.25/12.5GHz spacing";
                }
                enum "196.04375" {
                  value 784;
                  description
                    "196.04375 THz/1529.21 nm 6.25GHz spacing";
                }
                enum "196.05000" {
                  value 785;
                  description
                    "196.05000 THz/1529.16 nm 6.25/12.5/50GHz spacing";
                }
                enum "196.05625" {
                  value 786;
                  description
                    "196.05625 THz/1529.11 nm 6.25GHz spacing";
                }
                enum "196.06250" {
                  value 787;
                  description
                    "196.06250 THz/1529.07 nm 6.25/12.5GHz spacing";
                }
                enum "196.06875" {
                  value 788;
                  description
                    "196.06875 THz/1529.02 nm 6.25GHz spacing";
                }
                enum "196.07500" {
                  value 789;
                  description
                    "196.07500 THz/1528.97 nm 6.25/12.5GHz spacing";
                }
                enum "196.08125" {
                  value 790;
                  description
                    "196.08125 THz/1528.92 nm 6.25GHz spacing";
                }
                enum "196.08750" {
                  value 791;
                  description
                    "196.08750 THz/1528.87 nm 6.25/12.5GHz spacing";
                }
                enum "196.09375" {
                  value 792;
                  description
                    "196.09375 THz/1528.82 nm 6.25GHz spacing";
                }
                enum "196.10000" {
                  value 793;
                  description
                    "196.10000 THz/1528.77 nm 6.25/12.5/50/75/100GHz spacing";
                }
                enum "196.15040" {
                  value 794;
                  description
                    "196.15040 THz/1528.38 nm 50Ghz spacing";
                }
              }
              description
                "Optical channel frequency in terahertz";
            }
          }  // choice channel-number
    
          leaf tx-power {
            type string {
              junos:posix-pattern "^([+-]?[1-9]?[0-9](.[0-9][0-9]?)?)$";
              junos:pattern-message "Signed value with up to 2 decimal places";
            }
            units "dBm";
            description
              "Transmit laser output power";
          }
    
          choice laser-enable-choice {
            leaf laser-enable {
              type empty;
              description
                "Enable transmit laser";
            }
            leaf no-laser-enable {
              type empty;
              description
                "Don't enable transmit laser";
            }
          }  // choice laser-enable-choice
        }  // grouping och-attributes
    
        grouping odu-attributes {
          description
            "Optical Data Unit configuration attributes";
          uses apply-advanced;
    
          leaf rate {
            type enumeration {
              enum "odu4" {
                value 0;
                description "ODU4 for 100 Gbps";
              }
            }
            description
              "Specific type of ODU, according to data rate";
          }
    
          choice is-ma-choice {
            leaf is-ma {
              type empty;
              description
                "Link is enabled for maintenance tasks, alarms are masked";
            }
            leaf no-is-ma {
              type empty;
              description
                "Don't link is enabled for maintenance tasks, alarms are masked";
            }
          }  // choice is-ma-choice
    
          container tti {
            presence "enable tti";
            description
              "Configuration of OTU trail trace identifier";
            uses otn-tti-attributes;
          }  // container tti
    
          container degrade {
            presence "enable degrade";
            description
              "Configuration of OTU degrade defect detection";
            uses otn-degrade;
          }  // container degrade
    
          leaf exp-payload-type {
            type union {
              type uint8;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description
              "Expected OPU payload type";
          }
    
          container prbs {
            presence "enable prbs";
            description
              "Configuration of framed pseudorandom binary sequence test signal";
            uses prbs-config;
          }  // container prbs
        }  // grouping odu-attributes
    
        grouping otn-degrade {
          description
            "Configuration of degrade defect detection";
          uses apply-advanced;
    
          leaf degm {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "2 .. 10";
              }
            }
            description
              "Number of consecutive intervals error rate above threshold";
          }
    
          leaf degthr {
            type string {
              junos:posix-pattern "^((100(.00?)?)|(([1-9])?[0-9](.[0-9][0-9]?)?))$";
              junos:pattern-message "Percentage value up to 2 decimal places";
            }
            description
              "Threshold - percentage errored blocks, ex. 1.23 = 1.23%";
          }
        }  // grouping otn-degrade
    
        grouping otn-tti-attributes {
          description
            "Configuration of OTN trail trace identifier";
          uses apply-advanced;
    
          leaf sapi {
            type string {
              length "0 .. 15";
            }
            description
              "Transmitted source access point identifier field";
          }
    
          leaf dapi {
            type string {
              length "0 .. 15";
            }
            description
              "Transmitted destination access point identifier field";
          }
    
          leaf operator {
            type string {
              length "0 .. 32";
            }
            description
              "Transmitted operator field";
          }
    
          leaf exp-sapi {
            type string {
              length "0 .. 15";
            }
            description
              "Expected received source access point identifier field";
          }
    
          leaf exp-dapi {
            type string {
              length "0 .. 15";
            }
            description
              "Expected received destination access point identifier field";
          }
    
          leaf tim-detect-mode {
            type enumeration {
              enum "disabled" {
                value 0;
                description
                  "Detection of trace input mismatch defect disabled";
              }
              enum "sapi-only" {
                value 1;
                description
                  "Detection of trace input mismatch defect on SAPI field only";
              }
              enum "dapi-only" {
                value 2;
                description
                  "Detection of trace input mismatch defect on DAPI field only";
              }
              enum "sapi-and-dapi" {
                value 3;
                description
                  "Detection of trace input mismatch defect on both SAPI and DAPI fields";
              }
            }
            description
              "Trace input mismatch defect detection mode";
          }
    
          choice tim-act-enable-choice {
            leaf tim-act-enable {
              type empty;
              description
                "Enable trace input mismatch consequential actions";
            }
            leaf no-tim-act-enable {
              type empty;
              description
                "Don't enable trace input mismatch consequential actions";
            }
          }  // choice tim-act-enable-choice
        }  // grouping otn-tti-attributes
    
        grouping otu-attributes {
          description
            "Optical transmission unit configuration attributes";
          uses apply-advanced;
    
          leaf rate {
            type enumeration {
              enum "otu4" {
                value 0;
                description "OTU4 for 100 Gbps";
              }
            }
            description
              "Specific type of OTU, according to data rate";
          }
    
          choice is-ma-choice {
            leaf is-ma {
              type empty;
              description
                "Link is enabled for maintenance tasks, alarms are masked";
            }
            leaf no-is-ma {
              type empty;
              description
                "Don't link is enabled for maintenance tasks, alarms are masked";
            }
          }  // choice is-ma-choice
    
          leaf fec {
            type enumeration {
              enum "none" {
                value 0;
                description
                  "No forward error correction applied";
              }
              enum "gfec" {
                value 1;
                description
                  "ITU-T G.709 standard forward error correction";
              }
              enum "hgfec" {
                value 2;
                description "High gain FEC";
              }
            }
            description
              "Forward error correction type";
          }
    
          leaf loopback {
            type enumeration {
              enum "none" {
                value 0;
                description
                  "No loopback mode active";
              }
              enum "local" {
                value 1;
                description
                  "Local loopback (host side)";
              }
              enum "line" {
                value 2;
                description
                  "Line loopback (network side)";
              }
            }
            description "Enabled loopback mode";
          }
    
          container tti {
            presence "enable tti";
            description
              "Configuration of OTU trail trace identifier";
            uses otn-tti-attributes;
          }  // container tti
    
          container degrade {
            presence "enable degrade";
            description
              "Configuration of OTU degrade defect detection";
            uses otn-degrade;
          }  // container degrade
        }  // grouping otu-attributes
    
        grouping p2mp_ldp_lsp_nh_obj {
          uses apply-advanced;
    
          list root-address {
            key "name";
            description
              "Configure the root address of P2MP LSP";
            leaf name {
              type jt:ipaddr;
              description
                "Root address of the P2MP LSP";
            }
    
            uses apply-advanced;
    
            leaf lsp-id {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 65535";
                }
              }
              description
                "Configure the generic LSP identifier";
            }
    
            list group-address {
              key "name";
              description
                "IPv4/Ipv6 group address for mLDP LSP";
              leaf name {
                type jt:ipaddr;
                description
                  "IPv4/Ipv6 group address";
              }
    
              uses apply-advanced;
    
              list source-address {
                key "name";
                description
                  "IPv4/Ipv6 source address";
                leaf name {
                  type jt:ipaddr;
                  description
                    "IPv4/Ipv6 source address for mLDP LSP";
                }
    
                uses apply-advanced;
              }  // list source-address
            }  // list group-address
          }  // list root-address
        }  // grouping p2mp_ldp_lsp_nh_obj
    
        grouping pim_bootstrap_options_type {
          uses apply-advanced;
    
          leaf priority {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 255";
              }
            }
            description
              "Eligibility to be the bootstrap router";
          }
    
          leaf-list import {
            type jt:policy-algebra;
            ordered-by user;
            description
              "Bootstrap import policy";
          }
    
          leaf-list export {
            type jt:policy-algebra;
            ordered-by user;
            description
              "Bootstrap export policy";
          }
        }  // grouping pim_bootstrap_options_type
    
        grouping pim_filter_obj {
          description
            "Filter to apply to tracing";
          leaf match-on {
            type enumeration {
              enum "prefix" {
                value 0;
                description
                  "Filter based on prefix";
              }
            }
            description
              "Argument on which to match";
          }
    
          leaf-list policy {
            type jt:policy-algebra;
            ordered-by user;
            description "Filter policy";
          }
        }  // grouping pim_filter_obj
    
        grouping pim_rp_group_range_type {
          leaf name {
            type jt:ipprefix;
          }
    
          uses apply-advanced;
    
          leaf nexthop-hold-time {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 1000";
              }
            }
            units "milliseconds";
            description
              "Nexthop hold time in milliseconds";
          }
        }  // grouping pim_rp_group_range_type
    
        grouping ppp_options_type {
          uses apply-advanced;
    
          leaf dynamic-profile {
            junos:must "("dynamic-profiles $$")";
            junos:must-message "referenced dynamic-profile must be defined";
            junos:must "(any ".. .. .. unit <*>")";
            junos:must-message "dynamic-profile statement can be configured only on logical interfaces";
            type string;
            description "Dynamic profile name";
          }
    
          container chap {
            presence "enable chap";
            description
              "Challenge Handshake Authentication Protocol options";
            uses apply-advanced;
    
            choice access-data {
              leaf access-profile {
                junos:must "("access profile $$")";
                junos:must-message "referenced access profile must be defined";
                type string {
                  length "1 .. 63";
                }
                description
                  "Profile containing client list and access parameters";
              }
              leaf default-chap-secret {
                type jt:unreadable;
                description
                  "Default CHAP secret to be used when no matching access profile exists";
              }
            }  // choice access-data
    
            leaf local-name {
              type string;
              description
                "Name sent in CHAP-Challenge and CHAP-Response";
            }
    
            leaf no-rfc2486 {
              type empty;
              description
                "RFC2486 compliance is not enforced";
            }
    
            leaf passive {
              type empty;
              description
                "Handle incoming CHAP requests only";
            }
          }  // container chap
    
          container pap {
            presence "enable pap";
            description
              "Password Authentication Protocol options";
            uses apply-advanced;
    
            choice access-data {
              leaf access-profile {
                junos:must "("access profile $$")";
                junos:must-message "referenced access profile must be defined";
                type string {
                  length "1 .. 63";
                }
                description
                  "Profile containing client list and access parameters";
              }
              leaf default-password {
                type jt:unreadable;
                description
                  "Default PAP password used in the absence of matching profile";
              }
            }  // choice access-data
    
            leaf local-name {
              type string;
              description
                "Name sent in PAP request packet";
            }
    
            leaf no-rfc2486 {
              type empty;
              description
                "RFC2486 compliance is not enforced";
            }
    
            leaf local-password {
              type jt:unreadable;
              description
                "Password sent in PAP request packet";
            }
    
            leaf passive {
              junos:must "(".. local-password")";
              junos:must-message "local-password MUST be set if passive is used with PAP";
              type empty;
              description
                "Do not handle PAP authentication requests";
            }
          }  // container pap
    
          container compression {
            description
              "Set compression options";
            leaf acfc {
              junos:must "(!(".. .. .. encapsulation frame-relay-ppp"))";
              junos:must-message "compression acfc is not supported on encapsulation frame-relay-ppp";
              type empty;
              description
                "Negotiate Address/Control field compression";
            }
    
            leaf pfc {
              type empty;
              description
                "Negotiate Protocol field compression";
            }
          }  // container compression
    
          leaf lcp-restart-timer {
            junos:must "(any ".. .. .. unit <*>")";
            junos:must-message "lcp-restart-timer statement can be configured only on logical interfaces";
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "20 .. 10000";
              }
            }
            units "milliseconds";
            description "LCP restart timer";
          }
    
          leaf ncp-restart-timer {
            junos:must "(any ".. .. .. unit <*>")";
            junos:must-message "ncp-restart-timer statement can be configured only on logical interfaces";
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "500 .. 10000";
              }
            }
            units "milliseconds";
            description "NCP restart timer";
          }
    
          leaf no-termination-request {
            type empty;
            description
              "Don't send PPP termination requests";
          }
    
          leaf loopback-clear-timer {
            junos:must "(any ".. .. .. unit <*>")";
            junos:must-message "loopback-clear-timer statement can be configured only on logical interfaces";
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint8 {
                range "1 .. 60";
              }
            }
            units "seconds";
            description "Loopback clear timer";
          }
    
          leaf lcp-max-conf-req {
            junos:must "(any ".. .. .. unit <*>")";
            junos:must-message "lcp-max-conf-req statement can be configured only on logical interfaces";
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 65535";
              }
            }
            description
              "Maximum LCP Conf-Req to be sent, 0 means infinite";
          }
    
          leaf ncp-max-conf-req {
            junos:must "(any ".. .. .. unit <*>")";
            junos:must-message "ncp-max-conf-req statement can be configured only on logical interfaces";
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 65535";
              }
            }
            description
              "Maximum NCP Conf-Req to be sent, 0 means infinite";
          }
    
          leaf on-demand-ip-address {
            junos:must "(any ".. .. .. unit <*>")";
            junos:must-message "on-demand-ip-address statement can be configured only on logical interfaces";
            type empty;
            description
              "Enable On-Demand IPv4 address allocation and de-allocation";
          }
    
          leaf aaa-options {
            junos:must "("access aaa-options $$")";
            junos:must-message "referenced aaa-options name must be defined";
            type string {
              length "1 .. 63";
            }
            description
              "Attach AAA options name to dynamic-profile";
          }
    
          container initiate-ncp {
            junos:must "(any ".. .. .. unit <*>")";
            junos:must-message "initiate-ncp statement can be configured only on logical interfaces";
            description
              "Enable server initiated NCP";
            uses apply-advanced;
    
            leaf ip {
              type empty;
              description
                "Enable server initiated IPNCP";
            }
    
            leaf ipv6 {
              type empty;
              description
                "Enable server initiated IPv6NCP";
            }
    
            leaf dual-stack-passive {
              type empty;
              description
                "Disable server initiated IPNCP/IPv6NCP for dual-stack client";
            }
          }  // container initiate-ncp
    
          leaf mtu {
            junos:must "(any ".. .. .. unit <*>")";
            junos:must-message "mtu statement can be configured only on logical interfaces";
            type string;
            description
              "The Maximum Transfer Unit size in bytes";
          }
    
          leaf peer-ip-address-optional {
            type empty;
            description
              "Set Peer IP Address Optional in IP NCP Negotiations";
          }
    
          leaf ipcp-suggest-dns-option {
            type empty;
            description
              "Suggest peer to negotiate with DNS Addresses options";
          }
    
          leaf ignore-magic-number-mismatch {
            type empty;
            description
              "Ignore magic-number validation failure in LCP keepalive";
          }
    
          container local-authentication {
            description
              "Local Authentication Protocol options";
            uses local_auth_type;
          }  // container local-authentication
    
          leaf lcp-connection-update {
            type empty;
            description
              "Enable LCP connection update request to peer";
          }
        }  // grouping ppp_options_type
    
        grouping local_auth_type {
          description "Local authentication";
          uses apply-advanced;
    
          leaf password {
            type string {
              length "1 .. 64";
            }
            description "Username password";
          }
    
          container username-include {
            description "Add username options";
            uses apply-advanced;
    
            leaf mac-address {
              type empty;
              description "Include MAC address";
            }
    
            leaf circuit-id {
              type empty;
              description "Include circuit-id ";
            }
    
            leaf remote-id {
              type empty;
              description "Include remote-id ";
            }
    
            leaf domain-name {
              type string {
                length "1 .. 64";
              }
              description "Domain name";
            }
    
            leaf delimiter {
              type string {
                length "1";
              }
              description
                "Delimiter/separator character";
            }
          }  // container username-include
        }  // grouping local_auth_type
    
        grouping prbs-config {
          description
            "Configuration of pseudorandom binary sequence test signal";
          uses apply-advanced;
    
          choice enable-prbs-choice {
            leaf enable-prbs {
              type empty;
              description
                "Enable PRBS test pattern generation and monitoring";
            }
            leaf no-enable-prbs {
              type empty;
              description
                "Don't enable PRBS test pattern generation and monitoring";
            }
          }  // choice enable-prbs-choice
    
          leaf direction {
            type enumeration {
              enum "local" {
                value 0;
                description
                  "Test signal generated towards and received from host-side";
              }
              enum "line" {
                value 1;
                description
                  "Test signal generated towards and received from network-side";
              }
            }
            default "line";
            description
              "Direction of generated and received PRBS test signal";
          }
    
          leaf pattern {
            type enumeration {
              enum "prbs-31" {
                value 0;
                description
                  "2^31 polynomial PRBS test signal, as per G.709";
              }
              enum "prbs-23" {
                value 1;
                description
                  "2^23 polynomial PRBS test signal, SONET/SDH framed";
              }
              enum "prbs-15" {
                value 2;
                description
                  "2^15 polynomial PRBS test signal";
              }
              enum "prbs-7" {
                value 3;
                description
                  "2^7 polynomial PRBS test signal";
              }
            }
            default "prbs-31";
            description
              "Pattern to use for PRBS test signal";
          }
    
          choice invert-choice {
            leaf invert {
              type empty;
              description
                "Invert the test pattern";
            }
            leaf no-invert {
              type empty;
              description
                "Don't invert the test pattern";
            }
          }  // choice invert-choice
        }  // grouping prbs-config
    
        grouping prefix_action {
          leaf name {
            type string {
              junos:posix-pattern "!^((__.*)|(.{65,}))$";
              junos:pattern-message "Must be a non-reserved string of 64 characters or less";
            }
            description "Prefix action name";
          }
    
          uses apply-advanced;
    
          leaf policer {
            type string {
              junos:posix-pattern "!^((__.*)|(.{65,}))$";
              junos:pattern-message "Must be a non-reserved string of 64 characters or less";
            }
            description
              "Police the packet using a set of named policer";
          }
    
          leaf count {
            type empty;
            description "Enable counters";
          }
    
          leaf filter-specific {
            type empty;
            description
              "Filter specific, else term specific";
          }
    
          leaf subnet-prefix-length {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 32";
              }
            }
            description
              "Prefix length for the total address range";
          }
    
          choice source_or_dest {
            leaf source-prefix-length {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 32";
                }
              }
              description "Source prefix range";
            }
            leaf destination-prefix-length {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 32";
                }
              }
              description
                "Destination prefix range";
            }
          }  // choice source_or_dest
        }  // grouping prefix_action
    
        grouping prefix_list_items {
          leaf name {
            type jt:ipprefix-only;
            description "Address prefix";
          }
    
          uses apply-advanced;
        }  // grouping prefix_list_items
    
        grouping qualified_nh_obj {
          leaf name {
            type union {
              type jt:ipaddr-or-interface;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description
              "Next hop to destination";
          }
    
          uses apply-advanced;
    
          leaf preference {
            type union {
              type uint32;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description
              "Preference of qualified next hop";
          }
    
          leaf metric {
            type union {
              type uint32;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description
              "Metric of qualified next hop";
          }
    
          leaf interface {
            type union {
              type jt:interface-name;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description
              "Interface of qualified next hop";
          }
    
          leaf mac-address {
            type jt:mac-unicast;
            description "Next-hop Mac Address";
          }
    
          leaf tag {
            type union {
              type uint32;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description "Tag string";
          }
    
          container bfd-liveness-detection {
            description
              "Bidirectional Forwarding Detection (BFD) options";
            uses apply-advanced;
    
            leaf version {
              type enumeration {
                enum "0" {
                  value 0;
                  description
                    "BFD version 0 (deprecated)";
                }
                enum "1" {
                  value 1;
                  description "BFD version 1";
                }
                enum "automatic" {
                  value 2;
                  description
                    "Choose BFD version automatically";
                }
              }
              default "automatic";
              description
                "BFD protocol version number";
            }
    
            leaf minimum-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "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 authentication {
              description
                "Authentication options";
              uses apply-advanced;
    
              leaf key-chain {
                junos:must "(".. algorithm")";
                junos:must-message "May not be configured without algorithm";
                junos:must "("security authentication-key-chains key-chain $$")";
                junos:must-message "Referenced key-chain must be defined";
                type string;
                description "Key chain name";
              }
    
              leaf algorithm {
                junos:must "(".. key-chain")";
                junos:must-message "May not be configured without key-chain";
                type enumeration {
                  enum "simple-password" {
                    value 0;
                    description
                      "Simple password";
                  }
                  enum "keyed-md5" {
                    value 1;
                    description
                      "Keyed message Digest 5";
                  }
                  enum "meticulous-keyed-md5" {
                    value 2;
                    description
                      "Meticulous keyed message Digest 5";
                  }
                  enum "keyed-sha-1" {
                    value 3;
                    description
                      "Keyed secure hash algorithm (SHA1) ";
                  }
                  enum "meticulous-keyed-sha-1" {
                    value 4;
                    description
                      "Meticulous keyed secure hash algorithm (SHA1) ";
                  }
                }
                description "Algorithm name";
              }
    
              leaf loose-check {
                type empty;
                description
                  "Verify authentication only if authentication is negotiated";
              }
            }  // container authentication
    
            leaf neighbor {
              type jt:ipaddr;
              description "BFD neighbor address";
            }
    
            leaf local-address {
              type jt:ipaddr;
              description
                "BFD local address (for multihop only)";
            }
    
            leaf holddown-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 255000";
                }
              }
              units "milliseconds";
              description
                "Time to hold the session-UP notification to the client";
            }
    
            leaf minimum-receive-ttl {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint8 {
                  range "1 .. 255";
                }
              }
              description
                "Minimum receive TTL below which to drop";
            }
          }  // container bfd-liveness-detection
        }  // grouping qualified_nh_obj
    
        grouping rib_aggregate_type {
          uses apply-advanced;
    
          container defaults {
            description "Global route options";
            uses apply-advanced;
    
            container metric {
              presence "enable metric";
              description "Metric value";
              uses rib_static_metric_type;
            }  // container metric
    
            container metric2 {
              presence "enable metric2";
              description "Metric value 2";
              uses rib_static_metric_type;
            }  // container metric2
    
            container metric3 {
              presence "enable metric3";
              description "Metric value 3";
              uses rib_static_metric_type;
            }  // container metric3
    
            container metric4 {
              presence "enable metric4";
              description "Metric value 4";
              uses rib_static_metric_type;
            }  // container metric4
    
            container tag {
              presence "enable tag";
              description "Tag string";
              uses rib_static_metric_type;
            }  // container tag
    
            container tag2 {
              presence "enable tag2";
              description "Tag string 2";
              uses rib_static_metric_type;
            }  // container tag2
    
            container preference {
              presence "enable preference";
              description "Preference value";
              uses rib_static_metric_type;
            }  // container preference
    
            container preference2 {
              presence "enable preference2";
              description "Preference value 2";
              uses rib_static_metric_type;
            }  // container preference2
    
            container color {
              presence "enable color";
              description
                "Color (preference) value";
              uses rib_static_metric_type;
            }  // container color
    
            container color2 {
              presence "enable color2";
              description
                "Color (preference) value 2";
              uses rib_static_metric_type;
            }  // container color2
    
            leaf-list community {
              type jt:community;
              ordered-by user;
              description
                "BGP community identifier";
            }
    
            container as-path {
              description
                "Autonomous system path";
              uses apply-advanced;
    
              leaf path {
                type string;
                description
                  "Autonomous system path";
              }
    
              leaf origin {
                type enumeration {
                  enum "igp" {
                    value 0;
                    description
                      "Path originated in the local IGP";
                  }
                  enum "egp" {
                    value 1;
                    description
                      "Path originated in another AS";
                  }
                  enum "incomplete" {
                    value 2;
                    description
                      "Path was learned by some other means";
                  }
                }
              }
    
              leaf atomic-aggregate {
                type empty;
                description
                  "Add ATOMIC_AGGREGATE path attribute to route";
              }
    
              container aggregator {
                presence "enable aggregator";
                description
                  "Add AGGREGATOR path attribute to route";
              }  // container aggregator
    
              leaf as-number {
                type string {
                  junos:posix-pattern "^[0-9]+(.[0-9]+)?$";
                  junos:pattern-message "Use format 'x' or 'x.y' to specify number 'x' (Range 1 .. 4294967295) or number with higher 2 bytes 'x' (Range 0 .. 65535) and lower 2 bytes 'y' (Range 0 .. 65535) respectively";
                }
                description
                  " Autonomous system number in plain number or 'higher 16bits'.'Lower 16 bits' (asdot notation) format";
              }
    
              leaf address {
                type jt:ipv4addr;
                description
                  "Address of BGP system that formed the route";
              }
            }  // container as-path
    
            leaf discard {
              type empty;
              description
                "Drop packets to destination; send no ICMP unreachables";
            }
    
            leaf next-table {
              type string;
              description
                "Next hop to another table";
            }
    
            choice brief_flag {
              leaf brief {
                type empty;
                description
                  "Include longest common sequences from contributing paths";
              }
              leaf full {
                type empty;
                description
                  "Include all AS numbers from all contributing paths";
              }
            }  // choice brief_flag
    
            choice passive_flag {
              leaf active {
                type empty;
                description
                  "Remove inactive route from forwarding table";
              }
              leaf passive {
                type empty;
                description
                  "Retain inactive route in forwarding table";
              }
            }  // choice passive_flag
          }  // container defaults
    
          list route {
            key "name";
            ordered-by user;
            description
              "Individual route options";
            leaf name {
              type jt:ipprefix;
              description "Destination prefix";
            }
    
            uses apply-advanced;
    
            leaf-list policy {
              type jt:policy-algebra;
              ordered-by user;
              description "Policy filter";
            }
    
            container metric {
              presence "enable metric";
              description "Metric value";
              uses rib_static_metric_type;
            }  // container metric
    
            container metric2 {
              presence "enable metric2";
              description "Metric value 2";
              uses rib_static_metric_type;
            }  // container metric2
    
            container metric3 {
              presence "enable metric3";
              description "Metric value 3";
              uses rib_static_metric_type;
            }  // container metric3
    
            container metric4 {
              presence "enable metric4";
              description "Metric value 4";
              uses rib_static_metric_type;
            }  // container metric4
    
            container tag {
              presence "enable tag";
              description "Tag string";
              uses rib_static_metric_type;
            }  // container tag
    
            container tag2 {
              presence "enable tag2";
              description "Tag string 2";
              uses rib_static_metric_type;
            }  // container tag2
    
            container preference {
              presence "enable preference";
              description "Preference value";
              uses rib_static_metric_type;
            }  // container preference
    
            container preference2 {
              presence "enable preference2";
              description "Preference value 2";
              uses rib_static_metric_type;
            }  // container preference2
    
            container color {
              presence "enable color";
              description
                "Color (preference) value";
              uses rib_static_metric_type;
            }  // container color
    
            container color2 {
              presence "enable color2";
              description
                "Color (preference) value 2";
              uses rib_static_metric_type;
            }  // container color2
    
            leaf-list community {
              type jt:community;
              ordered-by user;
              description
                "BGP community identifier";
            }
    
            container as-path {
              description
                "Autonomous system path";
              uses apply-advanced;
    
              leaf path {
                type string;
                description
                  "Autonomous system path";
              }
    
              leaf origin {
                type enumeration {
                  enum "igp" {
                    value 0;
                    description
                      "Path originated in the local IGP";
                  }
                  enum "egp" {
                    value 1;
                    description
                      "Path originated in another AS";
                  }
                  enum "incomplete" {
                    value 2;
                    description
                      "Path was learned by some other means";
                  }
                }
              }
    
              leaf atomic-aggregate {
                type empty;
                description
                  "Add ATOMIC_AGGREGATE path attribute to route";
              }
    
              container aggregator {
                presence "enable aggregator";
                description
                  "Add AGGREGATOR path attribute to route";
              }  // container aggregator
    
              leaf as-number {
                type string {
                  junos:posix-pattern "^[0-9]+(.[0-9]+)?$";
                  junos:pattern-message "Use format 'x' or 'x.y' to specify number 'x' (Range 1 .. 4294967295) or number with higher 2 bytes 'x' (Range 0 .. 65535) and lower 2 bytes 'y' (Range 0 .. 65535) respectively";
                }
                description
                  " Autonomous system number in plain number or 'higher 16bits'.'Lower 16 bits' (asdot notation) format";
              }
    
              leaf address {
                type jt:ipv4addr;
                description
                  "Address of BGP system that formed the route";
              }
            }  // container as-path
    
            leaf discard {
              type empty;
              description
                "Drop packets to destination; send no ICMP unreachables";
            }
    
            leaf next-table {
              type string;
              description
                "Next hop to another table";
            }
    
            choice brief_flag {
              leaf brief {
                type empty;
                description
                  "Include longest common sequences from contributing paths";
              }
              leaf full {
                type empty;
                description
                  "Include all AS numbers from all contributing paths";
              }
            }  // choice brief_flag
    
            choice passive_flag {
              leaf active {
                type empty;
                description
                  "Remove inactive route from forwarding table";
              }
              leaf passive {
                type empty;
                description
                  "Retain inactive route in forwarding table";
              }
            }  // choice passive_flag
          }  // list route
        }  // grouping rib_aggregate_type
    
        grouping rib_group_type {
          uses apply-advanced;
    
          leaf inet-old-style {
            type string;
            status deprecated;
            description
              "Name of the IPv4 routing table group";
          }
    
          leaf inet {
            type string;
            description
              "Name of the IPv4 routing table group";
          }
    
          leaf inet3 {
            type string;
            description
              "Name of the IPv4 inet.3 routing table group";
          }
    
          leaf inet6 {
            type string;
            description
              "Name of the IPv6 routing table group";
          }
    
          leaf inet63 {
            type string;
            description
              "Name of the IPv6 inet6.3 routing table group";
          }
        }  // grouping rib_group_type
    
        grouping rib_static_metric_type {
          leaf metric-value {
            type union {
              type uint32;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description "Metric value";
          }
    
          leaf type {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 16";
              }
            }
            description "Metric type";
          }
        }  // grouping rib_static_metric_type
    
        grouping sonet_options_type {
          uses apply-advanced;
    
          leaf vtmapping {
            type enumeration {
              enum "klm" {
                value 0;
                description "KLM mode";
              }
              enum "itu-t" {
                value 1;
                description "ITU-T mode";
              }
            }
            description "VT mapping mode";
          }
    
          leaf fcs {
            type enumeration {
              enum "32" {
                value 0;
                description "32-bit mode";
              }
              enum "16" {
                value 1;
                description "16-bit mode";
              }
            }
            description "Frame checksum";
          }
    
          leaf path-trace {
            type string;
            description "Path trace string";
          }
    
          leaf loopback {
            type enumeration {
              enum "local" {
                value 0;
                description "Local loopback";
              }
              enum "remote" {
                value 1;
                description "Remote loopback";
              }
            }
            description "Loopback mode";
          }
    
          container trigger {
            description "Defect triggers";
            uses apply-advanced;
    
            container lol {
              description "LOL defect trigger";
              choice lol_choices {
                leaf ignore {
                  type empty;
                  description
                    "Ignore the defect";
                }
                container hold-time {
                  description
                    "Delay before marking interface up or down for defect";
                  leaf up {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface up when defect is absent";
                  }
    
                  leaf down {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface down when defect occurs";
                  }
                }  // container hold-time
              }  // choice lol_choices
            }  // container lol
    
            container pll {
              description "PLL defect trigger";
              choice pll_choices {
                leaf ignore {
                  type empty;
                  description
                    "Ignore the defect";
                }
                container hold-time {
                  description
                    "Delay before marking interface up or down for defect";
                  leaf up {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface up when defect is absent";
                  }
    
                  leaf down {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface down when defect occurs";
                  }
                }  // container hold-time
              }  // choice pll_choices
            }  // container pll
    
            container lof {
              description "LOF defect trigger";
              choice lof_choices {
                leaf ignore {
                  type empty;
                  description
                    "Ignore the defect";
                }
                container hold-time {
                  description
                    "Delay before marking interface up or down for defect";
                  leaf up {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface up when defect is absent";
                  }
    
                  leaf down {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface down when defect occurs";
                  }
                }  // container hold-time
              }  // choice lof_choices
            }  // container lof
    
            container los {
              description "LOS defect trigger";
              choice los_choices {
                leaf ignore {
                  type empty;
                  description
                    "Ignore the defect";
                }
                container hold-time {
                  description
                    "Delay before marking interface up or down for defect";
                  leaf up {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface up when defect is absent";
                  }
    
                  leaf down {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface down when defect occurs";
                  }
                }  // container hold-time
              }  // choice los_choices
            }  // container los
    
            container ais-l {
              description "AIS-L defect trigger";
              choice ais_l_choices {
                leaf ignore {
                  type empty;
                  description
                    "Ignore the defect";
                }
                container hold-time {
                  description
                    "Delay before marking interface up or down for defect";
                  leaf up {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface up when defect is absent";
                  }
    
                  leaf down {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface down when defect occurs";
                  }
                }  // container hold-time
              }  // choice ais_l_choices
            }  // container ais-l
    
            container rfi-l {
              description "RFI-L defect trigger";
              choice rfi_l_choices {
                leaf ignore {
                  type empty;
                  description
                    "Ignore the defect";
                }
                container hold-time {
                  description
                    "Delay before marking interface up or down for defect";
                  leaf up {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface up when defect is absent";
                  }
    
                  leaf down {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface down when defect occurs";
                  }
                }  // container hold-time
              }  // choice rfi_l_choices
            }  // container rfi-l
    
            container ber-sd {
              description
                "BER-SD defect trigger";
              uses apply-advanced;
    
              choice ber_sd_choices {
                leaf ignore {
                  type empty;
                  description
                    "Ignore the defect";
                }
                container hold-time {
                  description
                    "Delay before marking interface up or down for defect";
                  leaf up {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface up when defect is absent";
                  }
    
                  leaf down {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface down when defect occurs";
                  }
                }  // container hold-time
              }  // choice ber_sd_choices
            }  // container ber-sd
    
            container ber-sf {
              description
                "BER-SF defect trigger";
              uses apply-advanced;
    
              choice ber_sf_choices {
                leaf ignore {
                  type empty;
                  description
                    "Ignore the defect";
                }
                container hold-time {
                  description
                    "Delay before marking interface up or down for defect";
                  leaf up {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface up when defect is absent";
                  }
    
                  leaf down {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface down when defect occurs";
                  }
                }  // container hold-time
              }  // choice ber_sf_choices
            }  // container ber-sf
    
            container ais-p {
              description "AIS-P defect trigger";
              choice ais_p_choices {
                leaf ignore {
                  type empty;
                  description
                    "Ignore the defect";
                }
                container hold-time {
                  description
                    "Delay before marking interface up or down for defect";
                  leaf up {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface up when defect is absent";
                  }
    
                  leaf down {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface down when defect occurs";
                  }
                }  // container hold-time
              }  // choice ais_p_choices
            }  // container ais-p
    
            container lop-p {
              description "LOP-P defect trigger";
              choice lop_p_choices {
                leaf ignore {
                  type empty;
                  description
                    "Ignore the defect";
                }
                container hold-time {
                  description
                    "Delay before marking interface up or down for defect";
                  leaf up {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface up when defect is absent";
                  }
    
                  leaf down {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface down when defect occurs";
                  }
                }  // container hold-time
              }  // choice lop_p_choices
            }  // container lop-p
    
            container rfi-p {
              description "RFI-P defect trigger";
              choice rfi_p_choices {
                leaf ignore {
                  type empty;
                  description
                    "Ignore the defect";
                }
                container hold-time {
                  description
                    "Delay before marking interface up or down for defect";
                  leaf up {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface up when defect is absent";
                  }
    
                  leaf down {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface down when defect occurs";
                  }
                }  // container hold-time
              }  // choice rfi_p_choices
            }  // container rfi-p
    
            container uneq-p {
              description
                "UNEQ-P defect trigger";
              choice uneq_p_choices {
                leaf ignore {
                  type empty;
                  description
                    "Ignore the defect";
                }
                container hold-time {
                  description
                    "Delay before marking interface up or down for defect";
                  leaf up {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface up when defect is absent";
                  }
    
                  leaf down {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface down when defect occurs";
                  }
                }  // container hold-time
              }  // choice uneq_p_choices
            }  // container uneq-p
    
            container plm-p {
              description "PLM-P defect trigger";
              choice plm_p_choices {
                leaf ignore {
                  type empty;
                  description
                    "Ignore the defect";
                }
                container hold-time {
                  description
                    "Delay before marking interface up or down for defect";
                  leaf up {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface up when defect is absent";
                  }
    
                  leaf down {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface down when defect occurs";
                  }
                }  // container hold-time
              }  // choice plm_p_choices
            }  // container plm-p
    
            container locd {
              description
                "LOCD defect trigger (ATM only)";
              choice locd_choices {
                leaf ignore {
                  type empty;
                  description
                    "Ignore the defect";
                }
                container hold-time {
                  description
                    "Delay before marking interface up or down for defect";
                  leaf up {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface up when defect is absent";
                  }
    
                  leaf down {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface down when defect occurs";
                  }
                }  // container hold-time
              }  // choice locd_choices
            }  // container locd
    
            container lcdp {
              description
                "LCD-P defect trigger (Ethernet WAN only)";
              choice lcdp_choices {
                leaf ignore {
                  type empty;
                  description
                    "Ignore the defect";
                }
                container hold-time {
                  description
                    "Delay before marking interface up or down for defect";
                  leaf up {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface up when defect is absent";
                  }
    
                  leaf down {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 65534";
                      }
                    }
                    units "milliseconds";
                    description
                      "Delay before marking interface down when defect occurs";
                  }
                }  // container hold-time
              }  // choice lcdp_choices
            }  // container lcdp
          }  // container trigger
    
          container aps {
            description
              "Automatic Protection Switching";
            uses aps_type;
          }  // container aps
    
          choice payload_scrambler_choices {
            container payload-scrambler {
              presence
                "enable payload-scrambler";
              description
                "Enable payload scrambling";
              choice payload-choice {
              }  // choice payload-choice
            }  // container payload-scrambler
            leaf no-payload-scrambler {
              type empty;
              description
                "Do not enable payload scrambling";
            }
          }  // choice payload_scrambler_choices
    
          choice z0-increment-choice {
            leaf z0-increment {
              type empty;
              description
                "Increment Z0 in SDH mode";
            }
            leaf no-z0-increment {
              type empty;
              description
                "Don't increment Z0 in SDH mode";
            }
          }  // choice z0-increment-choice
    
          choice loop-timing-choice {
            leaf loop-timing {
              type empty;
              description
                "Set loop timing for STM-1";
            }
            leaf no-loop-timing {
              type empty;
              description
                "Don't set loop timing for STM-1";
            }
          }  // choice loop-timing-choice
    
          container bytes {
            description "Set SONET header bytes";
            uses apply-advanced;
    
            leaf e1-quiet {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 255";
                }
              }
              description "E1-quiet value";
            }
    
            leaf f1 {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 255";
                }
              }
              description "F1 user value";
            }
    
            leaf f2 {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 255";
                }
              }
              description "F2 user value";
            }
    
            leaf s1 {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 255";
                }
              }
              description
                "S1/Z1 value (stratum clock by convention)";
            }
    
            leaf z3 {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 255";
                }
              }
              description "Z3 user value";
            }
    
            leaf z4 {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 255";
                }
              }
              description "Z4 user value";
            }
    
            leaf c2 {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 255";
                }
              }
              description "C2 user value";
            }
          }  // container bytes
    
          leaf rfc-2615 {
            type empty;
            description "RFC 2615 compliance";
          }
    
          leaf aggregate {
            type union {
              type jt:interface-device;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description "Join a SONET aggregate";
          }
    
          container mpls {
            description "MPLS options";
            uses mpls_ifd_options;
          }  // container mpls
        }  // grouping sonet_options_type
    
        grouping springte_lsp_nh_obj {
          uses apply-advanced;
    
          leaf nexthop {
            type string {
              length "1 .. 128";
            }
            description
              "SPRING-TE LSP to use to reach destination";
          }
    
          container lsp-source {
            description
              "Source of tunnel creation";
            uses apply-advanced;
    
            choice lsp-src-choice {
              leaf pcep {
                type empty;
                description
                  "Path computation element protocol";
              }
              leaf static {
                type empty;
                description
                  "Static configuration";
              }
              leaf dtm {
                type empty;
                description
                  "Dynamic tunnel module";
              }
              leaf bgp {
                type empty;
                description "BGP SRTE";
              }
            }  // choice lsp-src-choice
          }  // container lsp-source
        }  // grouping springte_lsp_nh_obj
    
        grouping tdm_options_type {
          uses apply-advanced;
    
          leaf sfp-type {
            junos:must "((any " .. .. unit <*> " || " .. .. vlan-tagging"))";
            junos:must-message "either IFL or vlan-tagging must be configured to use tdm-options";
            type enumeration {
              enum "T1" {
                value 0;
                description "T1 smart SFP";
              }
              enum "E1" {
                value 1;
                description "E1 smart SFP";
              }
              enum "DS3" {
                value 2;
                description "DS3 smart SFP";
              }
              enum "STM1" {
                value 3;
                description "STM1 smart SFP";
              }
              enum "STM4" {
                value 4;
                description "STM4 smart SFP";
              }
              enum "STM16" {
                value 5;
                description "STM16 smart SFP";
              }
            }
            description "Smart SFP type";
          }
    
          leaf tdm-in-loop {
            junos:must "(!(".. tdm-out-loop"))";
            junos:must-message "tdm-in-loop and tdm-out-loop cannot be configured simultaneously";
            type empty;
            description
              "Configure port in TDM IN-LOOP mode";
          }
    
          leaf tdm-out-loop {
            type empty;
            description
              "Configure port in TDM OUT-LOOP mode";
          }
    
          leaf ces-psn-port-dmac-check-enable {
            type empty;
            description
              "Enable DMAC check on smart SFP";
          }
    
          container iwf-params {
            description
              "TDM interworking functionality (IWF) parameters";
            uses apply-advanced;
    
            leaf decap-ecid {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 1048575";
                }
              }
              description
                "ECID for decapsulation";
            }
    
            leaf encap-ecid {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 1048575";
                }
              }
              description
                "ECID for encapsulation";
            }
          }  // container iwf-params
    
          container ces-psn-channel {
            description
              "CES PSN channel parameters";
            uses apply-advanced;
    
            leaf dmac-address {
              type jt:mac-addr;
              description
                "Destination MAC-address to be paired with the Smart SFP";
            }
    
            leaf mode {
              type enumeration {
                enum "MEF8" {
                  value 0;
                  description
                    "MEF8 encapsulation";
                }
                enum "MPLS" {
                  junos:must "(!((".. .. sfp-type STM1" || (".. .. sfp-type STM4" || ".. .. sfp-type STM16"))))";
                  junos:must-message "MPLS mode is not supported for STM smart SFPs";
                  value 1;
                  description
                    "MPLS Encapsulation";
                }
              }
              description
                "PSN encapsulation mode";
            }
    
            leaf vlan-id-1 {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 4094";
                }
              }
              description
                "VLAN ID for encapsulation";
            }
    
            leaf vlan-id-2 {
              junos:must "(!((".. .. sfp-type STM1" || (".. .. sfp-type STM4" || ".. .. sfp-type STM16"))))";
              junos:must-message "STM Smart SFPs do not support vlan-id-2";
              junos:must "(".. vlan-id-1")";
              junos:must-message "vlan-id-1 must be configured to configure vlan-id-2";
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 4094";
                }
              }
              description
                "Outer VLAN ID for encapsulation";
            }
          }  // container ces-psn-channel
        }  // grouping tdm_options_type
    
        grouping three-color-policer-type {
          description "Three-color policer";
          leaf name {
            type string {
              junos:posix-pattern "!^((__.*)|(.{65,}))$";
              junos:pattern-message "Must be a non-reserved string of 64 characters or less";
            }
            description "Policer name";
          }
    
          uses apply-advanced;
    
          leaf filter-specific {
            type empty;
            description
              "Three color policer is filter-specific";
          }
    
          leaf logical-interface-policer {
            type empty;
            description
              "Policer is logical interface policer";
          }
    
          leaf physical-interface-policer {
            type empty;
            description
              "Policer is physical interface policer";
          }
    
          leaf shared-bandwidth-policer {
            type empty;
            description
              "Share policer bandwidth among bundle links";
          }
    
          container action {
            description
              "Action for three-color policer";
            uses apply-advanced;
    
            list loss-priority {
              key "name";
              ordered-by user;
              description
                "Loss priority for packet";
              uses three-color-policer-action;
            }  // list loss-priority
          }  // container action
    
          choice rate-type-choice {
            container single-rate {
              description "Single-rate policer";
              uses apply-advanced;
    
              choice mode-choice {
                leaf color-blind {
                  type empty;
                  description "Color-blind mode";
                }
                leaf color-aware {
                  type empty;
                  description "Color-aware mode";
                }
              }  // choice mode-choice
    
              leaf committed-information-rate {
                type string;
                units "bits per second";
                description
                  "Bandwidth allowed for committed traffic";
              }
    
              leaf committed-burst-size {
                type string;
                units "bytes";
                description
                  "Burst size allowed for committed traffic";
              }
    
              leaf excess-burst-size {
                type string;
                units "bytes";
                description
                  "Burst size allowed for excess traffic";
              }
            }  // container single-rate
    
            case case_2 {
            }  // case case_2
            container two-rate {
              presence "enable two-rate";
              description "Two-rate policer";
              uses apply-advanced;
    
              choice mode-choice {
                leaf color-blind {
                  type empty;
                  description "Color-blind mode";
                }
                leaf color-aware {
                  type empty;
                  description "Color-aware mode";
                }
              }  // choice mode-choice
    
              leaf committed-information-rate {
                type string;
                units "bits per second";
                description
                  "Bandwidth allowed for committed traffic";
              }
    
              leaf committed-burst-size {
                type string;
                units "bytes";
                description
                  "Burst size allowed for committed traffic  ";
              }
    
              leaf peak-information-rate {
                type string;
                units "bits per second";
                description
                  "Bandwidth allowed for peak traffic";
              }
    
              leaf peak-burst-size {
                type string;
                units "bytes";
                description
                  "Burst size allowed for peak traffic  ";
              }
    
              container aggregate-policing {
                presence
                  "enable aggregate-policing";
                description
                  "Configure Aggregate Policer";
                uses apply-advanced;
    
                list policer {
                  key "name";
                  max-elements 1;
                  ordered-by user;
                  description
                    "Two-color policer to be used as aggregate";
                  leaf name {
                    junos:must "("firewall policer $$")";
                    junos:must-message "Referenced aggregate policer is not defined";
                    type string;
                    description
                      "Name of two-color policer to use to aggregate police";
                  }
    
                  uses apply-advanced;
    
                  leaf aggregate-sharing-mode {
                    type enumeration {
                      enum "hybrid" {
                        value 0;
                        description
                          "Child policer CIR rates are guaranteed rates and PIR rate are peak rates for member flow";
                      }
                    }
                    description
                      "Hierarchical Metering model";
                  }
                }  // list policer
              }  // container aggregate-policing
            }  // container two-rate
    
            case case_4 {
            }  // case case_4
          }  // choice rate-type-choice
        }  // grouping three-color-policer-type
    
        grouping three-color-policer-action {
          description
            "Action for three-color policer";
          leaf name {
            type enumeration {
              enum "high" {
                value 0;
                description "High loss priority";
              }
            }
            description
              "Loss priority for packet";
          }
    
          uses apply-advanced;
    
          container then {
            description
              "Action to take if the rate limits are exceeded";
            uses apply-advanced;
    
            leaf discard {
              type empty;
              description "Discard the packet";
            }
          }  // container then
        }  // grouping three-color-policer-action
    
        grouping tunnel_end_point {
          description
            "Define a tunnel end point";
          leaf name {
            type string {
              junos:posix-pattern "!^((__.*)|(.{65,}))$";
              junos:pattern-message "Must be a non-reserved string of 64 characters or less";
            }
            description
              "Tunnel end-point identifier (ASCII string)";
          }
    
          uses apply-advanced;
    
          choice l3-protocol {
            container ipv6 {
              presence "enable ipv6";
              description "Enter an IPv6 tunnel";
              uses apply-advanced;
    
              leaf source-address {
                type jt:ipv6addr;
                description
                  "Tunnel source address";
              }
    
              leaf destination-address {
                type jt:ipv6prefix;
                description
                  "Tunnel destination address";
              }
            }  // container ipv6
            container ipv4 {
              presence "enable ipv4";
              description "Enter an IPv4 tunnel";
              uses apply-advanced;
    
              leaf source-address {
                type jt:ipv4addr;
                description
                  "Tunnel source address";
              }
    
              leaf destination-address {
                type jt:ipv4prefix;
                description
                  "Tunnel destination address";
              }
            }  // container ipv4
          }  // choice l3-protocol
    
          choice tunnel-protocol {
            container gre {
              presence "enable gre";
              description "Tunnel is GRE";
              uses apply-advanced;
    
              leaf key {
                type union {
                  type uint32;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Key for authentication";
              }
            }  // container gre
            container gre-in-udp {
              presence "enable gre-in-udp";
              description "Tunnel is GRE-in-UDP";
              uses apply-advanced;
    
              leaf source-port {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 65535";
                  }
                }
                description "UDP source port";
              }
    
              leaf destination-port {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 65535";
                  }
                }
                description
                  "UDP destination port";
              }
    
              leaf key {
                type union {
                  type uint32;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "GRE key for authentication";
              }
            }  // container gre-in-udp
          }  // choice tunnel-protocol
        }  // grouping tunnel_end_point
    
        grouping vlan_map {
          description
            "IEEE 802.1q Virtual LAN (VLAN) Tag mapping";
          uses apply-advanced;
    
          choice operation_choices {
            leaf push {
              type empty;
              description "Push a VLAN tag";
            }
            leaf swap {
              type empty;
              description "Swap a VLAN tag";
            }
            leaf pop {
              type empty;
              description "Pop a VLAN tag";
            }
            leaf push-push {
              type empty;
              description "Push two VLAN tags";
            }
            leaf swap-push {
              type empty;
              description
                "Swap VLAN tag and push a new VLAN tag";
            }
            leaf swap-swap {
              type empty;
              description
                "Swap both outer and inner VLAN tags";
            }
            leaf pop-swap {
              type empty;
              description
                "Pop outer VLAN tag and swap inner VLAN tag";
            }
            leaf pop-pop {
              type empty;
              description
                "Pop both outer and inner VLAN tags";
            }
          }  // choice operation_choices
    
          leaf tag-protocol-id {
            type string {
              junos:posix-pattern "^0x[abcdefABCDEF0123456789]{4}$";
              junos:pattern-message "Must be hexadecimal bit pattern of form 0xNNNN";
            }
            description
              "IEEE 802.1q Tag Protocol Identifier to rewrite";
          }
    
          leaf inner-tag-protocol-id {
            type string;
            description
              "IEEE 802.1q Tag Protocol ID to rewrite for inner tag";
          }
    
          leaf vlan-id {
            type string;
            description "VLAN ID to rewrite";
          }
    
          leaf inner-vlan-id {
            type string;
            description
              "VLAN ID to rewrite for inner tag";
          }
        }  // grouping vlan_map
    
        grouping vpls_filter {
          description
            "Define an VPLS firewall 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;
    
          leaf-list accounting-profile {
            junos:must "("accounting-options filter-profile")";
            junos:must-message "referenced accounting profile must be defined";
            type string;
            ordered-by user;
            description
              "Accounting profile name";
          }
    
          leaf interface-specific {
            type empty;
            description
              "Defined counters are interface specific";
          }
    
          leaf physical-interface-filter {
            type empty;
            description
              "Filter is physical interface filter";
          }
    
          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;
    
            leaf filter {
              junos:must "("firewall family vpls filter $$")";
              junos:must-message "Referenced filter is not defined";
              junos:must "((!(".. from") && !(".. then")))";
              junos:must-message "Not compatible with 'from or then'";
              type string {
                junos:posix-pattern "!^((__.*)|(.{65,}))$";
                junos:pattern-message "Must be a non-reserved string of 64 characters or less";
              }
              description "Filter to include";
            }
    
            container from {
              description
                "Define match criteria";
              uses apply-advanced;
    
              choice interface-group_choice {
                leaf-list interface-group {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
                leaf-list interface-group-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice interface-group_choice
    
              choice ether-type_choice {
                leaf-list ether-type {
                  type string;
                  ordered-by user;
                }
                leaf-list ether-type-except {
                  type string;
                  ordered-by user;
                }
              }  // choice ether-type_choice
    
              choice vlan-ether-type_choice {
                leaf-list vlan-ether-type {
                  type string;
                  ordered-by user;
                }
                leaf-list vlan-ether-type-except {
                  type string;
                  ordered-by user;
                }
              }  // choice vlan-ether-type_choice
    
              list destination-mac-address {
                key "name";
                ordered-by user;
                description
                  "Destination MAC address";
                uses firewall_mac_addr_object;
              }  // list destination-mac-address
    
              list source-mac-address {
                key "name";
                ordered-by user;
                description "Source MAC address";
                uses firewall_mac_addr_object;
              }  // list source-mac-address
    
              choice forwarding-class_choice {
                leaf-list forwarding-class {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  ordered-by user;
                  description "String name";
                }
                leaf-list forwarding-class-except {
                  type string {
                    junos:posix-pattern "^.{1,64}$";
                    junos:pattern-message "Must be string of 64 characters or less";
                  }
                  ordered-by user;
                  description "String name";
                }
              }  // choice forwarding-class_choice
    
              choice loss-priority_choice {
                case case_1 {
                }  // case case_1
                leaf-list loss-priority-except {
                  type enumeration {
                    enum "low" {
                      value 0;
                      description
                        "Loss priority low";
                    }
                    enum "high" {
                      value 1;
                      description
                        "Loss priority high";
                    }
                    enum "medium-low" {
                      value 2;
                      description
                        "Loss priority medium-low";
                    }
                    enum "medium-high" {
                      value 3;
                      description
                        "Loss priority medium-high";
                    }
                  }
                  ordered-by user;
                }
              }  // choice loss-priority_choice
    
              choice learn-vlan-id_choice {
                case case_1 {
                }  // case case_1
                leaf-list learn-vlan-id-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice learn-vlan-id_choice
    
              choice learn-vlan-1p-priority_choice {
                case case_1 {
                }  // case case_1
                leaf-list learn-vlan-1p-priority-except {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 7";
                    }
                  }
                  ordered-by user;
                  description
                    "802.1p priority value 0-7";
                }
              }  // choice learn-vlan-1p-priority_choice
    
              choice user-vlan-id_choice {
                case case_1 {
                }  // case case_1
                leaf-list user-vlan-id-except {
                  type string;
                  ordered-by user;
                  description "Range of values";
                }
              }  // choice user-vlan-id_choice
    
              choice user-vlan-1p-priority_choice {
                case case_1 {
                }  // case case_1
                leaf-list user-vlan-1p-priority-except {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 7";
                    }
                  }
                  ordered-by user;
                  description
                    "802.1p priority value 0-7";
                }
              }  // choice user-vlan-1p-priority_choice
    
              choice learn-vlan-dei_choice {
                case case_1 {
                }  // case case_1
                leaf-list learn-vlan-dei-except {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 1";
                    }
                  }
                  ordered-by user;
                  description "DEI value 0-1";
                }
              }  // choice learn-vlan-dei_choice
    
              choice traffic-type_choice {
                case case_1 {
                }  // case case_1
                leaf-list traffic-type-except {
                  type enumeration {
                    enum "broadcast" {
                      value 0;
                      description
                        "Packets with broadcast ethernet address";
                    }
                    enum "multicast" {
                      value 1;
                      description
                        "Packets with multicast ethernet address";
                    }
                    enum "unknown-unicast" {
                      value 2;
                      description
                        "Packets for which destination ethernet address has not been learnt";
                    }
                    enum "known-unicast" {
                      value 3;
                      description
                        "Packets for which destination ethernet address has been learnt";
                    }
                  }
                  ordered-by user;
                }
              }  // choice traffic-type_choice
    
              choice ip-protocol_choice {
                case case_1 {
                }  // case case_1
                leaf-list ip-protocol-except {
                  type string;
                  ordered-by user;
                }
              }  // choice ip-protocol_choice
    
              choice dscp_choice {
                case case_1 {
                }  // case case_1
                leaf-list dscp-except {
                  type string;
                  ordered-by user;
                }
              }  // choice dscp_choice
    
              choice ip-precedence_choice {
                case case_1 {
                }  // case case_1
                leaf-list ip-precedence-except {
                  type string;
                  ordered-by user;
                }
              }  // choice ip-precedence_choice
    
              choice source-port_choice {
                case case_1 {
                }  // case case_1
                leaf-list source-port-except {
                  type string;
                  ordered-by user;
                }
              }  // choice source-port_choice
    
              choice destination-port_choice {
                case case_1 {
                }  // case case_1
                leaf-list destination-port-except {
                  type string;
                  ordered-by user;
                }
              }  // choice destination-port_choice
    
              choice port_choice {
                case case_1 {
                }  // case case_1
                leaf-list port-except {
                  type string;
                  ordered-by user;
                }
              }  // choice port_choice
    
              choice icmp-code_choice {
                case case_1 {
                }  // case case_1
                leaf-list icmp-code-except {
                  type string;
                  ordered-by user;
                }
              }  // choice icmp-code_choice
    
              choice icmp-type_choice {
                case case_1 {
                }  // case case_1
                leaf-list icmp-type-except {
                  type string;
                  ordered-by user;
                }
              }  // choice icmp-type_choice
    
              list interface {
                key "name";
                ordered-by user;
                description
                  "Match interface name";
                uses match_interface_object;
              }  // list interface
    
              list interface-set {
                key "name";
                ordered-by user;
                description
                  "Match interface in set";
                uses match_interface_set_object;
              }  // list interface-set
    
              choice ipv6-next-header_choice {
                case case_1 {
                }  // case case_1
                leaf-list ipv6-next-header-except {
                  type string;
                  ordered-by user;
                }
              }  // choice ipv6-next-header_choice
    
              choice ipv6-payload-protocol_choice {
                case case_1 {
                }  // case case_1
                leaf-list ipv6-payload-protocol-except {
                  type string;
                  ordered-by user;
                }
              }  // choice ipv6-payload-protocol_choice
    
              choice ipv6-traffic-class_choice {
                case case_1 {
                }  // case case_1
                leaf-list ipv6-traffic-class-except {
                  type string;
                  ordered-by user;
                }
              }  // choice ipv6-traffic-class_choice
    
              choice policy-map_choice {
                leaf-list policy-map {
                  junos:must "("class-of-service policy-map $$")";
                  junos:must-message "Undefined policy-map instance";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                    length "1 .. 64";
                  }
                  ordered-by user;
                  description "String name";
                }
                leaf-list policy-map-except {
                  junos:must "("class-of-service policy-map $$")";
                  junos:must-message "Undefined policy-map instance";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                    length "1 .. 64";
                  }
                  ordered-by user;
                  description "String name";
                }
              }  // choice policy-map_choice
            }  // container from
    
            container then {
              description
                "Action to take if the 'from' condition is matched";
              uses apply-advanced;
    
              choice policer-choice {
                leaf policer {
                  junos:must "(!("firewall policer $$ aggregate"))";
                  junos:must-message "Cannot attach a aggregate policer to filter";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Name of policer to use to rate-limit traffic";
                }
                container three-color-policer {
                  description
                    "Police the packet using a three-color-policer";
                  uses apply-advanced;
    
                  choice type-choice {
                    leaf single-rate {
                      junos:must "("firewall three-color-policer $$ single-rate")";
                      junos:must-message "Referenced single-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of single-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf single-packet-rate {
                      junos:must "("firewall three-color-policer $$ single-packet-rate")";
                      junos:must-message "Referenced single-packet-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of single-packet-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf two-rate {
                      junos:must "("firewall three-color-policer $$ two-rate")";
                      junos:must-message "Referenced two-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of two-rate three-color policer to use to rate-limit traffic";
                    }
                    leaf two-packet-rate {
                      junos:must "("firewall three-color-policer $$ two-packet-rate")";
                      junos:must-message "Referenced two-packet-rate policer does not exist";
                      type string {
                        junos:posix-pattern "!^((__.*)|(.{65,}))$";
                        junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                      }
                      description
                        "Name of two-packet-rate three-color policer to use to rate-limit traffic";
                    }
                  }  // choice type-choice
                }  // container three-color-policer
                leaf hierarchical-policer {
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Name of hierarchical policer to use to rate-limit traffic";
                }
              }  // choice policer-choice
    
              choice policy-map-choice {
                leaf clear-policy-map {
                  type empty;
                  description
                    "Clear the policy marking";
                }
                leaf policy-map {
                  junos:must "("class-of-service policy-map $$")";
                  junos:must-message "referenced policy map must be defined";
                  type string {
                    junos:posix-pattern "!^((__.*)|(.{65,}))$";
                    junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                  }
                  description
                    "Policy map action";
                }
              }  // choice policy-map-choice
    
              leaf count {
                type string {
                  junos:posix-pattern "!^((__.*)|(.{65,}))$";
                  junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                }
                description
                  "Count the packet in the named counter";
              }
    
              leaf loss-priority {
                type enumeration {
                  enum "low" {
                    value 0;
                    description
                      "Loss priority low";
                  }
                  enum "high" {
                    value 1;
                    description
                      "Loss priority high";
                  }
                  enum "medium-low" {
                    value 2;
                    description
                      "Loss priority medium-low";
                  }
                  enum "medium-high" {
                    value 3;
                    description
                      "Loss priority medium-high";
                  }
                }
                description
                  "Packet's loss priority";
              }
    
              leaf forwarding-class {
                type string {
                  junos:posix-pattern "^.{1,64}$";
                  junos:pattern-message "Must be string of 64 characters or less";
                }
                description
                  "Classify packet to forwarding class";
              }
    
              leaf port-mirror-instance {
                junos:must "("forwarding-options port-mirroring instance $$")";
                junos:must-message "Referenced port-mirroring instance does not exist";
                type string {
                  junos:posix-pattern "!^((__.*)|(.{65,}))$";
                  junos:pattern-message "Must be a non-reserved string of 64 characters or less";
                }
                description
                  "Port-mirror the packet to specified instance";
              }
    
              leaf port-mirror {
                junos:must "(!(".. port-mirror-instance"))";
                junos:must-message "'port-mirror' and 'port-mirror-instance' are mutually exclusive";
                junos:must "("forwarding-options port-mirroring")";
                junos:must-message "Configure 'port-mirroring' under 'forwarding-options'";
                type empty;
                description
                  "Port-mirror the packet";
              }
    
              choice designation {
                leaf accept {
                  type empty;
                  description
                    "Accept the packet";
                }
                leaf discard {
                  type empty;
                  description
                    "Discard the packet";
                }
                leaf next {
                  type enumeration {
                    enum "term" {
                      value 0;
                      description
                        "Continue to next term in a filter";
                    }
                  }
                  description
                    "Continue to next term in a filter";
                }
              }  // choice designation
            }  // container then
          }  // list term
        }  // grouping vpls_filter
    
        grouping vrrp-group {
          description
            "Virtual Router Redundancy Protocol group";
          leaf name {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 255";
              }
            }
            description
              "Identifier for VRRP group";
          }
    
          uses apply-advanced;
    
          choice address {
            leaf-list virtual-address {
              type jt:ipv4addr;
              ordered-by user;
              description
                "One or more virtual IPv4 addresses";
            }
            leaf-list virtual-inet6-address {
              type jt:ipv6addr;
              ordered-by user;
              description
                "One or more virtual inet6 addresses";
            }
          }  // choice address
    
          leaf virtual-link-local-address {
            junos:must "(".. .. vrrp-inet6-group")";
            junos:must-message "'virtual-link-local-address' statement can be included only for interfaces of type 'family inet6'";
            type jt:ipv6addr;
            description
              "Virtual link-local addresses";
          }
    
          leaf priority {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 255";
              }
            }
            description
              "Virtual router election priority";
          }
    
          leaf preferred {
            type empty;
            description
              "Preferred group on subnet";
          }
    
          choice advertisement_type {
            leaf advertise-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 255";
                }
              }
              units "seconds";
              description
                "Advertisement interval";
            }
            leaf fast-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "10 .. 40950";
                }
              }
              units "milliseconds";
              description
                "Fast advertisement interval";
            }
            leaf inet6-advertise-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "100 .. 40000";
                }
              }
              units "milliseconds";
              description
                "Inet6 advertisement interval";
            }
          }  // choice advertisement_type
    
          choice preempt_type {
            container preempt {
              presence "enable preempt";
              description "Allow preemption";
              uses apply-advanced;
    
              leaf hold-time {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 3600";
                  }
                }
                units "seconds";
                description
                  "Preemption hold time";
              }
            }  // container preempt
            leaf no-preempt {
              type empty;
              description
                "Don't allow preemption";
            }
          }  // choice preempt_type
    
          choice accept_type {
            leaf accept-data {
              type empty;
              description
                "Accept packets destined for virtual IP address";
            }
            leaf no-accept-data {
              type empty;
              description
                "Don't accept packets destined for virtual IP address";
            }
          }  // choice accept_type
    
          leaf authentication-type {
            junos:must "(".. .. vrrp-group")";
            junos:must-message "'authentication-type' statement can be included only for interfaces of type 'family inet'";
            type enumeration {
              enum "md5" {
                value 0;
                description "HMAC-MD5-96";
              }
              enum "simple" {
                value 1;
                description "Simple password";
              }
            }
            description "Authentication type";
          }
    
          leaf authentication-key {
            junos:must "(".. .. vrrp-group")";
            junos:must-message "'authentication-key' statement can be included only for interfaces of type 'family inet'";
            type jt:unreadable;
            description "Authentication key";
          }
    
          container track {
            description
              "Interfaces to track for VRRP group";
            uses apply-advanced;
    
            leaf priority-hold-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 3600";
                }
              }
              units "seconds";
              description "Priority hold time";
            }
    
            list interface {
              key "name";
              ordered-by user;
              description
                "Interface to track in VRRP group";
              leaf name {
                type union {
                  type jt:interface-unit;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description "Name of interface";
              }
    
              uses apply-advanced;
    
              list bandwidth-threshold {
                key "name";
                description
                  "Track bandwidth of interface";
                leaf name {
                  type string;
                  units "bits per second";
                  description
                    "Interface speed below which priority cost is incurred";
                }
    
                leaf priority-cost {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 254";
                    }
                  }
                  description
                    "Value subtracted from priority when bandwidth is below threshold";
                }
              }  // list bandwidth-threshold
    
              leaf priority-cost {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 254";
                  }
                }
                description
                  "Value to subtract from priority when interface is down";
              }
            }  // list interface
    
            list route {
              key "route_address routing-instance";
              ordered-by user;
              description
                "Route to track in VRRP group";
              leaf route_address {
                type jt:ipprefix-mandatory;
                description "Route address";
              }
    
              leaf routing-instance {
                type string {
                  junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
                  junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
                }
                description
                  "Routing instance to which route belongs, or 'default'";
              }
    
              leaf priority-cost {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 254";
                  }
                }
                description
                  "Value to subtract from priority when route is down";
              }
            }  // list route
          }  // container track
    
          container vrrp-inherit-from {
            description
              "VRRP group to follow for this VRRP group";
            uses apply-advanced;
    
            leaf active-interface {
              type union {
                type jt:interface-unit;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description
                "Interface name of VRRP active group";
            }
    
            leaf active-group {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 255";
                }
              }
              description
                "Identifier for VRRP active group";
            }
          }  // container vrrp-inherit-from
    
          leaf advertisements-threshold {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 15";
              }
            }
            description
              "Number of vrrp advertisements missed before declaring master down";
          }
        }  // grouping vrrp-group
      }  // module junos-ex-conf-dynamic-profiles
    

© 2023 YumaWorks, Inc. All rights reserved.