Cisco-IOS-XR-um-interface-cfg

This module contains a collection of YANG definitions for Cisco IOS-XR interface package configuration. This YANG module augmen...

  • Version: 2021-05-04

    Cisco-IOS-XR-um-interface-cfg@2021-05-04


    
      module Cisco-IOS-XR-um-interface-cfg {
    
        yang-version 1;
    
        namespace
          "http://cisco.com/ns/yang/Cisco-IOS-XR-um-interface-cfg";
    
        prefix um-interface-cfg;
    
        import cisco-semver {
          prefix semver;
        }
        import Cisco-IOS-XR-types {
          prefix xr;
        }
        import tailf-common {
          prefix tailf;
        }
    
        organization "Cisco Systems, Inc.";
    
        contact
          "Cisco Systems, Inc.
    Customer Service
    
    Postal: 170 West Tasman Drive
    San Jose, CA 95134
    
    Tel: +1 800 553-NETS
    
    E-mail: cs-yang@cisco.com";
    
        description
          "This module contains a collection of YANG definitions
    for Cisco IOS-XR interface package configuration.
    
    This YANG module augments the
    modules with configuration data.
    
    Copyright (c) 2019-2021 by Cisco Systems, Inc.
    All rights reserved.";
    
        revision "2021-05-04" {
          description
            "Added sec-admin-state node under controller
    2021-02-02
      Updated when statement interface patterns
    2020-12-15
      Changed type of bandwidth from uint32 to uint64
    2020-10-07
      Added logging/events/link-status container
    2020-05-04
      Added controller/controller-preconfigure under interfaces
    container.";
        }
    
        revision "2019-06-10" {
          description
            "Establish semantic version baseline.";
        }
    
        revision "2019-03-29" {
          description "Initial version";
        }
    
        semver:module-version "2.0.0";
        semver:module-version "1.0.1";
    
        container interfaces {
          description "Interface configuration";
          list interface {
            key "interface-name";
            description
              "Interface configuration subcommands";
            leaf interface-name {
              type xr:Interface-name;
              description
                "Interface configuration subcommands";
            }
    
            container sub-interface-type {
              description
                "Specify type of sub-interface";
              container l2transport {
                presence
                  "Indicates a l2transport node is configured.";
                description
                  "l2transport sub-interface";
              }  // container l2transport
    
              container point-to-point {
                presence
                  "Indicates a point-to-point node is configured.";
                description
                  "point-to-point sub-interface";
              }  // container point-to-point
    
              container multipoint {
                presence
                  "Indicates a multipoint node is configured.";
                description
                  "multipoint sub-interface";
              }  // container multipoint
            }  // container sub-interface-type
    
            container ipv4 {
              description
                "Interface IPv4 config commands";
              container access-group {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[not(starts-with(text(),'tunnel-gre'))] and ../../a1:interface-name[not(starts-with(text(),'tunnel-te'))] and ../../a1:interface-name[not(starts-with(text(),'Loopback'))] and ../../a1:interface-name[not(starts-with(text(),'vasileft'))] and ../../a1:interface-name[not(starts-with(text(),'vasiright'))]";
                description
                  "Specify access group for packets";
                container ingress {
                  xr:xr-xml-map "ip_pfilter_cfg:Outbound";
                  must "access-list-name-1";
                  presence
                    "Indicates an ingress node is configured.";
                  description
                    "IPv4 Packet filter to be applied to inbound
    packets";
                  container access-list-name-1 {
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type xr:Cisco-ios-xr-string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
    
                    container common {
                      presence
                        "Indicates this is a common Access-list name";
                      description
                        "common Access-list name";
                    }  // container common
                  }  // container access-list-name-1
    
                  container access-list-name-2 {
                    must "../access-list-name-1";
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type xr:Cisco-ios-xr-string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
    
                    container common {
                      presence
                        "Indicates this is a common Access-list name";
                      description
                        "common Access-list name";
                    }  // container common
                  }  // container access-list-name-2
    
                  container access-list-name-3 {
                    must "../access-list-name-2";
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
    
                    container common {
                      presence
                        "Indicates this is a common Access-list name";
                      description
                        "common Access-list name";
                    }  // container common
                  }  // container access-list-name-3
    
                  container access-list-name-4 {
                    must "../access-list-name-3";
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
    
                    container common {
                      presence
                        "Indicates this is a common Access-list name";
                      description
                        "common Access-list name";
                    }  // container common
                  }  // container access-list-name-4
    
                  container access-list-name-5 {
                    must "../access-list-name-4";
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
    
                    container common {
                      presence
                        "Indicates this is a common Access-list name";
                      description
                        "common Access-list name";
                    }  // container common
                  }  // container access-list-name-5
    
                  container hardware-count {
                    tailf:dependency "../../../../a1:interface-name";
                    when
                      "../../../../a1:interface-name[not(starts-with(text(),'MgmtEth'))]";
                    presence
                      "Indicates a hardware-count node is configured.";
                    description
                      "Count packets in hardware";
                  }  // container hardware-count
    
                  container interface-statistics {
                    presence
                      "Indicates an interface-statistics node is configured.";
                    description
                      "Per interface statistics in hardware";
                  }  // container interface-statistics
    
                  leaf compress-level {
                    type uint32 {
                      range "0..3";
                    }
                    must
                      "not(../access-list-name-2 or ../access-list-name-1/common)";
                    description
                      "Specify ACL compression in hardware";
                  }
                }  // container ingress
    
                container egress {
                  xr:xr-xml-map "ip_pfilter_cfg:Outbound";
                  presence
                    "Indicates an egress node is configured.";
                  description
                    "IPv4 Packet filter to be applied to outbound
    packets";
                  container access-list-name {
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type xr:Cisco-ios-xr-string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
                  }  // container access-list-name
    
                  container hardware-count {
                    tailf:dependency "../../../../a1:interface-name";
                    when
                      "../../../../a1:interface-name[not(starts-with(text(),'MgmtEth'))]";
                    presence
                      "Indicates a hardware-count node is configured.";
                    description
                      "Count packets in hardware";
                  }  // container hardware-count
    
                  container interface-statistics {
                    presence
                      "Indicates an interface-statistics node is configured.";
                    description
                      "Per interface statistics in hardware";
                  }  // container interface-statistics
    
                  leaf compress-level {
                    type uint32 {
                      range "0..3";
                    }
                    description
                      "Specify ACL compression in hardware";
                  }
                }  // container egress
              }  // container access-group
    
              container forwarding-enable {
                presence
                  "Indicates a forwarding-enable node is configured.";
                description
                  "enable ipv4 forwarding on a interface";
              }  // container forwarding-enable
    
              container point-to-point {
                presence
                  "Indicates a point-to-point node is configured.";
                description
                  "Enable point-to-point handling for this interface.";
              }  // container point-to-point
    
              leaf mtu {
                type uint32 {
                  range "68..65535";
                }
                description
                  "Set IPv4 Maximum Transmission Unit";
              }
    
              container redirects {
                presence
                  "Indicates a redirects node is configured.";
                description
                  "Enable sending ICMP Redirect messages";
              }  // container redirects
    
              container mask-reply {
                presence
                  "Indicates a mask-reply node is configured.";
                description
                  "Enable sending ICMP mask reply messages";
              }  // container mask-reply
    
              container helper-addresses {
                description
                  "Specify a destination address for UDP broadcasts";
                list helper-address {
                  key "address vrf";
                  description
                    "Specify a destination address for UDP broadcasts";
                  leaf address {
                    type inet:ipv4-address-no-zone;
                    description
                      "Specify a destination address for UDP broadcasts";
                  }
    
                  leaf vrf {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description "VRF name";
                  }
                }  // list helper-address
              }  // container helper-addresses
    
              container icmp {
                description
                  "Disable ICMP unreachable for Nullx interface";
                container unreachables {
                  description
                    "Disable sending ICMP Unreachable messages";
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Override sending of ICMP Unreachable messages";
                  }  // container disable
                }  // container unreachables
              }  // container icmp
    
              container unreachables {
                description
                  "Enable sending ICMP Unreachable messages";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Override sending of ICMP Unreachable messages";
                }  // container disable
              }  // container unreachables
    
              container directed-broadcast {
                presence
                  "Indicates a directed-broadcast node is configured.";
                description
                  "Enable forwarding of directed broadcasts";
              }  // container directed-broadcast
    
              container bgp {
                description
                  "Enable BGP policy based feature";
                container policy {
                  description "BGP policy";
                  container accounting {
                    description
                      "BGP policy accounting";
                    container input {
                      must
                        "source-accounting or destination-accounting";
                      presence
                        "Indicates a input node is configured.";
                      description
                        "BGP policy accounting on input";
                      container source-accounting {
                        presence
                          "Indicates a source-accounting node is configured.";
                        description
                          "BGP policy accounting on source IP address";
                      }  // container source-accounting
    
                      container destination-accounting {
                        presence
                          "Indicates a destination-accounting node is configured.";
                        description
                          "BGP policy accounting on destination IP address";
                      }  // container destination-accounting
                    }  // container input
    
                    container output {
                      must
                        "source-accounting or destination-accounting";
                      presence
                        "Indicates a output node is configured.";
                      description
                        "BGP policy accounting on output";
                      container source-accounting {
                        presence
                          "Indicates a source-accounting node is configured.";
                        description
                          "BGP policy accounting on source IP address";
                      }  // container source-accounting
    
                      container destination-accounting {
                        presence
                          "Indicates a destination-accounting node is configured.";
                        description
                          "BGP policy accounting on destination IP address";
                      }  // container destination-accounting
                    }  // container output
                  }  // container accounting
    
                  container propagation {
                    description
                      "BGP QoS/Flow-tag policy propagation";
                    container input {
                      description
                        "Flow type is input";
                      container ip-precedence {
                        description
                          "QPPB using IP Precedence";
                        container source {
                          must
                            "not(../destination or ../../qos-group/source
    or ../../qos-group/destination)";
                          presence
                            "Indicates a source node is configured.";
                          description
                            "QPPB on source IP address";
                          container qos-group {
                            description
                              "QPPB using Qos Group";
                            container source {
                              must
                                "not(../destination)";
                              presence
                                "Indicates a source node is configured.";
                              description
                                "QPPB on source IP address";
                            }  // container source
    
                            container destination {
                              must
                                "not(../source)";
                              presence
                                "Indicates a destination node is configured.";
                              description
                                "QPPB on destination IP address";
                            }  // container destination
                          }  // container qos-group
                        }  // container source
    
                        container destination {
                          must
                            "not(../source or ../../qos-group/source
    or ../../qos-group/destination)";
                          presence
                            "Indicates a destination node is configured.";
                          description
                            "QPPB on destination IP address";
                          container qos-group {
                            description
                              "QPPB using Qos Group";
                            container destination {
                              presence
                                "Indicates a destination node is configured.";
                              description
                                "QPPB on destination IP address";
                            }  // container destination
                          }  // container qos-group
                        }  // container destination
                      }  // container ip-precedence
    
                      container qos-group {
                        description
                          "QPPB using Qos Group";
                        container source {
                          must
                            "not(../destination or ../../ip-precedence/source
    or ../../ip-precedence/destination)";
                          presence
                            "Indicates a source node is configured.";
                          description
                            "QPPB on source IP address";
                          container ip-precedence {
                            description
                              "QPPB using IP Precedence";
                            container destination {
                              presence
                                "Indicates a destination node is configured.";
                              description
                                "QPPB on destination IP address";
                            }  // container destination
                          }  // container ip-precedence
                        }  // container source
    
                        container destination {
                          must
                            "not(../source or ../../ip-precedence/source
    or ../../ip-precedence/destination)";
                          presence
                            "Indicates a destination node is configured.";
                          description
                            "QPPB on destination IP address";
                        }  // container destination
                      }  // container qos-group
    
                      container flow-tag {
                        must
                          "(source or destination) and not(source and destination)";
                        presence
                          "Indicates a flow-tag node is configured.";
                        description
                          "Flow tag policy option";
                        container source {
                          presence
                            "Indicates a source node is configured.";
                          description
                            "Flow-tag policy on source IP address";
                        }  // container source
    
                        container destination {
                          presence
                            "Indicates a destination node is configured.";
                          description
                            "Flow-tag policy on destination IP address";
                        }  // container destination
                      }  // container flow-tag
                    }  // container input
                  }  // container propagation
                }  // container policy
              }  // container bgp
    
              container verify {
                description
                  "Enable per packet validation";
                container unicast {
                  description
                    "Enable per packet validation for unicast";
                  container source {
                    description
                      "Validation of source address";
                    container reachable-via {
                      presence
                        "Indicates a reachable-via node is configured.";
                      description
                        "Specify reachability check to apply to the source address";
                      leaf type {
                        type enumeration {
                          enum "any" {
                            value 0;
                            description
                              "Source is reachable via any interface";
                          }
                          enum "rx" {
                            value 1;
                            description
                              "Source is reachable via interface on which packet was received";
                          }
                        }
                        mandatory true;
                        description
                          "Source reachable type";
                      }
    
                      leaf allow-self-ping {
                        type boolean;
                        mandatory true;
                        description
                          "Allow router to ping itself (opens vulnerability in verification)";
                      }
    
                      leaf allow-default {
                        type boolean;
                        mandatory true;
                        description
                          "Allow default route to match when checking source address";
                      }
                    }  // container reachable-via
                  }  // container source
                }  // container unicast
              }  // container verify
    
              container ttl-propagate {
                description
                  "Disable ip ttl propagation for this interface.";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable ipv4 ttl propagation on this interface";
                }  // container disable
              }  // container ttl-propagate
    
              container tcp-mss-adjust {
                description
                  "Enable tcp mss adjust for this interface.";
                container enable {
                  presence
                    "Indicates a enable node is configured.";
                  description
                    "Enable tcp mss adjust on this interface";
                }  // container enable
              }  // container tcp-mss-adjust
    
              container flowspec {
                description
                  "Flowspec on IPv4 interface";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable flowspec on interface";
                }  // container disable
              }  // container flowspec
    
              container addresses {
                description
                  "Set the IPv4 address of an interface";
                container address {
                  presence
                    "Indicates a address node is configured.";
                  description
                    "IP address and Mask";
                  leaf address {
                    type inet:ipv4-address-no-zone;
                    mandatory true;
                    description "IP address";
                  }
    
                  leaf netmask {
                    type inet:ipv4-address-no-zone;
                    mandatory true;
                    description "IP subnet mask";
                  }
    
                  leaf route-tag {
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "Route-tag to be associated with this address";
                  }
                }  // container address
    
                container secondaries {
                  description
                    "Specify a secondary address";
                  list secondary {
                    key "address";
                    description
                      "IP address and Mask";
                    leaf address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Secondary IP address";
                    }
    
                    leaf netmask {
                      type inet:ipv4-address-no-zone;
                      mandatory true;
                      description "Netmask";
                    }
    
                    leaf route-tag {
                      type uint32 {
                        range "1..4294967295";
                      }
                      description
                        "Route-tag to be associated with this address";
                    }
                  }  // list secondary
                }  // container secondaries
    
                leaf unnumbered {
                  tailf:dependency "../../../a1:interface-name";
                  when
                    "../../../a1:interface-name[not(starts-with(text(),'pw-ether'))]";
                  type xr:Interface-name;
                  description
                    "Enable IP processing without an explicit address";
                }
    
                container dhcp {
                  tailf:dependency "../../../a1:interface-name";
                  when
                    "../../../a1:interface-name[starts-with(text(),'MgmtEth')] or ../../../a1:interface-name[starts-with(text(),'BVI')]";
                  presence
                    "Indicates a dampening node is configured.";
                  description
                    "IPv4 address and Mask negotiated via DHCP";
                }  // container dhcp
              }  // container addresses
            }  // container ipv4
    
            container ipv6 {
              description
                "Interface IPv6 config commands";
              container access-group {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[not(starts-with(text(),'tunnel-gre'))] and ../../a1:interface-name[not(starts-with(text(),'tunnel-te'))] and ../../a1:interface-name[not(starts-with(text(),'Loopback'))] and ../../a1:interface-name[not(starts-with(text(),'vasileft'))] and ../../a1:interface-name[not(starts-with(text(),'vasiright'))]";
                description
                  "Specify access group for packets";
                container ingress {
                  xr:xr-xml-map "ip_pfilter_cfg:Outbound";
                  must "access-list-name-1";
                  presence
                    "Indicates an ingress node is configured.";
                  description
                    "IPv6 Packet filter to be applied to inbound
    packets";
                  container access-list-name-1 {
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type xr:Cisco-ios-xr-string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
    
                    container common {
                      presence
                        "Indicates this is a common Access-list name";
                      description
                        "common Access-list name";
                    }  // container common
                  }  // container access-list-name-1
    
                  container access-list-name-2 {
                    must "../access-list-name-1";
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type xr:Cisco-ios-xr-string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
    
                    container common {
                      presence
                        "Indicates this is a common Access-list name";
                      description
                        "common Access-list name";
                    }  // container common
                  }  // container access-list-name-2
    
                  container access-list-name-3 {
                    must "../access-list-name-2";
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type xr:Cisco-ios-xr-string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
    
                    container common {
                      presence
                        "Indicates this is a common Access-list name";
                      description
                        "common Access-list name";
                    }  // container common
                  }  // container access-list-name-3
    
                  container access-list-name-4 {
                    must "../access-list-name-3";
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type xr:Cisco-ios-xr-string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
    
                    container common {
                      presence
                        "Indicates this is a common Access-list name";
                      description
                        "common Access-list name";
                    }  // container common
                  }  // container access-list-name-4
    
                  container access-list-name-5 {
                    must "../access-list-name-4";
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
    
                    container common {
                      presence
                        "Indicates this is a common Access-list name";
                      description
                        "common Access-list name";
                    }  // container common
                  }  // container access-list-name-5
    
                  container interface-statistics {
                    presence
                      "Indicates an interface-statistics node is configured.";
                    description
                      "Per interface statistics in hardware";
                  }  // container interface-statistics
    
                  leaf compress-level {
                    type uint32 {
                      range "0..3";
                    }
                    must
                      "not(../access-list-name-2 or ../access-list-name-1/common)";
                    description
                      "Specify ACL compression in hardware";
                  }
                }  // container ingress
    
                container egress {
                  xr:xr-xml-map "ip_pfilter_cfg:Outbound";
                  presence
                    "Indicates an egress node is configured.";
                  description
                    "IPv6 Packet filter to be applied to outbound
    packets";
                  container access-list-name-1 {
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type xr:Cisco-ios-xr-string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
                  }  // container access-list-name-1
    
                  container interface-statistics {
                    presence
                      "Indicates an interface-statistics node is configured.";
                    description
                      "Per interface statistics in hardware";
                  }  // container interface-statistics
    
                  leaf compress-level {
                    type uint32 {
                      range "0..3";
                    }
                    description
                      "Specify ACL compression in hardware";
                  }
                }  // container egress
              }  // container access-group
    
              leaf mtu {
                type uint32 {
                  range "1280..65535";
                }
                description
                  "Set IPv6 Maximum Transmission Unit";
              }
    
              container unreachables {
                description
                  "Enable sending ICMP Unreachable messages";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Override sending of ICMP Unreachable messages";
                }  // container disable
              }  // container unreachables
    
              container verify {
                description
                  "Enable per packet validation";
                container unicast {
                  description
                    "Enable per packet validation for unicast";
                  container source {
                    description
                      "Validation of source address";
                    container reachable-via {
                      presence
                        "Indicates a reachable-via node is configured.";
                      description
                        "Specify reachability check to apply to the source address";
                      leaf type {
                        type enumeration {
                          enum "any" {
                            value 0;
                            description
                              "Source is reachable via any interface";
                          }
                          enum "rx" {
                            value 1;
                            description
                              "Source is reachable via interface on which packet was received";
                          }
                        }
                        mandatory true;
                        description
                          "Source reachable type";
                      }
    
                      leaf allow-self-ping {
                        type boolean;
                        mandatory true;
                        description
                          "Allow router to ping itself (opens vulnerability in verification)";
                      }
    
                      leaf allow-default {
                        type boolean;
                        mandatory true;
                        description
                          "Allow default route to match when checking source address";
                      }
                    }  // container reachable-via
                  }  // container source
                }  // container unicast
              }  // container verify
    
              container bgp {
                description
                  "Enable BGP policy based feature";
                container policy {
                  description "BGP policy";
                  container accounting {
                    description
                      "BGP policy accounting";
                    container input {
                      must
                        "source-accounting or destination-accounting";
                      presence
                        "Indicates a input node is configured.";
                      description
                        "BGP policy accounting on input";
                      container source-accounting {
                        presence
                          "Indicates a source-accounting node is configured.";
                        description
                          "BGP policy accounting on source IP address";
                      }  // container source-accounting
    
                      container destination-accounting {
                        presence
                          "Indicates a destination-accounting node is configured.";
                        description
                          "BGP policy accounting on destination IP address";
                      }  // container destination-accounting
                    }  // container input
    
                    container output {
                      must
                        "source-accounting or destination-accounting";
                      presence
                        "Indicates a output node is configured.";
                      description
                        "BGP policy accounting on output";
                      container source-accounting {
                        presence
                          "Indicates a source-accounting node is configured.";
                        description
                          "BGP policy accounting on source IP address";
                      }  // container source-accounting
    
                      container destination-accounting {
                        presence
                          "Indicates a destination-accounting node is configured.";
                        description
                          "BGP policy accounting on destination IP address";
                      }  // container destination-accounting
                    }  // container output
                  }  // container accounting
    
                  container propagation {
                    description
                      "BGP QoS/Flow-tag policy propagation";
                    container input {
                      description
                        "FLow type is input";
                      container ip-precedence {
                        description
                          "QPPB using IP Precedence";
                        container source {
                          must
                            "not(../destination or ../../qos-group/source
    or ../../qos-group/destination)";
                          presence
                            "Indicates a source node is configured.";
                          description
                            "QPPB on source IP address";
                          container qos-group {
                            description
                              "QPPB using Qos Group";
                            container source {
                              must
                                "not(../destination)";
                              presence
                                "Indicates a source node is configured.";
                              description
                                "QPPB on source IP address";
                            }  // container source
    
                            container destination {
                              must
                                "not(../source)";
                              presence
                                "Indicates a destination node is configured.";
                              description
                                "QPPB on destination IP address";
                            }  // container destination
                          }  // container qos-group
                        }  // container source
    
                        container destination {
                          must
                            "not(../source or ../../qos-group/source
    or ../../qos-group/destination)";
                          presence
                            "Indicates a destination node is configured.";
                          description
                            "QPPB on destination IP address";
                          container qos-group {
                            description
                              "QPPB using Qos Group";
                            container destination {
                              presence
                                "Indicates a destination node is configured.";
                              description
                                "QPPB on destination IP address";
                            }  // container destination
                          }  // container qos-group
                        }  // container destination
                      }  // container ip-precedence
    
                      container qos-group {
                        description
                          "QPPB using Qos Group";
                        container source {
                          must
                            "not(../destination or ../../ip-precedence/source
    or ../../ip-precedence/destination)";
                          presence
                            "Indicates a source node is configured.";
                          description
                            "QPPB on source IP address";
                          container ip-precedence {
                            description
                              "QPPB using IP Precedence";
                            container destination {
                              presence
                                "Indicates a destination node is configured.";
                              description
                                "QPPB on destination IP address";
                            }  // container destination
                          }  // container ip-precedence
                        }  // container source
    
                        container destination {
                          must
                            "not(../source or ../../ip-precedence/source
    or ../../ip-precedence/destination)";
                          presence
                            "Indicates a destination node is configured.";
                          description
                            "QPPB on destination IP address";
                        }  // container destination
                      }  // container qos-group
    
                      container flow-tag {
                        must
                          "(source or destination) and not(source and destination)";
                        presence
                          "Indicates a flow-tag node is configured.";
                        description
                          "Flow tag policy option";
                        container source {
                          presence
                            "Indicates a source node is configured.";
                          description
                            "Flow-tag policy on source IP address";
                        }  // container source
    
                        container destination {
                          presence
                            "Indicates a destination node is configured.";
                          description
                            "Flow-tag policy on destination IP address";
                        }  // container destination
                      }  // container flow-tag
                    }  // container input
                  }  // container propagation
                }  // container policy
              }  // container bgp
    
              container ttl-propagate {
                description
                  "Disable ip ttl propagation for this interface.";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable ipv6 ttl propagation on this interface";
                }  // container disable
              }  // container ttl-propagate
    
              container tcp-mss-adjust {
                description
                  "Enable tcp mss adjust for this interface.";
                container enable {
                  presence
                    "Indicates a enable node is configured.";
                  description
                    "Enable tcp mss adjust on this interface";
                }  // container enable
              }  // container tcp-mss-adjust
    
              container flowspec {
                description
                  "Flowspec on IPv6 interface";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable flowspec on interface";
                }  // container disable
              }  // container flowspec
    
              container addresses {
                description
                  "Set the IPv6 address of an interface";
                list ipv6-address {
                  key "address";
                  description "IPv6 address";
                  leaf address {
                    type inet:ip-address-no-zone;
                    description
                      "IPv6 name or address";
                  }
    
                  leaf prefix-length {
                    type xr:Ipv6-prefix-length;
                    mandatory true;
                    description
                      "Prefix length in bits";
                  }
    
                  leaf zone {
                    type union {
                      type string {
                        pattern '0';
                      }
                      type string;
                    }
                    mandatory true;
                    description
                      "IPv6 address zone";
                  }
    
                  leaf route-tag {
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "Route-tag to be associated with this address";
                  }
                }  // list ipv6-address
    
                container link-local-address {
                  presence
                    "Indicates a link-local-address node is configured.";
                  description
                    "Link local IPv6 address";
                  leaf address {
                    type inet:ip-address-no-zone;
                    mandatory true;
                    description "IPv6 address";
                  }
    
                  leaf zone {
                    type union {
                      type string {
                        pattern '0';
                      }
                      type string;
                    }
                    mandatory true;
                    description
                      "IPv6 address zone";
                  }
    
                  leaf route-tag {
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "Route-tag to be associated with this address";
                  }
                }  // container link-local-address
    
                container eui64-addresses {
                  description
                    "EUI-64 IPv6 address";
                  list eui64-address {
                    key "address";
                    description
                      "EUI-64 IPv6 address";
                    leaf address {
                      type inet:ip-address-no-zone;
                      description "IPv6 address";
                    }
    
                    leaf prefix-length {
                      type xr:Ipv6-prefix-length;
                      mandatory true;
                      description
                        "Prefix Length";
                    }
    
                    leaf zone {
                      type union {
                        type string {
                          pattern '0';
                        }
                        type string;
                      }
                      mandatory true;
                      description
                        "IPv6 address zone";
                    }
    
                    leaf route-tag {
                      type uint32 {
                        range "1..4294967295";
                      }
                      description
                        "Route-tag to be associated with this address";
                    }
                  }  // list eui64-address
                }  // container eui64-addresses
    
                container autoconfig {
                  tailf:dependency "../../../a1:interface-name";
                  when
                    "../../../a1:interface-name[starts-with(text(),'MgmtEth')]";
                  presence
                    "Indicates a autoconfig node is configured.";
                  description
                    "Enable slaac on Mgmt interface";
                }  // container autoconfig
    
                container dhcp {
                  tailf:dependency "../../../a1:interface-name";
                  when
                    "../../../a1:interface-name[starts-with(text(),'MgmtEth')] or ../../../a1:interface-name[starts-with(text(),'BVI')]";
                  presence
                    "Indicates a dhcp node is configured.";
                  description
                    "Enable dhcp on this interface";
                }  // container dhcp
    
                container dhcp-client-options {
                  presence
                    "Indicates a dhcp-client-options node is configured.";
                  description
                    "DHCP Client Options";
                }  // container dhcp-client-options
              }  // container addresses
    
              container enable {
                presence
                  "Indicates a dampening node is configured.";
                description
                  "Enable IPv6 on interface";
              }  // container enable
            }  // container ipv6
    
            container dampening {
              tailf:dependency "../interface-name";
              when
                "../interface-name[not(starts-with(text(),'SBC'))] and ../interface-name[not(starts-with(text(),'tunnel-te'))] and ../interface-name[not(starts-with(text(),'tunnel-mte'))] and ../interface-name[not(starts-with(text(),'tunnel-gre'))] and ../interface-name[not(starts-with(text(),'tunnel-ip'))] and ../interface-name[not(starts-with(text(),'VASILeft'))] and ../interface-name[not(starts-with(text(),'VASIRight'))] and ../interface-name[not(starts-with(text(),'service-gre'))] and ../interface-name[not(starts-with(text(),'service-ipsec'))] and ../interface-name[not(starts-with(text(),'InterflexLeft'))] and ../interface-name[not(starts-with(text(),'InterflexRight'))] and ../interface-name[not(starts-with(text(),'CEM'))]";
              presence
                "Indicates a dampening node is configured.";
              description
                "configure state dampening on the given interface";
              container decay-half-life {
                presence
                  "Indicates a decay-half-life node is configured.";
                description
                  "Decay half life (in minutes)";
                leaf value {
                  type uint32 {
                    range "1..45";
                  }
                  mandatory true;
                  description
                    "Decay half life (in minutes)";
                }
    
                container reuse-threshold {
                  must "suppress-threshold";
                  presence
                    "Indicates a reuse-threshold node is configured.";
                  description "Reuse threshold";
                  leaf value {
                    type uint32 {
                      range "1..20000";
                    }
                    mandatory true;
                    description
                      "Reuse threshold";
                  }
    
                  container suppress-threshold {
                    must "max-suppress-time";
                    presence
                      "Indicates a suppress-threshold node is configured.";
                    description
                      "Suppress threshold";
                    leaf value {
                      type uint32 {
                        range "1..20000";
                      }
                      mandatory true;
                      description
                        "Suppress threshold";
                    }
    
                    container max-suppress-time {
                      presence
                        "Indicates a max-suppress-time node is configured.";
                      description
                        "Max suppress time (in minutes)";
                      leaf value {
                        type uint32 {
                          range "1..255";
                        }
                        mandatory true;
                        description
                          "Max suppress time (in minutes)";
                      }
    
                      container restart-penalty {
                        tailf:dependency "../../../../../../interface-name";
                        when
                          "../../../../../../interface-name[not(starts-with(text(),'BVI'))] and ../../../../../../interface-name[not(starts-with(text(),'PW-Ether'))] and ../../../../../../interface-name[not(starts-with(text(),'PW-IW'))] and ../../../../../../interface-name[not(starts-with(text(),'Bundle-Ether'))] and ../../../../../../interface-name[not(starts-with(text(),'Bundle-POS'))] and ../../../../../../interface-name[not(starts-with(text(),'CSI-Ether'))] and ../../../../../../interface-name[not(starts-with(text(),'CSI'))] and ../../../../../../interface-name[not(starts-with(text(),'SFI'))] and ../../../../../../interface-name[not(starts-with(text(),'nve'))] and ../../../../../../interface-name[not(starts-with(text(),'Odu-Group-Mp'))] and ../../../../../../interface-name[not(starts-with(text(),'Odu-Group-Te'))] and ../../../../../../interface-name[not(starts-with(text(),'Loopback'))]";
                        presence
                          "Indicates a restart-penalty node is configured.";
                        description
                          "Restart penalty";
                        leaf value {
                          type uint32 {
                            range "0..20000";
                          }
                          mandatory true;
                          description
                            "Restart penalty";
                        }
                      }  // container restart-penalty
                    }  // container max-suppress-time
                  }  // container suppress-threshold
                }  // container reuse-threshold
              }  // container decay-half-life
            }  // container dampening
    
            container encapsulation {
              tailf:dependency "../interface-name";
              when
                "../interface-name[starts-with(text(),'POS')] or ../interface-name[starts-with(text(),'serial')] or ../interface-name[starts-with(text(),'multilink')]";
              description
                "Set the encapsulation on an interface";
              container ppp {
                presence
                  "Indicates a ppp node is configured.";
                description
                  "Point-to-Point protocol";
              }  // container ppp
    
              container hdlc {
                presence
                  "Indicates a hdlc node is configured.";
                description
                  "Serial HDLC synchronous";
              }  // container hdlc
    
              container mfr {
                tailf:dependency "../../interface-name";
                when
                  "../../interface-name[starts-with(text(),'serial')]";
                presence
                  "Indicates a mfr node is configured.";
                description
                  "Multilink Frame Relay Member Link";
              }  // container mfr
    
              container frame-relay {
                tailf:dependency "../../interface-name";
                when
                  "../../interface-name[not(contains(text(),'.'))]";
                presence
                  "Indicates a frame-relay node is configured.";
                description
                  "Frame Relay networks";
                container IETF {
                  presence
                    "Indicates a IETF node is configured.";
                  description
                    "Use RFC1490/RFC2427 encapsulation";
                }  // container IETF
              }  // container frame-relay
            }  // container encapsulation
    
            container shutdown {
              presence
                "Indicates a shutdown node is configured.";
              description
                "shutdown the given interface";
            }  // container shutdown
    
            leaf mtu {
              tailf:dependency "../interface-name";
              when
                "../interface-name[not(starts-with(text(),'SBC'))] and ../interface-name[not(starts-with(text(),'tunnel-te'))] and ../interface-name[not(starts-with(text(),'tunnel-mte'))] and ../interface-name[not(starts-with(text(),'VASILeft'))] and ../interface-name[not(starts-with(text(),'VASIRight'))] and ../interface-name[not(starts-with(text(),'service-gre'))] and ../interface-name[not(starts-with(text(),'service-ipsec'))] and ../interface-name[not(starts-with(text(),'InterflexLeft'))] and ../interface-name[not(starts-with(text(),'InterflexRight'))] and ../interface-name[not(starts-with(text(),'CEM'))]";
              type uint32 {
                range "64..65535";
              }
              description
                "Set the MTU on an interface";
            }
    
            container logging {
              tailf:dependency "../interface-name";
              when
                "../interface-name[starts-with(text(),'Loopback')] or ../interface-name[starts-with(text(),'Bundle-Ether')] or ../interface-name[starts-with(text(),'Bundle-POS')] or ../interface-name[starts-with(text(),'tunnel')] or ../interface-name[starts-with(text(),'service')] or ../interface-name[starts-with(text(),'Service')] or ../interface-name[starts-with(text(),'VASILeft')] or ../interface-name[starts-with(text(),'VASIRight')] or ../interface-name[starts-with(text(),'FirewallManagement')] or ../interface-name[starts-with(text(),'SBC')] or ../interface-name[starts-with(text(),'InterflexLeft')] or ../interface-name[starts-with(text(),'InterflexRight')] or ../interface-name[starts-with(text(),'BVI')] or ../interface-name[starts-with(text(),'PW-Ether')] or ../interface-name[starts-with(text(),'PW-IW')] or ../interface-name[starts-with(text(),'Odu-Group-Mp')] or ../interface-name[starts-with(text(),'Odu-Group-Te')] or ../interface-name[starts-with(text(),'nve')] or ../interface-name[starts-with(text(),'CSI')] or ../interface-name[starts-with(text(),'SFI')] or ../interface-name[contains(text(),'.')]";
              description
                "Per-interface logging configuration";
              container events {
                description
                  "Per-interface logging events";
                container link-status {
                  presence
                    "Indicates a link-status node is configured.";
                  description
                    "Enable interface and line-protocol state change alarms";
                }  // container link-status
              }  // container events
            }  // container logging
    
            leaf bandwidth {
              tailf:dependency "../interface-name";
              when
                "../interface-name[not(starts-with(text(),'SBC'))] and ../interface-name[not(starts-with(text(),'FirewallManagement'))] and ../interface-name[not(starts-with(text(),'VASILeft'))] and ../interface-name[not(starts-with(text(),'VASIRight'))] and ../interface-name[not(starts-with(text(),'service-gre'))] and ../interface-name[not(starts-with(text(),'service-ipsec'))] and ../interface-name[not(starts-with(text(),'InterflexLeft'))] and ../interface-name[not(starts-with(text(),'InterflexRight'))] and ../interface-name[not(starts-with(text(),'CEM'))]";
              type uint64 {
                range "0..18446744073709551615";
              }
              description
                "Set the bandwidth of an interface";
            }
    
            leaf description {
              type string {
                length "1..1024";
              }
              description
                "Set description for this interface";
            }
    
            container ethernet-services {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[not(starts-with(text(),'tunnel-ip'))] and ../a1:interface-name[not(starts-with(text(),'tunnel-te'))] and ../a1:interface-name[not(starts-with(text(),'Loopback'))] and ../a1:interface-name[not(starts-with(text(),'BVI'))] and ../a1:interface-name[not(starts-with(text(),'MgmtEth'))]";
              description
                "Ethernet related services";
              container access-group {
                description
                  "Specify access control for packets";
                leaf ingress {
                  type xr:Cisco-ios-xr-string {
                    length "1..64";
                  }
                  description
                    "ingress Access-list name";
                }
    
                leaf egress {
                  type xr:Cisco-ios-xr-string {
                    length "1..64";
                  }
                  description
                    "egress Access-list name";
                }
              }  // container access-group
            }  // container ethernet-services
    
            leaf load-interval {
              type uint32 {
                range
                  "0|30|60|90|120|150|180|210|240|270|300|330|360|390|420|450|480|510|540|570|600";
              }
              default "300";
              description
                "Specify interval for load calculation for an interface";
            }
    
            container ipv4 {
              description
                "IPv4 interface subcommands";
              container flowspec {
                description
                  "Flowspec on IPv4 interface";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable FlowSpec on this interface";
                }  // container disable
              }  // container flowspec
            }  // container ipv4
    
            container ipv6 {
              description
                "IPv6 interface subcommands";
              container flowspec {
                description
                  "Flowspec on IPv6 interface";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable flowspec on interface";
                }  // container disable
              }  // container flowspec
            }  // container ipv6
    
            container l2transport {
              presence
                "Indicates a l2transport node is configured.";
              description
                "Enable Layer 2 transport and enter its configuration submode";
              container l2protocol {
                tailf:dependency "../../a1:interface-name";
                when
                  "(../../a1:interface-name[starts-with(text(),'FastEthernet')] or ../../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../../a1:interface-name[starts-with(text(),'TenGigE')] or ../../a1:interface-name[starts-with(text(),'FortyGigE')] or ../../a1:interface-name[starts-with(text(),'HundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../../a1:interface-name[starts-with(text(),'Ethernet')] or ../../a1:interface-name[starts-with(text(),'Bundle-Ether')] or ../../a1:interface-name[starts-with(text(),'PW-Ether')] or ../../a1:interface-name[starts-with(text(),'Interflex')]) and (../../a1:interface-name[not(contains(text(),'.'))] or ../../a1:sub-interface-type/a1:l2transport)";
                description
                  "Layer 2 protocol handling";
                container cpsv {
                  description
                    "CDP, PVST+, STP, and VTP protocols";
                  container tunnel {
                    must
                      "not(../reverse-tunnel) and not(../drop)";
                    presence
                      "Indicates a tunnel node is configured.";
                    description
                      "Tunnel at ingress";
                  }  // container tunnel
    
                  container reverse-tunnel {
                    must
                      "not(../tunnel) and not(../drop)";
                    presence
                      "Indicates a reverse-tunnel node is configured.";
                    description
                      "Tunnel at egress";
                  }  // container reverse-tunnel
    
                  container drop {
                    must
                      "not(../tunnel) and not(../reverse-tunnel)";
                    presence
                      "Indicates a drop node is configured.";
                    description
                      "Drop these protocol packets";
                  }  // container drop
                }  // container cpsv
    
                container cdp {
                  description
                    "Cisco Discovery Protocol";
                  container drop {
                    must
                      "not(../tunnel) and not(../forward)";
                    presence
                      "Indicates a drop node is configured.";
                    description
                      "Drop this protocol's packets";
                  }  // container drop
    
                  container forward {
                    must
                      "not(../drop) and not(../tunnel)";
                    presence
                      "Indicates a forward node is configured.";
                    description
                      "Forward this protocol's packets";
                  }  // container forward
    
                  container tunnel {
                    must
                      "not(../drop) and not(../forward)";
                    presence
                      "Indicates a tunnel node is configured.";
                    description
                      "Tunnel this protocol's packets";
                  }  // container tunnel
    
                  container experimental {
                    description
                      "Modify the MPLS Experimental bits";
                    leaf mpls-experimental-bits {
                      type uint32 {
                        range "0..7";
                      }
                      must
                        "../../forward or ../../tunnel";
                      description
                        "Set the MPLS experimental bits for this interface";
                    }
                  }  // container experimental
                }  // container cdp
    
                container stp {
                  description
                    "Spanning Tree Protocol";
                  container drop {
                    must
                      "not(../tunnel) and not(../forward)";
                    presence
                      "Indicates a drop node is configured.";
                    description
                      "Drop this protocol's packets";
                  }  // container drop
    
                  container forward {
                    must
                      "not(../drop) and not(../tunnel)";
                    presence
                      "Indicates a forward node is configured.";
                    description
                      "Forward this protocol's packets";
                  }  // container forward
    
                  container tunnel {
                    must
                      "not(../drop) and not(../forward)";
                    presence
                      "Indicates a tunnel node is configured.";
                    description
                      "Tunnel this protocol's packets";
                  }  // container tunnel
    
                  container experimental {
                    description
                      "Modify the MPLS Experimental bits";
                    leaf mpls-experimental-bits {
                      type uint32 {
                        range "0..7";
                      }
                      must
                        "../../forward or ../../tunnel";
                      description
                        "Set the MPLS experimental bits for this interface";
                    }
                  }  // container experimental
                }  // container stp
    
                container vtp {
                  description
                    "VLAN Trunk Protocol";
                  container drop {
                    must
                      "not(../tunnel) and not(../forward)";
                    presence
                      "Indicates a drop node is configured.";
                    description
                      "Drop this protocol's packets";
                  }  // container drop
    
                  container forward {
                    must
                      "not(../drop) and not(../tunnel)";
                    presence
                      "Indicates a forward node is configured.";
                    description
                      "Forward this protocol's packets";
                  }  // container forward
    
                  container tunnel {
                    must
                      "not(../drop) and not(../forward)";
                    presence
                      "Indicates a tunnel node is configured.";
                    description
                      "Tunnel this protocol's packets";
                  }  // container tunnel
    
                  container experimental {
                    description
                      "Modify the MPLS Experimental bits";
                    leaf mpls-experimental-bits {
                      type uint32 {
                        range "0..7";
                      }
                      must
                        "../../forward or ../../tunnel";
                      description
                        "Set the MPLS experimental bits for this interface";
                    }
                  }  // container experimental
                }  // container vtp
    
                container pvst {
                  description
                    "Per VLAN Spanning Tree";
                  container drop {
                    must
                      "not(../tunnel) and not(../forward)";
                    presence
                      "Indicates a drop node is configured.";
                    description
                      "Drop this protocol's packets";
                  }  // container drop
    
                  container forward {
                    must
                      "not(../drop) and not(../tunnel)";
                    presence
                      "Indicates a forward node is configured.";
                    description
                      "Forward this protocol's packets";
                  }  // container forward
    
                  container tunnel {
                    must
                      "not(../drop) and not(../forward)";
                    presence
                      "Indicates a tunnel node is configured.";
                    description
                      "Tunnel this protocol's packets";
                  }  // container tunnel
    
                  container experimental {
                    description
                      "Modify the MPLS Experimental bits";
                    leaf mpls-experimental-bits {
                      type uint32 {
                        range "0..7";
                      }
                      must
                        "../../forward or ../../tunnel";
                      description
                        "Set the MPLS experimental bits for this interface";
                    }
                  }  // container experimental
                }  // container pvst
              }  // container l2protocol
    
              container propagate {
                description
                  "Select events to propagate";
                container remote-status {
                  presence
                    "Indicates a remote-status node is configured.";
                  description
                    "Propagate remote link status changes";
                }  // container remote-status
              }  // container propagate
    
              container flow {
                description
                  "Netflow configuration";
                container datalinkframesection {
                  if-feature nf_parser_verify_wrapper_allow_l2_main_dlfs;
                  description
                    "Data link section netflow configuration";
                  container monitor {
                    description
                      "Specify a flow monitor for packets";
                    container ingress-monitors {
                      description
                        "Apply flow monitor on incoming packets";
                      list ingress-monitor {
                        key "monitor-map-name";
                        description
                          "Specify a flow monitor for packets";
                        leaf monitor-map-name {
                          type xr:Cisco-ios-xr-string {
                            length "1..32";
                          }
                          description
                            "Specify a flow monitor for packets";
                        }
                      }  // list ingress-monitor
                    }  // container ingress-monitors
    
                    container ingress-monitor-samplers {
                      description
                        "Specify a flow monitor and sampler for incoming packets";
                      list ingress-monitor-sampler {
                        key "monitor-map-name sampler-map-name";
                        description
                          "Specify a flow monitor and sampler for incoming packets";
                        leaf monitor-map-name {
                          type xr:Cisco-ios-xr-string {
                            length "1..32";
                          }
                          description
                            "Specify a flow monitor for packets";
                        }
    
                        leaf sampler-map-name {
                          type xr:Cisco-ios-xr-string {
                            length "1..32";
                          }
                          description
                            "Specify a sampler for packets";
                        }
                      }  // list ingress-monitor-sampler
                    }  // container ingress-monitor-samplers
                  }  // container monitor
                }  // container datalinkframesection
              }  // container flow
    
              container monitor-sessions {
                description
                  "Monitor-session configuration commands";
                list monitor-session {
                  must
                    "ethernet or ipv4 or ipv6 or mpls-ipv4 or mpls-ipv6";
                  key "session-name";
                  description
                    "Monitor-session configuration commands";
                  leaf session-name {
                    type string {
                      length "1..79";
                    }
                    description
                      "Monitor-session configuration commands";
                  }
    
                  container ethernet {
                    must
                      "not(../ipv4 or ../ipv6 or ../mpls-ipv4 or ../mpls-ipv6)";
                    presence
                      "Indicates a ethernet node is configured.";
                    description
                      "Replicate Ethernet traffic";
                  }  // container ethernet
    
                  container ipv4 {
                    must
                      "not(../ethernet or ../ipv6 or ../mpls-ipv4 or ../mpls-ipv6)";
                    presence
                      "Indicates a ipv4 node is configured.";
                    description
                      "Replicate IPv4 traffic";
                  }  // container ipv4
    
                  container ipv6 {
                    must
                      "not(../ipv4 or ../ethernet or ../mpls-ipv4 or ../mpls-ipv6)";
                    presence
                      "Indicates a ipv6 node is configured.";
                    description
                      "Replicate IPv6 traffic";
                  }  // container ipv6
    
                  container mpls-ipv4 {
                    must
                      "not(../ipv4 or ../ipv6 or ../ethernet or ../mpls-ipv6)";
                    presence
                      "Indicates a mpls-ipv4 node is configured.";
                    description
                      "Replicate MPLS-IPv4 traffic";
                  }  // container mpls-ipv4
    
                  container mpls-ipv6 {
                    must
                      "not(../ipv4 or ../ipv6 or ../mpls-ipv4 or ../ethernet)";
                    presence
                      "Indicates a mpls-ipv6 node is configured.";
                    description
                      "Replicate MPLS-IPv6 traffic";
                  }  // container mpls-ipv6
    
                  container direction {
                    description
                      "Specify the direction of traffic to replicate";
                    container rx-only {
                      must "not(../tx-only)";
                      presence
                        "Indicates a rx-only node is configured.";
                      description
                        "Replicate only received (ingress) traffic";
                    }  // container rx-only
    
                    container tx-only {
                      must "not(../rx-only)";
                      presence
                        "Indicates a tx-only node is configured.";
                      description
                        "Replicate only transmitted (egress) traffic";
                    }  // container tx-only
                  }  // container direction
    
                  container port-level {
                    presence
                      "Indicates a port-level node is configured.";
                    description
                      "Replicate traffic on all interfaces of a main interface";
                  }  // container port-level
    
                  container acl {
                    presence
                      "Indicates a acl node is configured.";
                    description
                      "Enable acl based mirroring";
                    leaf acl-name {
                      type xr:Cisco-ios-xr-string {
                        length "1..80";
                      }
                      description "ACL name";
                    }
                  }  // container acl
    
                  leaf acl-ipv4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..80";
                    }
                    description
                      "Enable IPv4 ACL based mirroring";
                  }
    
                  leaf acl-ipv6 {
                    type xr:Cisco-ios-xr-string {
                      length "1..80";
                    }
                    description
                      "Enable IPv6 ACL based mirroring";
                  }
    
                  container mirror {
                    description
                      "Set the mirroring properties of this interface";
                    leaf first {
                      type uint32 {
                        range "1..10000";
                      }
                      description
                        "Enable mirroring on the first portion of a packet";
                    }
    
                    leaf interval {
                      type enumeration {
                        enum "512" {
                          value 1;
                          description
                            "Mirror 1 in every 512 packets";
                        }
                        enum "1K" {
                          value 2;
                          description
                            "Mirror 1 in every 1024 packets";
                        }
                        enum "2K" {
                          value 3;
                          description
                            "Mirror 1 in every 2048 packets";
                        }
                        enum "4K" {
                          value 4;
                          description
                            "Mirror 1 in every 4096 packets";
                        }
                        enum "8K" {
                          value 5;
                          description
                            "Mirror 1 in every 8192 packets";
                        }
                        enum "16K" {
                          value 6;
                          description
                            "Mirror 1 in every 16384 packets";
                        }
                      }
                      description
                        "Enable mirroring of every Nth packet";
                    }
                  }  // container mirror
                }  // list monitor-session
              }  // container monitor-sessions
    
              container monitor-session-deprecated {
                description
                  "Monitor-session deprecated configuration commands";
                container ethernet {
                  presence
                    "Indicates a ethernet node is configured.";
                  description
                    "Replicate Ethernet traffic";
                  leaf session-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..79";
                    }
                    mandatory true;
                    description "Session Name";
                  }
    
                  container direction {
                    description
                      "Specify the direction of traffic to replicate";
                    container rx-only {
                      must "not(../tx-only)";
                      presence
                        "Indicates a rx-only node is configured.";
                      description
                        "Replicate only received (ingress) traffic";
                    }  // container rx-only
    
                    container tx-only {
                      must "not(../rx-only)";
                      presence
                        "Indicates a tx-only node is configured.";
                      description
                        "Replicate only transmitted (egress) traffic";
                    }  // container tx-only
                  }  // container direction
    
                  container acl {
                    presence
                      "Indicates a acl node is configured.";
                    description
                      "Enable acl based mirroring";
                    leaf acl-name {
                      type xr:Cisco-ios-xr-string {
                        length "1..80";
                      }
                      description "ACL name";
                    }
                  }  // container acl
    
                  leaf acl-ipv4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..80";
                    }
                    description
                      "Enable IPv4 ACL based mirroring";
                  }
    
                  leaf acl-ipv6 {
                    type xr:Cisco-ios-xr-string {
                      length "1..80";
                    }
                    description
                      "Enable IPv6 ACL based mirroring";
                  }
    
                  container mirror {
                    description
                      "Set the mirroring properties of this interface";
                    leaf first {
                      type uint32 {
                        range "1..10000";
                      }
                      description
                        "Enable mirroring on the first portion of a packet";
                    }
    
                    leaf interval {
                      type enumeration {
                        enum "512" {
                          value 1;
                          description
                            "Mirror 1 in every 512 packets";
                        }
                        enum "1K" {
                          value 2;
                          description
                            "Mirror 1 in every 1024 packets";
                        }
                        enum "2K" {
                          value 3;
                          description
                            "Mirror 1 in every 2048 packets";
                        }
                        enum "4K" {
                          value 4;
                          description
                            "Mirror 1 in every 4096 packets";
                        }
                        enum "8K" {
                          value 5;
                          description
                            "Mirror 1 in every 8192 packets";
                        }
                        enum "16K" {
                          value 6;
                          description
                            "Mirror 1 in every 16384 packets";
                        }
                      }
                      description
                        "Enable mirroring of every Nth packet";
                    }
                  }  // container mirror
    
                  container port-level {
                    presence
                      "Indicates a port-level node is configured.";
                    description
                      "Replicate traffic on all interfaces of a main interface";
                  }  // container port-level
                }  // container ethernet
              }  // container monitor-session-deprecated
            }  // container l2transport
    
            container carrier-delay {
              tailf:dependency "../a1:interface-name";
              when
                "(../a1:interface-name[starts-with(text(),'FastEthernet')] or ../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')] or ../a1:interface-name[starts-with(text(),'Bundle-Ether')] or ../a1:interface-name[starts-with(text(),'PW-Ether')])and ../a1:interface-name[contains(text(),'.')]";
              description
                "Set the carrier delay on an interface";
              leaf up {
                type uint32 {
                  range "1..65535";
                }
                description
                  "Set the carrier delay up value";
              }
            }  // container carrier-delay
    
            container encapsulation {
              tailf:dependency "../a1:interface-name";
              when
                "(../a1:interface-name[starts-with(text(),'FastEthernet')] or ../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')] or ../a1:interface-name[starts-with(text(),'Bundle-Ether')] or ../a1:interface-name[starts-with(text(),'PW-Ether')])and ../a1:interface-name[contains(text(),'.')]and not(../a1:sub-interface-type/a1:l2transport)";
              description
                "Specify which packets will be matched by this sub-interface";
              container dot1q {
                description
                  "IEEE 802.1Q VLAN-tagged packets";
                leaf vlan-id {
                  type uint32 {
                    range "1..4094";
                  }
                  description
                    "Configure first (outer) VLAN ID on the subinterface";
                }
    
                leaf second-dot1q {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id";
                  description
                    "Configure second (inner 802.1Q) VLAN ID on the subinterface";
                }
              }  // container dot1q
    
              container dot1ad {
                description
                  "IEEE 802.1ad VLAN-tagged packets";
                leaf vlan-id {
                  type uint32 {
                    range "1..4094";
                  }
                  description
                    "Configure first (outer) VLAN ID on the subinterface";
                }
    
                leaf dot1q {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id";
                  description
                    "Configure second (inner 802.1Q) VLAN ID on the subinterface";
                }
              }  // container dot1ad
            }  // container encapsulation
    
            container l2transport-encapsulation {
              tailf:dependency "../a1:interface-name";
              when
                "(../a1:interface-name[starts-with(text(),'FastEthernet')] or ../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')] or ../a1:interface-name[starts-with(text(),'Bundle-Ether')] or ../a1:interface-name[starts-with(text(),'PW-Ether')])and ../a1:interface-name[contains(text(),'.')]and ../a1:sub-interface-type/a1:l2transport";
              description
                "Specify which packets will be matched by this sub-interface";
              container dot1q {
                description
                  "IEEE 802.1Q VLAN-tagged packets";
                leaf vlan-id {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "any" {
                        value 4096;
                        description
                          "Match any VLAN id";
                      }
                    }
                  }
                  must "not(../priority-tagged)";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "not-set" {
                        value 4097;
                        description
                          "Need to set this when configuring additional vlan-id with a single VLAN id";
                      }
                    }
                  }
                  must
                    "../vlan-id and ../vlan-id != 'any'";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-2 {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "untagged" {
                        value 65534;
                        description
                          "Packets with no explicit VLAN tag";
                      }
                    }
                  }
                  must
                    "../vlan-id and ../vlan-id != 'any' and ../end-vlan-id";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-2 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-2";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-3 {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "untagged" {
                        value 65534;
                        description
                          "Packets with no explicit VLAN tag";
                      }
                    }
                  }
                  must "../vlan-id-2";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-3 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-3";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-4 {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "untagged" {
                        value 65534;
                        description
                          "Packets with no explicit VLAN tag";
                      }
                    }
                  }
                  must "../vlan-id-3";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-4 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-4";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-5 {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "untagged" {
                        value 65534;
                        description
                          "Packets with no explicit VLAN tag";
                      }
                    }
                  }
                  must "../vlan-id-4";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-5 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-5";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-6 {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "untagged" {
                        value 65534;
                        description
                          "Packets with no explicit VLAN tag";
                      }
                    }
                  }
                  must "../vlan-id-5";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-6 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-6";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-7 {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "untagged" {
                        value 65534;
                        description
                          "Packets with no explicit VLAN tag";
                      }
                    }
                  }
                  must "../vlan-id-6";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-7 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-7";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-8 {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "untagged" {
                        value 65534;
                        description
                          "Packets with no explicit VLAN tag";
                      }
                    }
                  }
                  must "../vlan-id-7";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-8 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-8";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-9 {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "untagged" {
                        value 65534;
                        description
                          "Packets with no explicit VLAN tag";
                      }
                    }
                  }
                  must "../vlan-id-8";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-9 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-9";
                  description
                    "End of VLAN range";
                }
    
                leaf second-dot1q {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "any" {
                        value 4096;
                        description
                          "Match any VLAN id";
                      }
                    }
                  }
                  must "../vlan-id";
                  description
                    "End of VLAN range";
                }
    
                container exact {
                  presence
                    "Indicates this node is configured.";
                  description
                    "Do not allow further inner tags";
                }  // container exact
    
                container ingress {
                  description
                    "Perform MAC-based matching";
                  leaf source-mac {
                    type yang:mac-address;
                    description
                      "Perform source MAC-based matching";
                  }
                }  // container ingress
    
                container priority-tagged {
                  must "not(../vlan-id)";
                  presence
                    "Indicates a priority-tagged node is configured.";
                  description
                    "IEEE 802.1ad priority-tagged packets";
                  container dot1q {
                    presence
                      "Indicates a dot1q node is configured.";
                    description
                      "IEEE 802.1Q VLAN-tagged packets";
                    leaf vlan-id {
                      type union {
                        type uint32 {
                          range "1..4094";
                        }
                        type enumeration {
                          enum "any" {
                            value 4096;
                            description
                              "Match any VLAN id";
                          }
                        }
                      }
                      mandatory true;
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id != 'any'";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-2 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id != 'any'";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-2 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-2";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-3 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-2";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-3 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-3";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-4 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-3";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-4 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-4";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-5 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-4";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-5 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-5";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-6 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-5";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-6 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-6";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-7 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-6";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-7 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-7";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-8 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-7";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-8 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-8";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-9 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-8";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-9 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-9";
                      description
                        "End of VLAN range";
                    }
                  }  // container dot1q
    
                  container exact {
                    presence
                      "Indicates this node is configured.";
                    description
                      "Do not allow further inner tags";
                  }  // container exact
    
                  container ingress {
                    description
                      "Perform MAC-based matching";
                    leaf source-mac {
                      type yang:mac-address;
                      description
                        "Perform source MAC-based matching";
                    }
                  }  // container ingress
                }  // container priority-tagged
              }  // container dot1q
    
              container dot1ad {
                description
                  "IEEE 802.1ad VLAN-tagged packets";
                leaf vlan-id {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "any" {
                        value 4096;
                        description
                          "Match any VLAN id";
                      }
                    }
                  }
                  must "not(../priority-tagged)";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "not-set" {
                        value 4097;
                        description
                          "Need to set this when configuring additional vlan-id with a single VLAN id";
                      }
                    }
                  }
                  must
                    "../vlan-id and ../vlan-id != 'any'";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-2 {
                  type uint32 {
                    range "1..4094";
                  }
                  must
                    "../vlan-id and ../vlan-id != 'any' and ../end-vlan-id";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-2 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-2";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-3 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-2";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-3 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-3";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-4 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-3";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-4 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-4";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-5 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-4";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-5 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-5";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-6 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-5";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-6 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-6";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-7 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-6";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-7 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-7";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-8 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-7";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-8 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-8";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-9 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-8";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-9 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-9";
                  description
                    "End of VLAN range";
                }
    
                leaf dot1q {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "any" {
                        value 4096;
                        description
                          "Match any VLAN id";
                      }
                    }
                  }
                  must "../vlan-id";
                  description
                    "End of VLAN range";
                }
    
                container exact {
                  presence
                    "Indicates this node is configured.";
                  description
                    "Do not allow further inner tags";
                }  // container exact
    
                container ingress {
                  description
                    "Perform MAC-based matching";
                  leaf source-mac {
                    type yang:mac-address;
                    description
                      "Perform source MAC-based matching";
                  }
                }  // container ingress
    
                container priority-tagged {
                  must "not(../vlan-id)";
                  presence
                    "Indicates a priority-tagged node is configured.";
                  description
                    "IEEE 802.1ad priority-tagged packets";
                  container dot1q {
                    presence
                      "Indicates a dot1q node is configured.";
                    description
                      "IEEE 802.1Q VLAN-tagged packets";
                    leaf vlan-id {
                      type union {
                        type uint32 {
                          range "1..4094";
                        }
                        type enumeration {
                          enum "any" {
                            value 4096;
                            description
                              "Match any VLAN id";
                          }
                        }
                      }
                      mandatory true;
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id != 'any'";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-2 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id != 'any'";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-2 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-2";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-3 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-2";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-3 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-3";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-4 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-3";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-4 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-4";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-5 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-4";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-5 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-5";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-6 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-5";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-6 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-6";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-7 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-6";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-7 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-7";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-8 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-7";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-8 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-8";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-9 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-8";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-9 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-9";
                      description
                        "End of VLAN range";
                    }
                  }  // container dot1q
    
                  container exact {
                    presence
                      "Indicates this node is configured.";
                    description
                      "Do not allow further inner tags";
                  }  // container exact
    
                  container ingress {
                    description
                      "Perform MAC-based matching";
                    leaf source-mac {
                      type yang:mac-address;
                      description
                        "Perform source MAC-based matching";
                    }
                  }  // container ingress
                }  // container priority-tagged
              }  // container dot1ad
    
              container untagged {
                presence
                  "Indicates untagged node is configured.";
                description
                  "Packets with no explicit VLAN tag";
                container dot1q {
                  presence
                    "Indicates a dot1q node is configured.";
                  description
                    "IEEE 802.1Q VLAN-tagged packets";
                  leaf vlan-id {
                    type union {
                      type uint32 {
                        range "1..4094";
                      }
                      type enumeration {
                        enum "any" {
                          value 4096;
                          description
                            "Match any VLAN id";
                        }
                      }
                    }
                    mandatory true;
                    description
                      "Single VLAN id or start of VLAN range";
                  }
    
                  leaf end-vlan-id {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id != 'any'";
                    description
                      "End of VLAN range";
                  }
    
                  leaf vlan-id-2 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id != 'any'";
                    description
                      "Single VLAN id or start of VLAN range";
                  }
    
                  leaf end-vlan-id-2 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-2";
                    description
                      "End of VLAN range";
                  }
    
                  leaf vlan-id-3 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-2";
                    description
                      "Single VLAN id or start of VLAN range";
                  }
    
                  leaf end-vlan-id-3 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-3";
                    description
                      "End of VLAN range";
                  }
    
                  leaf vlan-id-4 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-3";
                    description
                      "Single VLAN id or start of VLAN range";
                  }
    
                  leaf end-vlan-id-4 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-4";
                    description
                      "End of VLAN range";
                  }
    
                  leaf vlan-id-5 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-4";
                    description
                      "Single VLAN id or start of VLAN range";
                  }
    
                  leaf end-vlan-id-5 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-5";
                    description
                      "End of VLAN range";
                  }
    
                  leaf vlan-id-6 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-5";
                    description
                      "Single VLAN id or start of VLAN range";
                  }
    
                  leaf end-vlan-id-6 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-6";
                    description
                      "End of VLAN range";
                  }
    
                  leaf vlan-id-7 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-6";
                    description
                      "Single VLAN id or start of VLAN range";
                  }
    
                  leaf end-vlan-id-7 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-7";
                    description
                      "End of VLAN range";
                  }
    
                  leaf vlan-id-8 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-7";
                    description
                      "Single VLAN id or start of VLAN range";
                  }
    
                  leaf end-vlan-id-8 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-8";
                    description
                      "End of VLAN range";
                  }
    
                  leaf vlan-id-9 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-8";
                    description
                      "Single VLAN id or start of VLAN range";
                  }
    
                  leaf end-vlan-id-9 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-9";
                    description
                      "End of VLAN range";
                  }
                }  // container dot1q
    
                container ingress {
                  description
                    "Perform MAC-based matching";
                  leaf source-mac {
                    type yang:mac-address;
                    description
                      "Perform source MAC-based matching";
                  }
                }  // container ingress
              }  // container untagged
    
              container default {
                presence
                  "Indicates default node is configured.";
                description
                  "Packets unmatched by other service instances";
              }  // container default
            }  // container l2transport-encapsulation
    
            container rewrite {
              description
                "Set the tag rewriting policy for this EFP";
              container ingress {
                description
                  "Set the tag rewriting policy for this EFP";
                container tag {
                  description
                    "Set the tag rewriting policy for this EFP";
                  container push {
                    description
                      "Push one or more tags";
                    container dot1q {
                      must
                        "not(../dot1ad or
        ../../pop/one or
        ../../pop/two or
        ../../translate/one-to-one/dot1q or
        ../../translate/one-to-one/dot1ad or
        ../../translate/one-to-two/dot1q or
        ../../translate/one-to-two/dot1ad or
        ../../translate/two-to-one/dot1q or
        ../../translate/two-to-one/dot1ad or
        ../../translate/two-to-two/dot1q or
        ../../translate/two-to-two/dot1ad)";
                      presence
                        "Indicates dot1q node is configured.";
                      description
                        "Push a Dot1Q tag";
                      leaf vlan-id {
                        type uint32 {
                          range "1..4094";
                        }
                        mandatory true;
                        description
                          "Push a Dot1Q tag";
                      }
    
                      leaf second-dot1q {
                        type uint32 {
                          range "1..4094";
                        }
                        description
                          "Push another Dot1Q tag";
                      }
                    }  // container dot1q
    
                    container dot1ad {
                      must
                        "not(../dot1q or
        ../../pop/one or
        ../../pop/two or
        ../../translate/one-to-one/dot1q or
        ../../translate/one-to-one/dot1ad or
        ../../translate/one-to-two/dot1q or
        ../../translate/one-to-two/dot1ad or
        ../../translate/two-to-one/dot1q or
        ../../translate/two-to-one/dot1ad or
        ../../translate/two-to-two/dot1q or
        ../../translate/two-to-two/dot1ad)";
                      presence
                        "Indicates dot1ad node is configured.";
                      description
                        "Push a Dot1ad tag";
                      leaf vlan-id {
                        type uint32 {
                          range "1..4094";
                        }
                        mandatory true;
                        description
                          "Push a Dot1Q tag";
                      }
    
                      leaf dot1q {
                        type uint32 {
                          range "1..4094";
                        }
                        description
                          "Push an inner Dot1Q tag";
                      }
                    }  // container dot1ad
                  }  // container push
    
                  container pop {
                    description
                      "Remove one or more tags";
                    container one {
                      must
                        "not(../../push/dot1q or
        ../../push/dot1ad or
        ../two or
        ../../translate/one-to-one/dot1q or
        ../../translate/one-to-one/dot1ad or
        ../../translate/one-to-two/dot1q or
        ../../translate/one-to-two/dot1ad or
        ../../translate/two-to-one/dot1q or
        ../../translate/two-to-one/dot1ad or
        ../../translate/two-to-two/dot1q or
        ../../translate/two-to-two/dot1ad)";
                      presence
                        "Indicates this node is configured.";
                      description
                        "Remove outer tag only";
                    }  // container one
    
                    container two {
                      must
                        "not(../../push/dot1q or
        ../../push/dot1ad or
        ../one or
        ../../translate/one-to-one/dot1q or
        ../../translate/one-to-one/dot1ad or
        ../../translate/one-to-two/dot1q or
        ../../translate/one-to-two/dot1ad or
        ../../translate/two-to-one/dot1q or
        ../../translate/two-to-one/dot1ad or
        ../../translate/two-to-two/dot1q or
        ../../translate/two-to-two/dot1ad)";
                      presence
                        "Indicates this node is configured.";
                      description
                        "Remove two outermost tags";
                    }  // container two
                  }  // container pop
    
                  container translate {
                    description
                      "Replace tags with other tags";
                    container one-to-one {
                      description
                        "Replace the outermost tag with another tag";
                      container dot1q {
                        must
                          "not(../../../push/dot1q or
        ../../../push/dot1ad or
        ../../../pop/one or
        ../../../pop/two or
        ../dot1ad or
        ../../one-to-two/dot1q or
        ../../one-to-two/dot1ad or
        ../../two-to-one/dot1q or
        ../../two-to-one/dot1ad or
        ../../two-to-two/dot1q or
        ../../two-to-two/dot1ad)";
                        presence
                          "Indicates dot1q node is configured.";
                        description
                          "Push a Dot1Q tag";
                        leaf vlan-id {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push a Dot1Q tag";
                        }
                      }  // container dot1q
    
                      container dot1ad {
                        must
                          "not(../../../push/dot1q or
        ../../../push/dot1ad or
        ../../../pop/one or
        ../../../pop/two or
        ../dot1q or
        ../../one-to-two/dot1q or
        ../../one-to-two/dot1ad or
        ../../two-to-one/dot1q or
        ../../two-to-one/dot1ad or
        ../../two-to-two/dot1q or
        ../../two-to-two/dot1ad)";
                        presence
                          "Indicates dot1ad node is configured.";
                        description
                          "Push a Dot1ad tag";
                        leaf vlan-id {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push a Dot1Q tag";
                        }
                      }  // container dot1ad
                    }  // container one-to-one
    
                    container one-to-two {
                      description
                        "Replace the outermost tag with two tags";
                      container dot1q {
                        must
                          "not(../../../push/dot1q or
        ../../../push/dot1ad or
        ../../../pop/one or
        ../../../pop/two or
        ../../one-to-one/dot1q or
        ../../one-to-one/dot1ad or
        ../dot1ad or
        ../../two-to-one/dot1q or
        ../../two-to-one/dot1ad or
        ../../two-to-two/dot1q or
        ../../two-to-two/dot1ad)";
                        presence
                          "Indicates a dot1q node is configured.";
                        description
                          "Push a Dot1Q tag";
                        leaf vlan-id {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push a Dot1Q tag";
                        }
    
                        leaf second-dot1q {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push an inner Dot1Q tag";
                        }
                      }  // container dot1q
    
                      container dot1ad {
                        must
                          "not(../../../push/dot1q or
        ../../../push/dot1ad or
        ../../../pop/one or
        ../../../pop/two or
        ../../one-to-one/dot1q or
        ../../one-to-one/dot1ad or
        ../dot1q or
        ../../two-to-one/dot1q or
        ../../two-to-one/dot1ad or
        ../../two-to-two/dot1q or
        ../../two-to-two/dot1ad)";
                        presence
                          "Indicates a dot1ad node is configured.";
                        description
                          "Push a Dot1ad tag";
                        leaf vlan-id {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push a Dot1Q tag";
                        }
    
                        leaf dot1q {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push an inner Dot1Q tag";
                        }
                      }  // container dot1ad
                    }  // container one-to-two
    
                    container two-to-one {
                      description
                        "Replace the outermost two tags with one tag";
                      container dot1q {
                        must
                          "not(../../../push/dot1q or
        ../../../push/dot1ad or
        ../../../pop/one or
        ../../../pop/two or
        ../../one-to-one/dot1q or
        ../../one-to-one/dot1ad or
        ../../one-to-two/dot1q or
        ../../one-to-two/dot1ad or
        ../dot1ad or
        ../../two-to-two/dot1q or
        ../../two-to-two/dot1ad)";
                        presence
                          "Indicates dot1q node is configured.";
                        description
                          "Push a Dot1Q tag";
                        leaf vlan-id {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push a Dot1Q tag";
                        }
                      }  // container dot1q
    
                      container dot1ad {
                        must
                          "not(../../../push/dot1q or
        ../../../push/dot1ad or
        ../../../pop/one or
        ../../../pop/two or
        ../../one-to-one/dot1q or
        ../../one-to-one/dot1ad or
        ../../one-to-two/dot1q or
        ../../one-to-two/dot1ad or
        ../dot1q or
        ../../two-to-two/dot1q or
        ../../two-to-two/dot1ad)";
                        presence
                          "Indicates dot1ad node is configured.";
                        description
                          "Push a Dot1ad tag";
                        leaf vlan-id {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push a Dot1Q tag";
                        }
                      }  // container dot1ad
                    }  // container two-to-one
    
                    container two-to-two {
                      description
                        "Replace the outermost two tags with two other tags";
                      container dot1q {
                        must
                          "not(../../../push/dot1q or
        ../../../push/dot1ad or
        ../../../pop/one or
        ../../../pop/two or
        ../../one-to-one/dot1q or
        ../../one-to-one/dot1ad or
        ../../one-to-two/dot1q or
        ../../one-to-two/dot1ad or
        ../dot1ad or
        ../../two-to-one/dot1q or
        ../../two-to-one/dot1ad)";
                        presence
                          "Indicates a dot1q node is configured.";
                        description
                          "Push a Dot1Q tag";
                        leaf vlan-id {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push a Dot1Q tag";
                        }
    
                        leaf second-dot1q {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push an inner Dot1Q tag";
                        }
                      }  // container dot1q
    
                      container dot1ad {
                        must
                          "not(../../../push/dot1q or
        ../../../push/dot1ad or
        ../../../pop/one or
        ../../../pop/two or
        ../../one-to-one/dot1q or
        ../../one-to-one/dot1ad or
        ../../one-to-two/dot1q or
        ../../one-to-two/dot1ad or
        ../dot1q or
        ../../two-to-one/dot1q or
        ../../two-to-one/dot1ad)";
                        presence
                          "Indicates a dot1ad node is configured.";
                        description
                          "Push a Dot1ad tag";
                        leaf vlan-id {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push a Dot1Q tag";
                        }
    
                        leaf dot1q {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push an inner Dot1Q tag";
                        }
                      }  // container dot1ad
                    }  // container two-to-two
                  }  // container translate
                }  // container tag
              }  // container ingress
            }  // container rewrite
    
            container local-traffic {
              description
                "Set the default encapsulation for this EFP";
              container default {
                description
                  "Set the default encapsulation for this EFP";
                container encapsulation {
                  description
                    "Set the default encapsulation for this EFP";
                  container dot1q {
                    presence
                      "Indicates a dot1q node is configured.";
                    description
                      "Default Dot1Q tag";
                    leaf vlan-id {
                      type uint32 {
                        range "1..4094";
                      }
                      mandatory true;
                      description
                        "Default Dot1Q tag";
                    }
    
                    leaf second-dot1q {
                      type uint32 {
                        range "1..4094";
                      }
                      description
                        "Default second Dot1Q tag";
                    }
                  }  // container dot1q
    
                  container dot1ad {
                    presence
                      "Indicates a dot1ad node is configured.";
                    description
                      "Default Dot1ad tag";
                    leaf vlan-id {
                      type uint32 {
                        range "1..4094";
                      }
                      mandatory true;
                      description
                        "Default Dot1ad tag";
                    }
    
                    leaf dot1q {
                      type uint32 {
                        range "1..4094";
                      }
                      description
                        "Default inner Dot1Q tag";
                    }
                  }  // container dot1ad
                }  // container encapsulation
              }  // container default
            }  // container local-traffic
    
            container dot1q {
              description
                "802.1Q VLAN configuration";
              container native {
                description
                  "802.1Q Native VLAN configuration";
                leaf vlan {
                  type uint32 {
                    range "1..4094";
                  }
                  description
                    "Configure the Native VLAN ID for the trunk";
                }
              }  // container native
    
              container tunneling {
                description
                  "Q-in-Q configuration";
                leaf ethertype {
                  type enumeration {
                    enum "0x9100" {
                      value 37120;
                      description
                        "The outer Ethertype uses value 0x9100 (default is 0x8100)";
                    }
                    enum "0x9200" {
                      value 37376;
                      description
                        "The outer Ethertype uses value 0x9200 (default is 0x8100)";
                    }
                  }
                  description
                    "Configure the outer Ethertype used for Q-in-Q frames";
                }
              }  // container tunneling
            }  // container dot1q
    
            container mac-accounting {
              description
                "Start per MAC address accounting on the interface";
              container ingress {
                presence
                  "Indicates a ingress node is configured.";
                description
                  "Enable accounting on ingress direction";
              }  // container ingress
    
              container egress {
                presence
                  "Indicates a egress node is configured.";
                description
                  "Enable accounting on egress direction";
              }  // container egress
            }  // container mac-accounting
    
            container vlan-switched {
              description
                "Enable vlan-switched on this interface";
              container trunk {
                description
                  "Enable vlan-switched on trunk port";
                container dot1q {
                  description
                    "IEEE 802.1Q VLAN-tagged packets";
                  leaf vlan-ranges {
                    type xr:Cisco-ios-xr-string {
                      length "1..1024";
                    }
                    must
                      "not(../../dot1ad/vlan-ranges) and not(../../../access)";
                    description
                      "List of VLAN Ranges in the form a-b,c,d,e-f,g";
                  }
                }  // container dot1q
    
                container dot1ad {
                  description
                    "IEEE 802.1ad VLAN-tagged packets";
                  leaf vlan-ranges {
                    type xr:Cisco-ios-xr-string {
                      length "1..1024";
                    }
                    must
                      "not(../../dot1q/vlan-ranges) and not(../../../access)";
                    description
                      "List of VLAN Ranges in the form a-b,c,d,e-f,g";
                  }
                }  // container dot1ad
              }  // container trunk
    
              leaf access {
                type uint32 {
                  range "1..4094";
                }
                must
                  "not(../trunk/dot1q/vlan-ranges) and not(../trunk/dot1ad/vlan-ranges)";
                description
                  "Enable vlan-switched on access port";
              }
            }  // container vlan-switched
    
            container flow {
              if-feature netflow_if_supported;
              description
                "Netflow configuration";
              container ipv4 {
                description
                  "IPV4 netflow configuration";
                container monitor {
                  description
                    "Specify a flow monitor for packets";
                  container ingress-monitors {
                    description
                      "Apply flow monitor on incoming packets";
                    list ingress-monitor {
                      key "monitor-map-name";
                      description
                        "Specify a flow monitor for packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
                    }  // list ingress-monitor
                  }  // container ingress-monitors
    
                  container ingress-monitor-samplers {
                    description
                      "Specify a flow monitor and sampler for incoming packets";
                    list ingress-monitor-sampler {
                      key "monitor-map-name sampler-map-name";
                      description
                        "Specify a flow monitor and sampler for incoming packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
    
                      leaf sampler-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a sampler for packets";
                      }
                    }  // list ingress-monitor-sampler
                  }  // container ingress-monitor-samplers
    
                  container egress-monitors {
                    description
                      "Apply flow monitor on outgoing packets";
                    list egress-monitor {
                      key "monitor-map-name";
                      description
                        "Specify a flow monitor for packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
                    }  // list egress-monitor
                  }  // container egress-monitors
    
                  container egress-monitor-samplers {
                    description
                      "Specify a flow monitor and sampler for outgoing packets";
                    list egress-monitor-sampler {
                      key "monitor-map-name sampler-map-name";
                      description
                        "Specify a flow monitor and sampler for outgoing packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
    
                      leaf sampler-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a sampler for packets";
                      }
                    }  // list egress-monitor-sampler
                  }  // container egress-monitor-samplers
                }  // container monitor
              }  // container ipv4
    
              container mpls {
                if-feature netflow_pd_allow_mpls_kw;
                description
                  "MPLS netflow configuration";
                container monitor {
                  description
                    "Specify a flow monitor for packets";
                  container ingress-monitors {
                    description
                      "Apply flow monitor on incoming packets";
                    list ingress-monitor {
                      key "monitor-map-name";
                      description
                        "Specify a flow monitor for packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
                    }  // list ingress-monitor
                  }  // container ingress-monitors
    
                  container ingress-monitor-samplers {
                    description
                      "Specify a flow monitor and sampler for incoming packets";
                    list ingress-monitor-sampler {
                      key "monitor-map-name sampler-map-name";
                      description
                        "Specify a flow monitor and sampler for incoming packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
    
                      leaf sampler-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a sampler for packets";
                      }
                    }  // list ingress-monitor-sampler
                  }  // container ingress-monitor-samplers
    
                  container egress-monitors {
                    description
                      "Apply flow monitor on outgoing packets";
                    list egress-monitor {
                      key "monitor-map-name";
                      description
                        "Specify a flow monitor for packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
                    }  // list egress-monitor
                  }  // container egress-monitors
    
                  container egress-monitor-samplers {
                    description
                      "Specify a flow monitor and sampler for outgoing packets";
                    list egress-monitor-sampler {
                      key "monitor-map-name sampler-map-name";
                      description
                        "Specify a flow monitor and sampler for outgoing packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
    
                      leaf sampler-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a sampler for packets";
                      }
                    }  // list egress-monitor-sampler
                  }  // container egress-monitor-samplers
                }  // container monitor
              }  // container mpls
    
              container ipv6 {
                if-feature netflow_pd_allow_ipv6_kw;
                description
                  "IPV6 netflow configuration";
                container monitor {
                  description
                    "Specify a flow monitor for packets";
                  container ingress-monitors {
                    description
                      "Apply flow monitor on incoming packets";
                    list ingress-monitor {
                      key "monitor-map-name";
                      description
                        "Specify a flow monitor for packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
                    }  // list ingress-monitor
                  }  // container ingress-monitors
    
                  container ingress-monitor-samplers {
                    description
                      "Specify a flow monitor and sampler for incoming packets";
                    list ingress-monitor-sampler {
                      key "monitor-map-name sampler-map-name";
                      description
                        "Specify a flow monitor and sampler for incoming packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
    
                      leaf sampler-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a sampler for packets";
                      }
                    }  // list ingress-monitor-sampler
                  }  // container ingress-monitor-samplers
    
                  container egress-monitors {
                    description
                      "Apply flow monitor on outgoing packets";
                    list egress-monitor {
                      key "monitor-map-name";
                      description
                        "Specify a flow monitor for packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
                    }  // list egress-monitor
                  }  // container egress-monitors
    
                  container egress-monitor-samplers {
                    description
                      "Specify a flow monitor and sampler for outgoing packets";
                    list egress-monitor-sampler {
                      key "monitor-map-name sampler-map-name";
                      description
                        "Specify a flow monitor and sampler for outgoing packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
    
                      leaf sampler-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a sampler for packets";
                      }
                    }  // list egress-monitor-sampler
                  }  // container egress-monitor-samplers
                }  // container monitor
              }  // container ipv6
    
              container datalinkframesection {
                if-feature netflow_pd_allow_sectiondata_kw;
                description
                  "Data link section netflow configuration";
                container monitor {
                  description
                    "Specify a flow monitor for packets";
                  container ingress-monitors {
                    description
                      "Apply flow monitor on incoming packets";
                    list ingress-monitor {
                      key "monitor-map-name";
                      description
                        "Specify a flow monitor for packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
                    }  // list ingress-monitor
                  }  // container ingress-monitors
    
                  container ingress-monitor-samplers {
                    description
                      "Specify a flow monitor and sampler for incoming packets";
                    list ingress-monitor-sampler {
                      key "monitor-map-name sampler-map-name";
                      description
                        "Specify a flow monitor and sampler for incoming packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
    
                      leaf sampler-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a sampler for packets";
                      }
                    }  // list ingress-monitor-sampler
                  }  // container ingress-monitor-samplers
    
                  container egress-monitors {
                    description
                      "Apply flow monitor on outgoing packets";
                    list egress-monitor {
                      key "monitor-map-name";
                      description
                        "Specify a flow monitor for packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
                    }  // list egress-monitor
                  }  // container egress-monitors
    
                  container egress-monitor-samplers {
                    description
                      "Specify a flow monitor and sampler for outgoing packets";
                    list egress-monitor-sampler {
                      key "monitor-map-name sampler-map-name";
                      description
                        "Specify a flow monitor and sampler for outgoing packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
    
                      leaf sampler-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a sampler for packets";
                      }
                    }  // list egress-monitor-sampler
                  }  // container egress-monitor-samplers
                }  // container monitor
              }  // container datalinkframesection
    
              container map-t {
                if-feature nf_parser_verify_wrapper_allow_intf_mapt_kw;
                description
                  "Map-t netflow configuration";
                container monitor {
                  description
                    "Specify a flow monitor for packets";
                  container ingress-monitors {
                    description
                      "Apply flow monitor on incoming packets";
                    list ingress-monitor {
                      key "monitor-map-name";
                      description
                        "Specify a flow monitor for packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
                    }  // list ingress-monitor
                  }  // container ingress-monitors
    
                  container ingress-monitor-samplers {
                    description
                      "Specify a flow monitor and sampler for incoming packets";
                    list ingress-monitor-sampler {
                      key "monitor-map-name sampler-map-name";
                      description
                        "Specify a flow monitor and sampler for incoming packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
    
                      leaf sampler-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a sampler for packets";
                      }
                    }  // list ingress-monitor-sampler
                  }  // container ingress-monitor-samplers
    
                  container egress-monitors {
                    description
                      "Apply flow monitor on outgoing packets";
                    list egress-monitor {
                      key "monitor-map-name";
                      description
                        "Specify a flow monitor for packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
                    }  // list egress-monitor
                  }  // container egress-monitors
    
                  container egress-monitor-samplers {
                    description
                      "Specify a flow monitor and sampler for outgoing packets";
                    list egress-monitor-sampler {
                      key "monitor-map-name sampler-map-name";
                      description
                        "Specify a flow monitor and sampler for outgoing packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
    
                      leaf sampler-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a sampler for packets";
                      }
                    }  // list egress-monitor-sampler
                  }  // container egress-monitor-samplers
                }  // container monitor
              }  // container map-t
            }  // container flow
    
            container mpls {
              description
                "MPLS interface subcommands";
              leaf mtu {
                type uint32 {
                  range "68..65535";
                }
                description
                  "Set the MPLS MTU for the interface";
              }
    
              container label-security {
                description
                  "MPLS label-security for the interface";
                container rpf {
                  presence
                    "Indicates a rpf node is configured.";
                  description
                    "MPLS RPF for incoming packets";
                }  // container rpf
    
                container multi-label-packet {
                  description
                    "Handling incoming packets with multiple labels on the stack";
                  container drop {
                    presence
                      "Indicates a drop node is configured.";
                    description
                      "Drop packets with multiple labels on the stack";
                  }  // container drop
                }  // container multi-label-packet
              }  // container label-security
            }  // container mpls
    
            container host-routing {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'BVI')]";
              presence
                "Indicates a host-routing node is configured.";
              description
                "Enable host-routing on this interface";
            }  // container host-routing
    
            container gratuitous-announcement-timer {
              presence
                "Indicates a gratuitous-announcement-timer node is configured.";
              description
                "Enable gratuitous announcement (GARP) timer on this interface";
              leaf interval {
                type uint32 {
                  range "60..30000";
                }
                description
                  "Gratuitous announcement (GARP/NA) timer interval in seconds";
              }
    
              leaf jitter {
                type uint32 {
                  range "0..100";
                }
                description
                  "Gratuitous announcement (GARP/NA) timer jitter percentage";
              }
            }  // container gratuitous-announcement-timer
    
            container pw-ether {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'PW-Ether')]";
              description
                "Configuration for pw-ether interface";
              container attach {
                description
                  "Attach to an interface list";
                leaf generic-interface-list {
                  type xr:Cisco-ios-xr-string {
                    length "1..32";
                  }
                  description "Interface List";
                }
              }  // container attach
    
              leaf l2overhead {
                type uint32 {
                  range "1..64";
                }
                description
                  "Set Layer 2 Overhead size";
              }
            }  // container pw-ether
    
            container pw-iw {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'PW-IW')]";
              description
                "Configuration for pw-iw interface";
              container attach {
                description
                  "Attach to an interface list";
                leaf generic-interface-list {
                  type xr:Cisco-ios-xr-string {
                    length "1..32";
                  }
                  description "Interface List";
                }
              }  // container attach
    
              leaf l2overhead {
                type uint32 {
                  range "1..64";
                }
                description
                  "Set Layer 2 Overhead size";
              }
            }  // container pw-iw
    
            container arp {
              description
                "Configure Address Resolution Protocol";
              leaf timeout {
                type uint32 {
                  range "30..2144448000";
                }
                description
                  "Set ARP cache timeout";
              }
    
              leaf purge-delay {
                type uint32 {
                  range "1..65535";
                }
                description
                  "Delay purging ARP entries when the interface goes down";
              }
    
              container learning {
                description
                  "Configuration for dynamic learning of ARP entries";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable dynamic learning of ARP entries";
                }  // container disable
    
                container local {
                  presence
                    "Indicates a local node is configured.";
                  description
                    "Enable dynamic learning only for local subnet only";
                }  // container local
    
                container solicited {
                  presence
                    "Indicates a solicited node is configured.";
                  description
                    "Enable dynamic learning only for solicited ARP packets";
                }  // container solicited
              }  // container learning
    
              container gratuitous {
                description
                  "Configure the handling of Gratuitous ARP packets";
                container ignore {
                  presence
                    "Indicates a ignore node is configured.";
                  description
                    "Ignore the receipt of Gratuitous ARP packets";
                }  // container ignore
              }  // container gratuitous
    
              container drop-adjacency {
                if-feature drop-adjacency;
                description
                  "Set ARP drop adjacency timeout";
                leaf timeout {
                  type uint32 {
                    range "900..7200";
                  }
                  default "3600";
                  description "Specify timeout";
                }
              }  // container drop-adjacency
            }  // container arp
    
            container proxy-arp {
              presence
                "Indicates a proxy-arp node is configured.";
              description "Enable proxy ARP";
            }  // container proxy-arp
    
            container local-proxy-arp {
              presence
                "Indicates a local-proxy-arp node is configured.";
              description
                "Enable local proxy ARP";
            }  // container local-proxy-arp
    
            container affinity {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-te')]";
              description
                "Link attributes for links traversed by tunnel";
              container includes {
                description
                  "Links with all these attributes are included in path calculation";
                list include1 {
                  key "name1";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list include1
    
                list include2 {
                  key "name1 name2";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list include2
    
                list include3 {
                  key "name1 name2 name3";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list include3
    
                list include4 {
                  key "name1 name2 name3 name4";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list include4
    
                list include5 {
                  key "name1 name2 name3 name4 name5";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name5 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list include5
    
                list include6 {
                  key "name1 name2 name3 name4 name5 name6";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name5 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name6 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list include6
    
                list include7 {
                  key "name1 name2 name3 name4 name5 name6 name7";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name5 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name6 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name7 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list include7
    
                list include8 {
                  key "name1 name2 name3 name4 name5 name6 name7 name8";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name5 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name6 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name7 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name8 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list include8
    
                list include9 {
                  key "name1 name2 name3 name4 name5 name6 name7 name8 name9";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name5 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name6 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name7 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name8 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name9 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list include9
    
                list include10 {
                  key "name1 name2 name3 name4 name5 name6 name7 name8 name9 name10";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name5 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name6 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name7 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name8 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name9 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name10 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list include10
              }  // container includes
    
              container include-stricts {
                description
                  "Links with exactly all these attributes are included in path calculation";
                list include1 {
                  key "name1";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list include1
    
                list include2 {
                  key "name1 name2";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list include2
    
                list include3 {
                  key "name1 name2 name3";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list include3
    
                list include4 {
                  key "name1 name2 name3 name4";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list include4
    
                list include5 {
                  key "name1 name2 name3 name4 name5";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name5 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list include5
    
                list include6 {
                  key "name1 name2 name3 name4 name5 name6";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name5 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name6 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list include6
    
                list include7 {
                  key "name1 name2 name3 name4 name5 name6 name7";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name5 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name6 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name7 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list include7
    
                list include8 {
                  key "name1 name2 name3 name4 name5 name6 name7 name8";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name5 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name6 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name7 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name8 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list include8
    
                list include9 {
                  key "name1 name2 name3 name4 name5 name6 name7 name8 name9";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name5 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name6 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name7 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name8 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name9 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list include9
    
                list include10 {
                  key "name1 name2 name3 name4 name5 name6 name7 name8 name9 name10";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name5 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name6 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name7 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name8 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name9 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name10 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list include10
              }  // container include-stricts
    
              container excludes {
                description
                  "Links with all these attributes are excluded from path calculation";
                list exclude1 {
                  key "name1";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list exclude1
    
                list exclude2 {
                  key "name1 name2";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list exclude2
    
                list exclude3 {
                  key "name1 name2 name3";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list exclude3
    
                list exclude4 {
                  key "name1 name2 name3 name4";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list exclude4
    
                list exclude5 {
                  key "name1 name2 name3 name4 name5";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name5 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list exclude5
    
                list exclude6 {
                  key "name1 name2 name3 name4 name5 name6";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name5 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name6 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list exclude6
    
                list exclude7 {
                  key "name1 name2 name3 name4 name5 name6 name7";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name5 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name6 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name7 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list exclude7
    
                list exclude8 {
                  key "name1 name2 name3 name4 name5 name6 name7 name8";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name5 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name6 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name7 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name8 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list exclude8
    
                list exclude9 {
                  key "name1 name2 name3 name4 name5 name6 name7 name8 name9";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name5 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name6 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name7 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name8 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name9 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list exclude9
    
                list exclude10 {
                  key "name1 name2 name3 name4 name5 name6 name7 name8 name9 name10";
                  description
                    "Link is excluded if it has every attribute in this list";
                  leaf name1 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name2 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name3 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name5 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name6 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name7 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name8 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name9 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
    
                  leaf name10 {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Link is excluded if it has every attribute in this list";
                  }
                }  // list exclude10
              }  // container excludes
    
              container exclude-all {
                presence
                  "Indicates a exclude-all node is configured.";
                description
                  "Links with any attribute are excluded from path calculation";
              }  // container exclude-all
    
              container ignore {
                presence
                  "Indicates a ignore node is configured.";
                description
                  "All links are included in path calculation regardless of attributes";
              }  // container ignore
    
              leaf affinity-attribute-value {
                type uint32 {
                  range "0..4294967295";
                }
                description
                  "Affinity attribute value";
              }
    
              leaf mask {
                type uint32 {
                  range "0..4294967295";
                }
                description
                  "Affinity attribute mask value";
              }
            }  // container affinity
    
            container autoroute {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-te')]";
              description
                "Parameters for IGP routing over tunnel";
              container announce {
                presence
                  "Indicates a announce node is configured.";
                description
                  "Announce tunnel to IGP";
                container metric {
                  description
                    "Specify MPLS tunnel metric";
                  leaf absolute {
                    type uint32 {
                      range "1..2147483647";
                    }
                    description
                      "Set metric mode absolute";
                  }
    
                  leaf relative {
                    type int32 {
                      range "-10..10";
                    }
                    description
                      "Set metric mode relative";
                  }
    
                  leaf constant-metric {
                    type uint32 {
                      range "1..2147483647";
                    }
                    description
                      "Set constant metric";
                  }
                }  // container metric
    
                container include-ipv6 {
                  presence
                    "Indicates a include-ipv6 node is configured.";
                  description
                    "Announce tunnel as an IPv6 AA also";
                }  // container include-ipv6
    
                container exclude-traffic {
                  description
                    "Exclude the type of traffic that goes through AA";
                  container segment-routing {
                    presence
                      "Indicates a segment-routing node is configured.";
                    description
                      "Exclude segment-routing traffic from the autoroute announced tunnel";
                  }  // container segment-routing
                }  // container exclude-traffic
              }  // container announce
    
              container destinations {
                description
                  "Adds static route to destination";
                list destination {
                  key "address";
                  description
                    "Adds static route to destination";
                  leaf address {
                    type inet:ipv4-address-no-zone;
                    description
                      "Adds static route to destination";
                  }
                }  // list destination
              }  // container destinations
            }  // container autoroute
    
            container backup-bw {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-te')]";
              must
                "(bandwidth) or ((pool-type or class-type) and (bandwidth or unlimited))";
              presence
                "Indicates a backup-bw node is configured.";
              description
                "Fast-reroute backup bandwidth requirement";
              leaf pool-type {
                type enumeration {
                  enum "any-pool" {
                    value 1;
                    description
                      "default/any-pool bandwidth";
                  }
                  enum "global-pool" {
                    value 2;
                    description
                      "global-pool bandwidth";
                  }
                  enum "sub-pool" {
                    value 4;
                    description
                      "sub-pool bandwidth";
                  }
                }
                must "not(../class-type)";
                description
                  "Configure pool type for backup bandwidth";
              }
    
              leaf class-type {
                type enumeration {
                  enum "0" {
                    value 0;
                    description "class type 0";
                  }
                  enum "1" {
                    value 1;
                    description "class type 1";
                  }
                  enum "any" {
                    value 9;
                    description "any class type";
                  }
                }
                must "not(../pool-type)";
                description
                  "Specify the bandwidth class type";
              }
    
              leaf bandwidth {
                type uint32 {
                  range "1..4294967295";
                }
                must "not(../unlimited)";
                description
                  "Bandwidth requirement in kbps";
              }
    
              container unlimited {
                must "not(../bandwidth)";
                presence
                  "Indicates a unlimited node is configured.";
                description
                  "Unlimited backup bandwidth";
              }  // container unlimited
            }  // container backup-bw
    
            container signalled-bandwidth {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-te')]";
              must
                "not(class-type and sub-pool)";
              presence
                "Indicates a signalled-bandwidth node is configured.";
              description
                "Tunnel bandwidth requirement to be signalled";
              leaf bandwidth {
                type uint32 {
                  range "0..4294967295";
                }
                mandatory true;
                description
                  "Bandwidth requirement in kbps";
              }
    
              leaf class-type {
                type uint32 {
                  range "0..1";
                }
                description
                  "Specify the bandwidth class type";
              }
    
              container sub-pool {
                when "../bandwidth != 0";
                presence
                  "Indicates a sub-pool node is configured.";
                description
                  "Specify sub-pool bandwidth";
              }  // container sub-pool
            }  // container signalled-bandwidth
    
            container fast-reroute {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-te')]";
              presence
                "Indicates a fast-reroute node is configured.";
              description
                "Specify MPLS tunnel can be fast-rerouted";
              container protect {
                description
                  "Enable protection request";
                container node {
                  presence
                    "Indicates a node node is configured.";
                  description
                    "Enable node protection request";
                }  // container node
    
                container bandwidth {
                  presence
                    "Indicates a bandwidth node is configured.";
                  description
                    "Enable bandwidth protection request";
                }  // container bandwidth
              }  // container protect
            }  // container fast-reroute
    
            leaf forward-class {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-te')]";
              type uint32 {
                range "0..7";
              }
              description
                "Forward class for the tunnel (default value 0)";
            }
    
            container forwarding-adjacency {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-te')]";
              presence
                "Indicates a forwarding-adjacency node is configured.";
              description
                "Enable tunnel as a forwarding-adjacency and enter its submode";
              leaf holdtime {
                type uint32 {
                  range "0..20000";
                }
                description "Hold time in ms";
              }
    
              container include-ipv6 {
                presence
                  "Indicates a include-ipv6 node is configured.";
                description
                  "Announce tunnel as an IPv6 FA also";
              }  // container include-ipv6
            }  // container forwarding-adjacency
    
            leaf load-share {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-te')]";
              type uint32 {
                range "1..4294967295";
              }
              description
                "Specify tunnel load-sharing metric";
            }
    
            container logging {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-te')]";
              description
                "Per-interface logging configuration";
              container events {
                description
                  "Per-interface logging events";
                container lsp-status {
                  description
                    "Enable interface LSP state change alarms";
                  container state {
                    presence
                      "Indicates a state node is configured.";
                    description
                      "Enable interface LSP UP/DOWN change alarms";
                  }  // container state
    
                  container reoptimize {
                    presence
                      "Indicates a reoptimize node is configured.";
                    description
                      "Enable interface LSP REOPT change alarms";
                  }  // container reoptimize
    
                  container reoptimize-attempts {
                    presence
                      "Indicates a reoptimize-attempts node is configured.";
                    description
                      "Enable interface LSP REOPT attempts change alarms";
                  }  // container reoptimize-attempts
    
                  container bw-change {
                    presence
                      "Indicates a bw-change node is configured.";
                    description
                      "Enable interface LSP BANDWIDTH change alarms";
                  }  // container bw-change
    
                  container reroute {
                    presence
                      "Indicates a reroute node is configured.";
                    description
                      "Enable interface LSP REROUTE change alarms";
                  }  // container reroute
    
                  container record-route {
                    presence
                      "Indicates a record-route node is configured.";
                    description
                      "Enable interface LSP RECORD-ROUTE change alarms";
                  }  // container record-route
    
                  container switchover {
                    presence
                      "Indicates a switchover node is configured.";
                    description
                      "Enable interface LSP SWITCHOVER change alarms";
                  }  // container switchover
    
                  container insufficient-bandwidth {
                    presence
                      "Indicates a insufficient-bandwidth node is configured.";
                    description
                      "Enable Syslog for setup/reopt failure due to bandwidth";
                  }  // container insufficient-bandwidth
                }  // container lsp-status
    
                container pcalc-failure {
                  presence
                    "Indicates a pcalc-failure node is configured.";
                  description
                    "Enable logging for path calculation failures";
                }  // container pcalc-failure
    
                container bfd-status {
                  presence
                    "Indicates a bfd-status node is configured.";
                  description
                    "Enable BFD session state change alarms";
                }  // container bfd-status
    
                container all {
                  presence
                    "Indicates a all node is configured.";
                  description
                    "Enable all logging for this tunnel";
                }  // container all
              }  // container events
            }  // container logging
    
            leaf signalled-name {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-te')]";
              type xr:Cisco-ios-xr-string {
                length "1..254";
              }
              description
                "The signaling name to assign to tunnel";
            }
    
            container path-options {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-te')]";
              description
                "Primary or fallback path setup option";
              list path-option {
                key "preference";
                description
                  "Primary or fallback path setup option";
                leaf preference {
                  type uint32 {
                    range "1..1000";
                  }
                  description
                    "Preference for this path option";
                }
    
                container dynamic {
                  presence
                    "Indicates a dynamic node is configured.";
                  description
                    "Setup based on dynamically allocated path";
                }  // container dynamic
    
                container explicit {
                  must "identifier or name";
                  presence
                    "Indicates a explicit node is configured.";
                  description
                    "Setup based on preconfigured path";
                  leaf identifier {
                    type uint32 {
                      range "1..65535";
                    }
                    description
                      "Specify an IP explicit path by number";
                  }
    
                  leaf name {
                    type xr:Cisco-ios-xr-string {
                      length "1..1024";
                    }
                    description
                      "Specify an IP explicit path by name";
                  }
    
                  container verbatim {
                    presence
                      "Indicates a verbatim node is configured.";
                    description
                      "Do not require topology database for explicit path";
                  }  // container verbatim
                }  // container explicit
    
                container ospf {
                  presence
                    "Indicates a ospf node is configured.";
                  description
                    "Limit CSPF to a single OSPF instance and area";
                  leaf instance-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "OSPF instance name";
                  }
    
                  container area {
                    description "OSPF area";
                    leaf decimal {
                      type uint32 {
                        range "0..4294967295";
                      }
                      description
                        "OSPF area ID as a decimal value";
                    }
    
                    leaf ip-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "OSPF area ID in IP address format";
                    }
                  }  // container area
                }  // container ospf
    
                container isis {
                  presence
                    "Indicates a isis node is configured.";
                  description
                    "Limit CSPF to a single IS-IS instance and area";
                  leaf instance-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..40";
                    }
                    description
                      "IS-IS instance name";
                  }
    
                  leaf level {
                    type uint32 {
                      range "1..2";
                    }
                    must "../instance-name";
                    description "IS-IS level";
                  }
                }  // container isis
    
                container attribute-set {
                  description
                    "Attribute set for this LSP";
                  leaf attribute-set-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..64";
                    }
                    description
                      "Specify attribute-set name (max 64 char)";
                  }
                }  // container attribute-set
    
                container protected-by {
                  description
                    "Path protection using a specific path-option";
                  leaf index {
                    type uint32 {
                      range "1..1000";
                    }
                    description
                      "Index of the protecting path-option";
                  }
                }  // container protected-by
    
                container lockdown {
                  presence
                    "Indicates a lockdown node is configured.";
                  description
                    "Not a candidate for reoptimization";
                  container sticky {
                    presence
                      "Indicates a sticky node is configured.";
                    description
                      "Force tunnel to remain on the same path";
                  }  // container sticky
                }  // container lockdown
              }  // list path-option
            }  // container path-options
    
            container priority {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-te')]";
              presence
                "Indicates a priority node is configured.";
              description "Tunnel priority";
              leaf setup-priority {
                type uint32 {
                  range "0..7";
                }
                mandatory true;
                description "Tunnel priority";
              }
    
              leaf hold-priority {
                type uint32 {
                  range "0..7";
                }
                mandatory true;
                description "Hold Priority";
              }
            }  // container priority
    
            container record-route {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-te')]";
              presence
                "Indicates a record-route node is configured.";
              description
                "Record the route used by the tunnel";
            }  // container record-route
    
            container binding-sid {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-te')]";
              description
                "Binding Segment Identifier";
              container mpls {
                presence
                  "Indicates a mpls node is configured.";
                description
                  "Use MPLS label as binding segment identifier";
                leaf label {
                  type uint32 {
                    range "16..4015";
                  }
                  description
                    "Specify label value";
                }
              }  // container mpls
            }  // container binding-sid
    
            container policy-class {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-te')]";
              description
                "Specify classs for policy-based tunnel selection";
              container tunnel-policy-class-values {
                description
                  "Tunnel policy class Value(s)";
                leaf-list tunnel-policy-class-value {
                  type policy-class-type;
                  max-elements 7;
                  description
                    "Tunnel policy class Value(s)";
                }
              }  // container tunnel-policy-class-values
            }  // container policy-class
    
            container auto-bw {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-te')]";
              presence
                "Indicates a auto-bw node is configured.";
              description
                "Enable tunnel auto-bandwidth and enter its submode";
              leaf application {
                type uint32 {
                  range "5..10080";
                }
                description
                  "Set the tunnel auto-bw application frequency";
              }
    
              container bw-limit {
                description
                  "Set min/max bandwidth auto-bw can apply on a tunnel";
                leaf min {
                  type uint32 {
                    range "0..4294967295";
                  }
                  description
                    "Set minimum bandwidth auto-bw can apply on a tunnel";
                }
    
                leaf max {
                  type uint32 {
                    range "0..4294967295";
                  }
                  description
                    "Set maximum bandwidth auto-bw can apply on a tunnel";
                }
              }  // container bw-limit
    
              container collect-bw-only {
                presence
                  "Indicates a collect-bw-only node is configured.";
                description
                  "Enable bandwidth collection only, no auto-bw adjustment";
              }  // container collect-bw-only
    
              container adjustment-threshold {
                presence
                  "Indicates a adjustment-threshold node is configured.";
                description
                  "Set the bandwidth change threshold to trigger adjustment";
                leaf threshold {
                  type uint32 {
                    range "1..100";
                  }
                  mandatory true;
                  description
                    "Set the bandwidth change threshold to trigger adjustment";
                }
    
                leaf min {
                  type uint32 {
                    range "10..4294967295";
                  }
                  mandatory true;
                  description
                    "Set the bandwidth change value to trigger adjustment";
                }
              }  // container adjustment-threshold
    
              container overflow {
                presence
                  "Indicates a overflow node is configured.";
                description
                  "Configuring the tunnel overflow detection";
                leaf threshold {
                  type uint32 {
                    range "1..100";
                  }
                  mandatory true;
                  description
                    "Set the bandwidth change percent to trigger an overflow";
                }
    
                leaf min {
                  type uint32 {
                    range "10..4294967295";
                  }
                  mandatory true;
                  description
                    "Set the bandwidth change value to trigger an overflow";
                }
    
                leaf limit {
                  type uint32 {
                    range "1..10";
                  }
                  mandatory true;
                  description
                    "Set the number of consecutive collections exceeding threshold";
                }
              }  // container overflow
    
              container underflow {
                presence
                  "Indicates a underflow node is configured.";
                description
                  "Configuring the tunnel underflow detection";
                leaf threshold {
                  type uint32 {
                    range "1..100";
                  }
                  mandatory true;
                  description
                    "Set the bandwidth change percent to trigger an underflow";
                }
    
                leaf min {
                  type uint32 {
                    range "10..4294967295";
                  }
                  mandatory true;
                  description
                    "Set the bandwidth change value to trigger an underflow";
                }
    
                leaf limit {
                  type uint32 {
                    range "1..10";
                  }
                  mandatory true;
                  description
                    "Set the number of consecutive collections exceeding threshold";
                }
              }  // container underflow
    
              container resignal {
                description
                  "Configure the tunnel resignal parameters after going down";
                container last-bandwidth {
                  description
                    "Configure the tunnel to use last applied bandwidth after going down";
                  leaf time-out {
                    type uint32 {
                      range "1..3600000";
                    }
                    description
                      "Set the bandwidth resignal time-out value (in seconds) After this time the tunnel will be signaled with the configured bandwidth";
                  }
                }  // container last-bandwidth
              }  // container resignal
            }  // container auto-bw
    
            container path-protection {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-te')]";
              presence
                "Indicates a path-protection node is configured.";
              description
                "Enable the path protection feature on this tunnel";
              container srlg-diverse {
                presence
                  "Indicates a srlg-diverse node is configured.";
                description
                  "Enforce SRLG diversity for protecting LSP";
              }  // container srlg-diverse
    
              container protection-mode {
                description
                  "Configure Path Protection mode";
                container non-revertive {
                  presence
                    "Indicates a non-revertive node is configured.";
                  description
                    "Enable Non-Revertive mode";
                }  // container non-revertive
              }  // container protection-mode
            }  // container path-protection
    
            container soft-preemption {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-te')]";
              presence
                "Indicates a soft-preemption node is configured.";
              description
                "Enable the soft-preemption feature on this tunnel";
            }  // container soft-preemption
    
            container delay-measurement {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-te')]";
              presence
                "Indicates a delay-measurement node is configured.";
              description
                "Enable the delay-measurement feature on this tunnel";
            }  // container delay-measurement
    
            container pce {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-te')]";
              description
                "Config PCE parameters";
              container delegation {
                presence
                  "Indicates a delegation node is configured.";
                description
                  "Enable PCE delegation";
              }  // container delegation
    
              container reopt {
                must "../delegation";
                presence
                  "Indicates a reopt node is configured.";
                description
                  "Enable local reopt for PCE delegation";
              }  // container reopt
            }  // container pce
    
            container path-selection {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-te')]";
              description
                "Path Selection Configuration";
              container metric {
                must "igp or te or delay";
                presence
                  "Indicates a metric node is configured.";
                description
                  "Metric Type for path calculation";
                container igp {
                  presence
                    "Indicates a igp node is configured.";
                  description "Use IGP metric";
                }  // container igp
    
                container te {
                  presence
                    "Indicates a te node is configured.";
                  description "Use TE metric";
                }  // container te
    
                container delay {
                  presence
                    "Indicates a delay node is configured.";
                  description "Use delay metric";
                }  // container delay
              }  // container metric
    
              container tiebreaker {
                must
                  "min-fill or max-fill or random";
                presence
                  "Indicates a tiebreaker node is configured.";
                description
                  "Equal cost multipath tiebreaker for path calculation (default: min-fill).";
                container min-fill {
                  presence
                    "Indicates a min-fill node is configured.";
                  description
                    "Prefer the path with the least-utilized links";
                }  // container min-fill
    
                container max-fill {
                  presence
                    "Indicates a max-fill node is configured.";
                  description
                    "Prefer the path with the most-utilized links";
                }  // container max-fill
    
                container random {
                  presence
                    "Indicates a random node is configured.";
                  description
                    "Prefer a path with links utilized randomly";
                }  // container random
              }  // container tiebreaker
    
              leaf hop-limit {
                type uint32 {
                  range "1..255";
                }
                description
                  "Hop limit configuration";
              }
    
              leaf cost-limit {
                type uint32 {
                  range "1..4294967295";
                }
                description
                  "Cost limit configuration";
              }
    
              leaf delay-limit {
                type uint32 {
                  range "1..4294967295";
                }
                description
                  "Delay limit configuration";
              }
            }  // container path-selection
    
            container bidirectional {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-te')]";
              presence
                "Indicates a bidirectional node is configured.";
              description
                "Configure bidirectional LSPs";
              container association {
                description
                  "Specify association parameters";
                container id {
                  presence
                    "Indicates a id node is configured.";
                  description
                    "Unique association ID";
                  leaf association-id {
                    type uint32 {
                      range "0..65535";
                    }
                    mandatory true;
                    description
                      "Unique association ID";
                  }
    
                  leaf source-address {
                    type inet:ipv4-address-no-zone;
                    mandatory true;
                    description
                      "Source IP address";
                  }
    
                  leaf global-id {
                    type uint32 {
                      range "0..4294967295";
                    }
                    description
                      "Global ID for association global source";
                  }
                }  // container id
    
                container type {
                  description "Association type";
                  container co-routed {
                    presence
                      "Indicates a co-routed node is configured.";
                    description
                      "Co-routed LSPs (with bidirectional CSPF)";
                    container fault-oam {
                      presence
                        "Indicates a fault-oam node is configured.";
                      description
                        "Enable fault OAM";
                    }  // container fault-oam
    
                    container wrap-protection {
                      presence
                        "Indicates a wrap-protection node is configured.";
                      description
                        "Enable LSP Wrap protection feature";
                    }  // container wrap-protection
    
                    container signaling {
                      description
                        "Signaling configuration";
                      container protection-object {
                        description
                          "RSVP Protection Object signaling";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable signaling of RSVP Protection Object";
                        }  // container disable
                      }  // container protection-object
                    }  // container signaling
                  }  // container co-routed
                }  // container type
              }  // container association
            }  // container bidirectional
    
            container working-lsp {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-tp')]";
              description "Working LSP";
              leaf in-label {
                type uint32 {
                  range "16..1048575";
                }
                description
                  "Incoming MPLS label";
              }
    
              leaf out-label {
                type uint32 {
                  range "16..1048575";
                }
                description
                  "Outgoing MPLS label";
              }
    
              leaf out-link {
                type uint32 {
                  range "1..65535";
                }
                must "../out-label";
                description
                  "Outgoing TP link ID";
              }
    
              leaf lsp-number {
                type uint32 {
                  range "0..65535";
                }
                description "LSP Identifier";
              }
    
              container lockout {
                presence
                  "Indicates a lockout node is configured.";
                description
                  "Lockout working LSP";
              }  // container lockout
            }  // container working-lsp
    
            leaf destination {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-te')]";
              type inet:ipv4-address-no-zone;
              description
                "Specify tunnel destination";
            }
    
            container tunnel-mte {
              tailf:dependency "../a2:interface-name";
              when
                "../a2:interface-name[starts-with(text(),'tunnel-mte')]";
              description
                "Configuratoin specific for tunnel-mte interface";
              container destinations {
                description
                  "Specify a destination to an endpoint of the tunnel";
                list destination {
                  key "address";
                  description
                    "Specify a destination to an endpoint of the tunnel";
                  leaf address {
                    type inet:ipv4-address-no-zone;
                    description
                      "Specify a destination to an endpoint of the tunnel";
                  }
    
                  container path-options {
                    description
                      "Primary or fallback path setup option";
                    list path-option {
                      must
                        "dynamic or explicit/identifier or explicit/name";
                      key "path-option-id";
                      description
                        "Primary or fallback path setup option";
                      leaf path-option-id {
                        type uint32 {
                          range "1..1000";
                        }
                        description
                          "Primary or fallback path setup option";
                      }
    
                      container dynamic {
                        presence
                          "Indicates a dynamic node is configured.";
                        description
                          "Setup based on dynamically allocated path";
                      }  // container dynamic
    
                      container explicit {
                        description
                          "Setup based on preconfigured path";
                        leaf identifier {
                          type uint32 {
                            range "1..65535";
                          }
                          must "not(../name)";
                          description
                            "Specify an IP explicit path by number";
                        }
    
                        leaf name {
                          type xr:Cisco-ios-xr-string {
                            length "1..800";
                          }
                          must
                            "not(../identifier)";
                          description
                            "Specify an IP explicit path by name";
                        }
                      }  // container explicit
    
                      container lockdown {
                        must
                          "../dynamic or ../explicit/identifier or ../explicit/name";
                        presence
                          "Indicates a lockdown node is configured.";
                        description
                          "Not a candidate for reoptimization";
                      }  // container lockdown
    
                      container verbatim {
                        must
                          "../explicit/identifier or ../explicit/name";
                        presence
                          "Indicates a verbatim node is configured.";
                        description
                          "Do not require topology database for explicit path";
                      }  // container verbatim
                    }  // list path-option
                  }  // container path-options
    
                  container logging {
                    description
                      "Per-destination logging configuration";
                    container events {
                      description
                        "Per-destination logging events";
                      container sub-lsp {
                        description
                          "Enable destination sub-lsp state change alarms";
                        container state {
                          presence
                            "Indicates a state node is configured.";
                          description
                            "Enable destination sub-lsp UP/DOWN change alarms";
                        }  // container state
    
                        container reroute {
                          presence
                            "Indicates a reroute node is configured.";
                          description
                            "Enable destination sub-lsp REROUTE change alarms";
                        }  // container reroute
    
                        container insufficient-bandwidth {
                          presence
                            "Indicates a insufficient-bandwidth node is configured.";
                          description
                            "Enable Syslog for setup/reopt failure due to bandwidth";
                        }  // container insufficient-bandwidth
    
                        container pcalc-failure {
                          presence
                            "Indicates a pcalc-failure node is configured.";
                          description
                            "Enable logging for path calculation failures";
                        }  // container pcalc-failure
                      }  // container sub-lsp
                    }  // container events
                  }  // container logging
    
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disable the given destination";
                  }  // container disable
                }  // list destination
              }  // container destinations
    
              container priority {
                presence
                  "Indicates a priority node is configured.";
                description "Tunnel priority";
                leaf setup-priority {
                  type uint32 {
                    range "0..7";
                  }
                  mandatory true;
                  description "Tunnel priority";
                }
    
                leaf hold-priority {
                  type uint32 {
                    range "0..7";
                  }
                  mandatory true;
                  description "Hold Priority";
                }
              }  // container priority
    
              container logging {
                description
                  "Per-interface logging configuration";
                container events {
                  description
                    "Per-interface logging events";
                  container lsp-status {
                    description
                      "Enable interface LSP state change alarms";
                    container state {
                      presence
                        "Indicates a state node is configured.";
                      description
                        "Enable interface LSP UP/DOWN change alarms";
                    }  // container state
    
                    container reoptimize-attempts {
                      presence
                        "Indicates a reoptimize-attempts node is configured.";
                      description
                        "Enable interface LSP REOPT attempts change alarms";
                    }  // container reoptimize-attempts
    
                    container reoptimize {
                      presence
                        "Indicates a reoptimize node is configured.";
                      description
                        "Enable interface LSP REOPT change alarms";
                    }  // container reoptimize
    
                    container reroute {
                      presence
                        "Indicates a reroute node is configured.";
                      description
                        "Enable interface LSP REROUTE change alarms";
                    }  // container reroute
    
                    container insufficient-bandwidth {
                      presence
                        "Indicates a insufficient-bandwidth node is configured.";
                      description
                        "Enable Syslog for setup/reopt failure due to bandwidth";
                    }  // container insufficient-bandwidth
    
                    container bw-change {
                      presence
                        "Indicates a bw-change node is configured.";
                      description
                        "Enable interface LSP BANDWIDTH change notification";
                    }  // container bw-change
                  }  // container lsp-status
    
                  container pcalc-failure {
                    presence
                      "Indicates a pcalc-failure node is configured.";
                    description
                      "Enable logging for path calculation failures";
                  }  // container pcalc-failure
    
                  container sub-lsp-status {
                    description
                      "Enable all sub-LSP state change alarms";
                    container state {
                      presence
                        "Indicates a state node is configured.";
                      description
                        "Enable all sub-LSP UP/DOWN change alarms";
                    }  // container state
                  }  // container sub-lsp-status
    
                  container all {
                    presence
                      "Indicates a all node is configured.";
                    description
                      "Enable all logging for this tunnel";
                  }  // container all
                }  // container events
              }  // container logging
    
              leaf signalled-name {
                type xr:Cisco-ios-xr-string {
                  length "1..254";
                }
                description
                  "The signaling name to assign to tunnel";
              }
    
              container signalled-bandwidth {
                presence
                  "Indicates a signalled-bandwidth node is configured.";
                description
                  "Tunnel bandwidth requirement to be signalled";
                leaf bandwidth {
                  type uint32 {
                    range "0..4294967295";
                  }
                  mandatory true;
                  description
                    "Bandwidth requirement in kbps";
                }
    
                leaf class-type {
                  type uint32 {
                    range "0..1";
                  }
                  must "not(../sub-pool)";
                  description
                    "Specify the bandwidth class type";
                }
    
                container sub-pool {
                  when "../bandwidth != 0";
                  must "not(../class-type)";
                  presence
                    "Indicates a sub-pool node is configured.";
                  description
                    "Specify sub-pool bandwidth";
                }  // container sub-pool
              }  // container signalled-bandwidth
    
              container fast-reroute {
                presence
                  "Indicates a fast-reroute node is configured.";
                description
                  "Specify MPLS tunnel can be fast-rerouted";
              }  // container fast-reroute
    
              container record-route {
                presence
                  "Indicates a record-route node is configured.";
                description
                  "Record the route used by the tunnel";
              }  // container record-route
    
              container affinity {
                description
                  "Link attributes for links traversed by tunnel";
                container includes {
                  description
                    "Links with all these attributes are included in path calculation";
                  list include1 {
                    key "name1";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list include1
    
                  list include2 {
                    key "name1 name2";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list include2
    
                  list include3 {
                    key "name1 name2 name3";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list include3
    
                  list include4 {
                    key "name1 name2 name3 name4";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name4 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list include4
    
                  list include5 {
                    key "name1 name2 name3 name4 name5";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name4 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name5 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list include5
    
                  list include6 {
                    key "name1 name2 name3 name4 name5 name6";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name4 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name5 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name6 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list include6
    
                  list include7 {
                    key "name1 name2 name3 name4 name5 name6 name7";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name4 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name5 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name6 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name7 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list include7
    
                  list include8 {
                    key "name1 name2 name3 name4 name5 name6 name7 name8";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name4 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name5 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name6 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name7 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name8 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list include8
    
                  list include9 {
                    key "name1 name2 name3 name4 name5 name6 name7 name8 name9";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name4 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name5 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name6 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name7 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name8 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name9 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list include9
    
                  list include10 {
                    key "name1 name2 name3 name4 name5 name6 name7 name8 name9 name10";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name4 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name5 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name6 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name7 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name8 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name9 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name10 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list include10
                }  // container includes
    
                container include-stricts {
                  description
                    "Links with exactly all these attributes are included in path calculation";
                  list include1 {
                    key "name1";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list include1
    
                  list include2 {
                    key "name1 name2";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list include2
    
                  list include3 {
                    key "name1 name2 name3";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list include3
    
                  list include4 {
                    key "name1 name2 name3 name4";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name4 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list include4
    
                  list include5 {
                    key "name1 name2 name3 name4 name5";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name4 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name5 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list include5
    
                  list include6 {
                    key "name1 name2 name3 name4 name5 name6";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name4 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name5 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name6 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list include6
    
                  list include7 {
                    key "name1 name2 name3 name4 name5 name6 name7";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name4 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name5 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name6 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name7 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list include7
    
                  list include8 {
                    key "name1 name2 name3 name4 name5 name6 name7 name8";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name4 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name5 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name6 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name7 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name8 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list include8
    
                  list include9 {
                    key "name1 name2 name3 name4 name5 name6 name7 name8 name9";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name4 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name5 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name6 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name7 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name8 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name9 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list include9
    
                  list include10 {
                    key "name1 name2 name3 name4 name5 name6 name7 name8 name9 name10";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name4 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name5 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name6 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name7 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name8 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name9 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name10 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list include10
                }  // container include-stricts
    
                container excludes {
                  description
                    "Links with all these attributes are excluded from path calculation";
                  list exclude1 {
                    key "name1";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list exclude1
    
                  list exclude2 {
                    key "name1 name2";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list exclude2
    
                  list exclude3 {
                    key "name1 name2 name3";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list exclude3
    
                  list exclude4 {
                    key "name1 name2 name3 name4";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name4 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list exclude4
    
                  list exclude5 {
                    key "name1 name2 name3 name4 name5";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name4 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name5 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list exclude5
    
                  list exclude6 {
                    key "name1 name2 name3 name4 name5 name6";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name4 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name5 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name6 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list exclude6
    
                  list exclude7 {
                    key "name1 name2 name3 name4 name5 name6 name7";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name4 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name5 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name6 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name7 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list exclude7
    
                  list exclude8 {
                    key "name1 name2 name3 name4 name5 name6 name7 name8";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name4 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name5 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name6 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name7 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name8 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list exclude8
    
                  list exclude9 {
                    key "name1 name2 name3 name4 name5 name6 name7 name8 name9";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name4 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name5 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name6 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name7 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name8 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name9 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list exclude9
    
                  list exclude10 {
                    key "name1 name2 name3 name4 name5 name6 name7 name8 name9 name10";
                    description
                      "Link is excluded if it has every attribute in this list";
                    leaf name1 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name2 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name3 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name4 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name5 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name6 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name7 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name8 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name9 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
    
                    leaf name10 {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Link is excluded if it has every attribute in this list";
                    }
                  }  // list exclude10
                }  // container excludes
    
                container exclude-all {
                  presence
                    "Indicates a exclude-all node is configured.";
                  description
                    "Links with any attribute are excluded from path calculation";
                }  // container exclude-all
    
                container ignore {
                  presence
                    "Indicates a ignore node is configured.";
                  description
                    "All links are included in path calculation regardless of attributes";
                }  // container ignore
    
                leaf affinity-attribute-value {
                  type uint32 {
                    range "0..4294967295";
                  }
                  must "../mask";
                  description
                    "Affinity attribute value";
                }
    
                leaf mask {
                  type uint32 {
                    range "0..4294967295";
                  }
                  must
                    "../affinity-attribute-value";
                  description
                    "Affinity attribute mask value";
                }
              }  // container affinity
    
              container path-selection {
                description
                  "Path Selection Configuration";
                container metric {
                  description
                    "Metric Type for path calculation";
                  container igp {
                    must
                      "not(../te or ../delay)";
                    presence
                      "Indicates a igp node is configured.";
                    description "Use IGP metric";
                  }  // container igp
    
                  container te {
                    must
                      "not(../igp or ../delay)";
                    presence
                      "Indicates a te node is configured.";
                    description "Use TE metric";
                  }  // container te
    
                  container delay {
                    must "not(../igp or ../te)";
                    presence
                      "Indicates a delay node is configured.";
                    description
                      "Use delay metric";
                  }  // container delay
                }  // container metric
              }  // container path-selection
            }  // container tunnel-mte
    
            container monitor-sessions {
              description
                "Monitor-session configuration commands";
              list monitor-session {
                must
                  "ethernet or ipv4 or ipv6 or mpls-ipv4 or mpls-ipv6";
                key "session-name";
                description
                  "Monitor-session configuration commands";
                leaf session-name {
                  type string {
                    length "1..79";
                  }
                  description
                    "Monitor-session configuration commands";
                }
    
                container ethernet {
                  must
                    "not(../ipv4 or ../ipv6 or ../mpls-ipv4 or ../mpls-ipv6)";
                  presence
                    "Indicates a ethernet node is configured.";
                  description
                    "Replicate Ethernet traffic";
                }  // container ethernet
    
                container ipv4 {
                  must
                    "not(../ethernet or ../ipv6 or ../mpls-ipv4 or ../mpls-ipv6)";
                  presence
                    "Indicates a ipv4 node is configured.";
                  description
                    "Replicate IPv4 traffic";
                }  // container ipv4
    
                container ipv6 {
                  must
                    "not(../ipv4 or ../ethernet or ../mpls-ipv4 or ../mpls-ipv6)";
                  presence
                    "Indicates a ipv6 node is configured.";
                  description
                    "Replicate IPv6 traffic";
                }  // container ipv6
    
                container mpls-ipv4 {
                  must
                    "not(../ipv4 or ../ipv6 or ../ethernet or ../mpls-ipv6)";
                  presence
                    "Indicates a mpls-ipv4 node is configured.";
                  description
                    "Replicate MPLS-IPv4 traffic";
                }  // container mpls-ipv4
    
                container mpls-ipv6 {
                  must
                    "not(../ipv4 or ../ipv6 or ../mpls-ipv4 or ../ethernet)";
                  presence
                    "Indicates a mpls-ipv6 node is configured.";
                  description
                    "Replicate MPLS-IPv6 traffic";
                }  // container mpls-ipv6
    
                container direction {
                  description
                    "Specify the direction of traffic to replicate";
                  container rx-only {
                    must "not(../tx-only)";
                    presence
                      "Indicates a rx-only node is configured.";
                    description
                      "Replicate only received (ingress) traffic";
                  }  // container rx-only
    
                  container tx-only {
                    must "not(../rx-only)";
                    presence
                      "Indicates a tx-only node is configured.";
                    description
                      "Replicate only transmitted (egress) traffic";
                  }  // container tx-only
                }  // container direction
    
                container port-level {
                  presence
                    "Indicates a port-level node is configured.";
                  description
                    "Replicate traffic on all interfaces of a main interface";
                }  // container port-level
    
                container acl {
                  presence
                    "Indicates a acl node is configured.";
                  description
                    "Enable acl based mirroring";
                  leaf acl-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..80";
                    }
                    description "ACL name";
                  }
                }  // container acl
    
                leaf acl-ipv4 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv4 ACL based mirroring";
                }
    
                leaf acl-ipv6 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv6 ACL based mirroring";
                }
    
                container mirror {
                  description
                    "Set the mirroring properties of this interface";
                  leaf first {
                    type uint32 {
                      range "1..10000";
                    }
                    description
                      "Enable mirroring on the first portion of a packet";
                  }
    
                  leaf interval {
                    type enumeration {
                      enum "512" {
                        value 1;
                        description
                          "Mirror 1 in every 512 packets";
                      }
                      enum "1K" {
                        value 2;
                        description
                          "Mirror 1 in every 1024 packets";
                      }
                      enum "2K" {
                        value 3;
                        description
                          "Mirror 1 in every 2048 packets";
                      }
                      enum "4K" {
                        value 4;
                        description
                          "Mirror 1 in every 4096 packets";
                      }
                      enum "8K" {
                        value 5;
                        description
                          "Mirror 1 in every 8192 packets";
                      }
                      enum "16K" {
                        value 6;
                        description
                          "Mirror 1 in every 16384 packets";
                      }
                    }
                    description
                      "Enable mirroring of every Nth packet";
                  }
                }  // container mirror
              }  // list monitor-session
            }  // container monitor-sessions
    
            container monitor-session-deprecated {
              description
                "Monitor-session deprecated configuration commands";
              container ethernet {
                presence
                  "Indicates a ethernet node is configured.";
                description
                  "Replicate Ethernet traffic";
                leaf session-name {
                  type xr:Cisco-ios-xr-string {
                    length "1..79";
                  }
                  mandatory true;
                  description "Session Name";
                }
    
                container direction {
                  description
                    "Specify the direction of traffic to replicate";
                  container rx-only {
                    must "not(../tx-only)";
                    presence
                      "Indicates a rx-only node is configured.";
                    description
                      "Replicate only received (ingress) traffic";
                  }  // container rx-only
    
                  container tx-only {
                    must "not(../rx-only)";
                    presence
                      "Indicates a tx-only node is configured.";
                    description
                      "Replicate only transmitted (egress) traffic";
                  }  // container tx-only
                }  // container direction
    
                container acl {
                  presence
                    "Indicates a acl node is configured.";
                  description
                    "Enable acl based mirroring";
                  leaf acl-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..80";
                    }
                    description "ACL name";
                  }
                }  // container acl
    
                leaf acl-ipv4 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv4 ACL based mirroring";
                }
    
                leaf acl-ipv6 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv6 ACL based mirroring";
                }
    
                container mirror {
                  description
                    "Set the mirroring properties of this interface";
                  leaf first {
                    type uint32 {
                      range "1..10000";
                    }
                    description
                      "Enable mirroring on the first portion of a packet";
                  }
    
                  leaf interval {
                    type enumeration {
                      enum "512" {
                        value 1;
                        description
                          "Mirror 1 in every 512 packets";
                      }
                      enum "1K" {
                        value 2;
                        description
                          "Mirror 1 in every 1024 packets";
                      }
                      enum "2K" {
                        value 3;
                        description
                          "Mirror 1 in every 2048 packets";
                      }
                      enum "4K" {
                        value 4;
                        description
                          "Mirror 1 in every 4096 packets";
                      }
                      enum "8K" {
                        value 5;
                        description
                          "Mirror 1 in every 8192 packets";
                      }
                      enum "16K" {
                        value 6;
                        description
                          "Mirror 1 in every 16384 packets";
                      }
                    }
                    description
                      "Enable mirroring of every Nth packet";
                  }
                }  // container mirror
    
                container port-level {
                  presence
                    "Indicates a port-level node is configured.";
                  description
                    "Replicate traffic on all interfaces of a main interface";
                }  // container port-level
              }  // container ethernet
    
              container ipv4 {
                presence
                  "Indicates a ipv4 node is configured.";
                description
                  "Replicate IPv4 traffic";
                leaf session-name {
                  type xr:Cisco-ios-xr-string {
                    length "1..79";
                  }
                  mandatory true;
                  description "Session Name";
                }
    
                container direction {
                  description
                    "Specify the direction of traffic to replicate";
                  container rx-only {
                    must "not(../tx-only)";
                    presence
                      "Indicates a rx-only node is configured.";
                    description
                      "Replicate only received (ingress) traffic";
                  }  // container rx-only
    
                  container tx-only {
                    must "not(../rx-only)";
                    presence
                      "Indicates a tx-only node is configured.";
                    description
                      "Replicate only transmitted (egress) traffic";
                  }  // container tx-only
                }  // container direction
    
                container acl {
                  presence
                    "Indicates a acl node is configured.";
                  description
                    "Enable acl based mirroring";
                  leaf acl-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..80";
                    }
                    description "ACL name";
                  }
                }  // container acl
    
                leaf acl-ipv4 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv4 ACL based mirroring";
                }
    
                leaf acl-ipv6 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv6 ACL based mirroring";
                }
    
                container mirror {
                  description
                    "Set the mirroring properties of this interface";
                  leaf first {
                    type uint32 {
                      range "1..10000";
                    }
                    description
                      "Enable mirroring on the first portion of a packet";
                  }
    
                  leaf interval {
                    type enumeration {
                      enum "512" {
                        value 1;
                        description
                          "Mirror 1 in every 512 packets";
                      }
                      enum "1K" {
                        value 2;
                        description
                          "Mirror 1 in every 1024 packets";
                      }
                      enum "2K" {
                        value 3;
                        description
                          "Mirror 1 in every 2048 packets";
                      }
                      enum "4K" {
                        value 4;
                        description
                          "Mirror 1 in every 4096 packets";
                      }
                      enum "8K" {
                        value 5;
                        description
                          "Mirror 1 in every 8192 packets";
                      }
                      enum "16K" {
                        value 6;
                        description
                          "Mirror 1 in every 16384 packets";
                      }
                    }
                    description
                      "Enable mirroring of every Nth packet";
                  }
                }  // container mirror
    
                container port-level {
                  presence
                    "Indicates a port-level node is configured.";
                  description
                    "Replicate traffic on all interfaces of a main interface";
                }  // container port-level
              }  // container ipv4
    
              container ipv6 {
                presence
                  "Indicates a ipv6 node is configured.";
                description
                  "Replicate IPv6 traffic";
                leaf session-name {
                  type xr:Cisco-ios-xr-string {
                    length "1..79";
                  }
                  mandatory true;
                  description "Session Name";
                }
    
                container direction {
                  description
                    "Specify the direction of traffic to replicate";
                  container rx-only {
                    must "not(../tx-only)";
                    presence
                      "Indicates a rx-only node is configured.";
                    description
                      "Replicate only received (ingress) traffic";
                  }  // container rx-only
    
                  container tx-only {
                    must "not(../rx-only)";
                    presence
                      "Indicates a tx-only node is configured.";
                    description
                      "Replicate only transmitted (egress) traffic";
                  }  // container tx-only
                }  // container direction
    
                container acl {
                  presence
                    "Indicates a acl node is configured.";
                  description
                    "Enable acl based mirroring";
                  leaf acl-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..80";
                    }
                    description "ACL name";
                  }
                }  // container acl
    
                leaf acl-ipv4 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv4 ACL based mirroring";
                }
    
                leaf acl-ipv6 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv6 ACL based mirroring";
                }
    
                container mirror {
                  description
                    "Set the mirroring properties of this interface";
                  leaf first {
                    type uint32 {
                      range "1..10000";
                    }
                    description
                      "Enable mirroring on the first portion of a packet";
                  }
    
                  leaf interval {
                    type enumeration {
                      enum "512" {
                        value 1;
                        description
                          "Mirror 1 in every 512 packets";
                      }
                      enum "1K" {
                        value 2;
                        description
                          "Mirror 1 in every 1024 packets";
                      }
                      enum "2K" {
                        value 3;
                        description
                          "Mirror 1 in every 2048 packets";
                      }
                      enum "4K" {
                        value 4;
                        description
                          "Mirror 1 in every 4096 packets";
                      }
                      enum "8K" {
                        value 5;
                        description
                          "Mirror 1 in every 8192 packets";
                      }
                      enum "16K" {
                        value 6;
                        description
                          "Mirror 1 in every 16384 packets";
                      }
                    }
                    description
                      "Enable mirroring of every Nth packet";
                  }
                }  // container mirror
    
                container port-level {
                  presence
                    "Indicates a port-level node is configured.";
                  description
                    "Replicate traffic on all interfaces of a main interface";
                }  // container port-level
              }  // container ipv6
    
              container mpls-ipv4 {
                presence
                  "Indicates a mpls-ipv4 node is configured.";
                description
                  "Replicate MPLS-IPv4 traffic";
                leaf session-name {
                  type xr:Cisco-ios-xr-string {
                    length "1..79";
                  }
                  mandatory true;
                  description "Session Name";
                }
    
                container direction {
                  description
                    "Specify the direction of traffic to replicate";
                  container rx-only {
                    must "not(../tx-only)";
                    presence
                      "Indicates a rx-only node is configured.";
                    description
                      "Replicate only received (ingress) traffic";
                  }  // container rx-only
    
                  container tx-only {
                    must "not(../rx-only)";
                    presence
                      "Indicates a tx-only node is configured.";
                    description
                      "Replicate only transmitted (egress) traffic";
                  }  // container tx-only
                }  // container direction
    
                container acl {
                  presence
                    "Indicates a acl node is configured.";
                  description
                    "Enable acl based mirroring";
                  leaf acl-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..80";
                    }
                    description "ACL name";
                  }
                }  // container acl
    
                leaf acl-ipv4 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv4 ACL based mirroring";
                }
    
                leaf acl-ipv6 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv6 ACL based mirroring";
                }
    
                container mirror {
                  description
                    "Set the mirroring properties of this interface";
                  leaf first {
                    type uint32 {
                      range "1..10000";
                    }
                    description
                      "Enable mirroring on the first portion of a packet";
                  }
    
                  leaf interval {
                    type enumeration {
                      enum "512" {
                        value 1;
                        description
                          "Mirror 1 in every 512 packets";
                      }
                      enum "1K" {
                        value 2;
                        description
                          "Mirror 1 in every 1024 packets";
                      }
                      enum "2K" {
                        value 3;
                        description
                          "Mirror 1 in every 2048 packets";
                      }
                      enum "4K" {
                        value 4;
                        description
                          "Mirror 1 in every 4096 packets";
                      }
                      enum "8K" {
                        value 5;
                        description
                          "Mirror 1 in every 8192 packets";
                      }
                      enum "16K" {
                        value 6;
                        description
                          "Mirror 1 in every 16384 packets";
                      }
                    }
                    description
                      "Enable mirroring of every Nth packet";
                  }
                }  // container mirror
    
                container port-level {
                  presence
                    "Indicates a port-level node is configured.";
                  description
                    "Replicate traffic on all interfaces of a main interface";
                }  // container port-level
              }  // container mpls-ipv4
    
              container mpls-ipv6 {
                presence
                  "Indicates a mpls-ipv6 node is configured.";
                description
                  "Replicate MPLS-IPv6 traffic";
                leaf session-name {
                  type xr:Cisco-ios-xr-string {
                    length "1..79";
                  }
                  mandatory true;
                  description "Session Name";
                }
    
                container direction {
                  description
                    "Specify the direction of traffic to replicate";
                  container rx-only {
                    must "not(../tx-only)";
                    presence
                      "Indicates a rx-only node is configured.";
                    description
                      "Replicate only received (ingress) traffic";
                  }  // container rx-only
    
                  container tx-only {
                    must "not(../rx-only)";
                    presence
                      "Indicates a tx-only node is configured.";
                    description
                      "Replicate only transmitted (egress) traffic";
                  }  // container tx-only
                }  // container direction
    
                container acl {
                  presence
                    "Indicates a acl node is configured.";
                  description
                    "Enable acl based mirroring";
                  leaf acl-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..80";
                    }
                    description "ACL name";
                  }
                }  // container acl
    
                leaf acl-ipv4 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv4 ACL based mirroring";
                }
    
                leaf acl-ipv6 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv6 ACL based mirroring";
                }
    
                container mirror {
                  description
                    "Set the mirroring properties of this interface";
                  leaf first {
                    type uint32 {
                      range "1..10000";
                    }
                    description
                      "Enable mirroring on the first portion of a packet";
                  }
    
                  leaf interval {
                    type enumeration {
                      enum "512" {
                        value 1;
                        description
                          "Mirror 1 in every 512 packets";
                      }
                      enum "1K" {
                        value 2;
                        description
                          "Mirror 1 in every 1024 packets";
                      }
                      enum "2K" {
                        value 3;
                        description
                          "Mirror 1 in every 2048 packets";
                      }
                      enum "4K" {
                        value 4;
                        description
                          "Mirror 1 in every 4096 packets";
                      }
                      enum "8K" {
                        value 5;
                        description
                          "Mirror 1 in every 8192 packets";
                      }
                      enum "16K" {
                        value 6;
                        description
                          "Mirror 1 in every 16384 packets";
                      }
                    }
                    description
                      "Enable mirroring of every Nth packet";
                  }
                }  // container mirror
    
                container port-level {
                  presence
                    "Indicates a port-level node is configured.";
                  description
                    "Replicate traffic on all interfaces of a main interface";
                }  // container port-level
              }  // container mpls-ipv6
            }  // container monitor-session-deprecated
    
            leaf vrf {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[not(starts-with(text(),'tunnel-'))] and ../a1:interface-name[not(starts-with(text(),'cem'))] and ../a1:interface-name[not(starts-with(text(),'nve'))]";
              type xr:Cisco-ios-xr-string {
                length "1..32";
              }
              description
                "Set VRF in which the interface operates";
            }
    
            container address-family {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[not(starts-with(text(),'pw-ether'))] and ../a1:interface-name[not(starts-with(text(),'pw-iw'))] and ../a1:interface-name[not(starts-with(text(),'cem'))]";
              description
                "AFI/SAFI configuration";
              container ipv4 {
                description
                  "IPv4 address family";
                container multicast {
                  presence
                    "Indicates a multicast node is configured.";
                  description
                    "Multicast topology";
                  container default-topology {
                    presence
                      "Indicates a default-topology node is configured.";
                    description
                      "Multicast default topology";
                  }  // container default-topology
    
                  container topologies {
                    description
                      "Specify a non-default topology";
                    list topology {
                      key "topology-name";
                      description
                        "Specify a non-default topology";
                      leaf topology-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a non-default topology";
                      }
                    }  // list topology
                  }  // container topologies
                }  // container multicast
              }  // container ipv4
    
              container ipv6 {
                description
                  "IPv6 address family";
                container multicast {
                  presence
                    "Indicates a multicast node is configured.";
                  description
                    "Multicast topology";
                  container default-topology {
                    presence
                      "Indicates a default-topology node is configured.";
                    description
                      "Multicast default topology";
                  }  // container default-topology
    
                  container topologies {
                    description
                      "Specify a non-default topology";
                    list topology {
                      key "topology-name";
                      description
                        "Specify a non-default topology";
                      leaf topology-name {
                        type string {
                          length "1..32";
                        }
                        description
                          "Specify a non-default topology";
                      }
                    }  // list topology
                  }  // container topologies
                }  // container multicast
              }  // container ipv6
            }  // container address-family
    
            container lldp {
              presence
                "Indicates a lldp node is configured.";
              description
                "LLDP interface configuration commands";
              container transmit {
                description
                  "Disable LLDP TX on an interface";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable LLDP TX on an interface";
                }  // container disable
              }  // container transmit
    
              container receive {
                description
                  "Disable LLDP RX on an interface";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable LLDP RX on an interface";
                }  // container disable
              }  // container receive
    
              container destination {
                description
                  "Configure LLDP Destination MAC on the interface";
                container mac-address {
                  presence
                    "Indicates a mac-address node is configured.";
                  description
                    "Destination MAC address on the interface";
                  container ieee-nearest-non-tmpr-bridge {
                    must
                      "not(../ieee-nearest-bridge)";
                    presence
                      "Indicates a ieee-nearest-non-tmpr-bridge node is configured.";
                    description
                      "IEEE Non-TMPR Bridge MAC address, 01:80:C2:00:00:03";
                  }  // container ieee-nearest-non-tmpr-bridge
    
                  container ieee-nearest-bridge {
                    must
                      "not(../ieee-nearest-non-tmpr-bridge)";
                    presence
                      "Indicates a ieee-nearest-bridge node is configured.";
                    description
                      "Default LLDP Destination MAC address, 01:80:C2:00:00:0E";
                  }  // container ieee-nearest-bridge
                }  // container mac-address
              }  // container destination
    
              container enable {
                presence
                  "Indicates a enable node is configured.";
                description
                  "Enable LLDP TX and RX on an interface";
              }  // container enable
            }  // container lldp
    
            container csi-ether {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'CSI-Ether')]";
              description
                "CSI-Ether interface subcommands";
              leaf mtu {
                type uint32 {
                  range "64..9500";
                }
                description
                  "Set the CSI Ether MA MTU";
              }
            }  // container csi-ether
    
            container threshold {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')]";
              description
                "Commands to set the threshold for the appropriate Bit Error Rate";
              leaf sd-ber {
                type uint32 {
                  range "3..15";
                }
                description
                  "Set the Signal Degrade Bit Error Rate threshold";
              }
    
              leaf sf-ber {
                type uint32 {
                  range "4..15";
                }
                description
                  "Set the Signal Fail Bit Error Rate threshold";
              }
            }  // container threshold
    
            container report {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')]";
              description
                "Commands to control interface alarm reporting";
              container sd-ber {
                presence
                  "Indicates a sd-ber node is configured.";
                description
                  "Enable Signal Degrade alarm reporting";
              }  // container sd-ber
    
              container sf-ber {
                description
                  "Commands to control Signal Fail alarm reporting";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable Signal Fail alarm reporting";
                }  // container disable
              }  // container sf-ber
    
              container crc-ber {
                presence
                  "Indicates a crc-ber node is configured.";
                description
                  "Enable CRC based ber monitoring";
              }  // container crc-ber
            }  // container report
    
            container signal {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')]";
              description
                "Bit Error Rate handling signalling commands";
              container sf-ber {
                description
                  "Signal Fail Bit Error Rate signalling commands";
                container remote-fault {
                  presence
                    "Indicates a remote-fault node is configured.";
                  description
                    "Enable Signal Fail remote fault signalling";
                }  // container remote-fault
              }  // container sf-ber
            }  // container signal
    
            container carrier-delay {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'FastEthernet')] or ../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')]";
              description
                "Set the carrier delay on an interface";
              leaf up {
                type uint32 {
                  range "0..2147483647";
                }
                description
                  "Set the carrier delay up value";
              }
    
              leaf down {
                type uint32 {
                  range "0..2147483647";
                }
                description
                  "Set the carrier delay down value";
              }
            }  // container carrier-delay
    
            leaf duplex {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')]";
              type enumeration {
                enum "full" {
                  value 0;
                  description "Full duplex";
                }
                enum "half" {
                  value 1;
                  description "Half duplex";
                }
              }
              description
                "Configure duplex operational mode";
            }
    
            leaf fec {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')]";
              type enumeration {
                enum "none" {
                  value 0;
                  description
                    "Disable any FEC enabled on the interface";
                }
                enum "standard" {
                  value 1;
                  description
                    "Enable the standard (CL-91, Reed-Solomon) FEC";
                }
                enum "base-r" {
                  value 2;
                  description
                    "Enable BASE-R FEC";
                }
              }
              description
                "Set the Forward Error Correction on an interface";
            }
    
            leaf flow-control {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'FastEthernet')] or ../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')] or ../a1:interface-name[starts-with(text(),'CPRIoE')]";
              type enumeration {
                enum "ingress" {
                  value 0;
                  description
                    "Enable the sending of flow control pause frames";
                }
                enum "egress" {
                  value 1;
                  description
                    "Enable the receiving of flow control pause frames";
                }
                enum "bidirectional" {
                  value 2;
                  description
                    "Enable both sending and receiving of flow control pause frames";
                }
              }
              description
                "Set the flow control mode on an interface";
            }
    
            leaf packet-gap {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'TenGigE')]";
              type enumeration {
                enum "non-standard" {
                  value 16;
                  description
                    "Set the non-standard IPG";
                }
              }
              description
                "Set the IPG on an interface";
            }
    
            leaf loopback {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'FastEthernet')] or ../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')] or ../a1:interface-name[starts-with(text(),'CPRIoE')]";
              type enumeration {
                enum "external" {
                  value 0;
                  description
                    "Enable external loopback (requires loopback connector)";
                }
                enum "internal" {
                  value 1;
                  description
                    "Enable internal loopback";
                }
                enum "line" {
                  value 2;
                  description
                    "Enable line loopback";
                }
              }
              description
                "Set the loopback mode on an interface";
            }
    
            container negotiation {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'FastEthernet')] or ../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')]";
              description
                "Select autonegotiation mode";
              container auto {
                presence
                  "Indicates a auto node is configured.";
                description
                  "Perform link autonegotiation";
                container allow-overrides {
                  presence
                    "Indicates a allow-overrides node is configured.";
                  description
                    "Allow configured values to override negotiated settings";
                }  // container allow-overrides
              }  // container auto
            }  // container negotiation
    
            leaf speed {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'MgmtEth')] or ../a1:interface-name[starts-with(text(),'FastEthernet')] or ../a1:interface-name[starts-with(text(),'PTP')] or ../a1:interface-name[starts-with(text(),'GigabitEthernet')]";
              type enumeration {
                enum "10" {
                  value 10;
                  description "Ethernet is 10Mb";
                }
                enum "100" {
                  value 100;
                  description
                    "Ethernet is 100Mb";
                }
                enum "1000" {
                  value 1000;
                  description "Ethernet is 1Gb";
                }
              }
              description
                "Set the ethernet speed on an interface";
            }
    
            container priority-flow-control {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')]";
              description
                "Priority flow control options";
              leaf mode {
                type enumeration {
                  enum "off" {
                    value 0;
                    description
                      "Disable priority flow control";
                  }
                  enum "on" {
                    value 1;
                    description
                      "Enable priority flow control";
                  }
                }
                description
                  "Set priority flow control mode";
              }
    
              container watchdog {
                description
                  " Priority flow control watchdog options";
                leaf mode {
                  type enumeration {
                    enum "off" {
                      value 0;
                      description
                        "Disable priority flow control watchdog";
                    }
                    enum "on" {
                      value 1;
                      description
                        "Enable priority flow control watchdog";
                    }
                  }
                  description
                    "Set priority flow control watchdog mode";
                }
    
                leaf interval {
                  type uint32 {
                    range "100..1000";
                  }
                  description
                    "PFC WD Polling Interval";
                }
    
                leaf shutdown-multiplier {
                  type uint32 {
                    range "1..10";
                  }
                  description
                    "Pause Storm Detection Timer Threshold";
                }
    
                leaf auto-restore-multiplier {
                  type uint32 {
                    range "0..100";
                  }
                  description
                    "Watchdog Auto Restore Timer";
                }
              }  // container watchdog
            }  // container priority-flow-control
    
            container fast-shutdown {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'FastEthernet')] or ((../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')]) and ../a1:interface-name[not(contains(text(),'.'))])";
              presence
                "Indicates a fast-shutdown node is configured.";
              description "Enable fast shutdown";
            }  // container fast-shutdown
    
            container optical-power {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'FastEthernet')] or ((../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')]) and ../a1:interface-name[not(contains(text(),'.'))])";
              description
                "Commands to set the optical power degrade alarm threshold";
              container alarm {
                description
                  "Set the optical power alarm threshold";
                leaf rx {
                  type int32 {
                    range "-300..50";
                  }
                  description
                    "Set the alarm threshold for received optical power";
                }
              }  // container alarm
            }  // container optical-power
    
            container frame-preemption {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'FastEthernet')] or ../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')] or ../a1:interface-name[starts-with(text(),'CPRIoE')]";
              presence
                "Indicates a frame-preemption node is configured.";
              description
                "Configure frame preemption operational mode";
            }  // container frame-preemption
    
            container bundle {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')] or ../a1:interface-name[starts-with(text(),'Bundle-')]";
              description
                "Bundle interface commands";
              container minimum-active {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                description
                  "Set the minimum criteria for the bundle to be active";
                leaf links {
                  type uint32 {
                    range "1..64";
                  }
                  description
                    "Set the number of active links needed to bring up this bundle";
                }
    
                container bandwidth {
                  description
                    "Set the bandwidth needed to bring up this bundle";
                  leaf bandwidth {
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "Set the bandwidth (in kbps) needed to bring up this bundle";
                  }
    
                  leaf kbps {
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "Set the bandwidth in kbps";
                  }
    
                  leaf mbps {
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "Set the bandwidth in mbps";
                  }
    
                  leaf gbps {
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "Set the bandwidth in gbps";
                  }
                }  // container bandwidth
              }  // container minimum-active
    
              container maximum-active {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                description
                  "Set a limit on the number of links that can be active";
                container links {
                  presence
                    "Indicates a links node is configured.";
                  description
                    "Set the maximum number of active links in this bundle";
                  leaf maximum-number {
                    type uint32 {
                      range "1..64";
                    }
                    mandatory true;
                    description
                      "Set the maximum number of active links in this bundle";
                  }
    
                  container hot-standby {
                    presence
                      "Indicates a hot-standby node is configured.";
                    description
                      "Hot-standby behaviour (non-standard, only effective on links with LACP enabled)";
                  }  // container hot-standby
                }  // container links
              }  // container maximum-active
    
              leaf wait-while {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                type uint32 {
                  range "0..2000";
                }
                description
                  "Set the wait-while timeout for members of this bundle";
              }
    
              container shutdown {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                presence
                  "Indicates a shutdown node is configured.";
                description
                  "Bring all links in the bundle down to Standby state";
              }  // container shutdown
    
              container load-balancing {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                description
                  "Load balancing commands on a bundle";
                container hash {
                  description
                    "Select the hash function used for traffic forwarded over the bundle";
                  container src-ip {
                    presence
                      "Indicates a src-ip node is configured.";
                    description
                      "Use the source IP as the hash function";
                  }  // container src-ip
    
                  container dst-ip {
                    presence
                      "Indicates a dst-ip node is configured.";
                    description
                      "Use the destination IP as the hash function";
                  }  // container dst-ip
                }  // container hash
    
                container localize {
                  description
                    "Restrict forwarding to members in the same rack where possible";
                  container threshold {
                    description
                      "The threshold below which traffic is no longer localized";
                    leaf links {
                      type uint32 {
                        range "1..64";
                      }
                      description
                        "Set a threshold of active member links per rack";
                    }
                  }  // container threshold
                }  // container localize
              }  // container load-balancing
    
              leaf lacp-delay {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                type uint32 {
                  range "1000..15000";
                }
                description
                  "Set the lacp-delay timeout for members of this bundle";
              }
    
              container logging {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                description
                  "logging events for the members of this bundle";
                container oos {
                  presence
                    "Indicates a oos node is configured.";
                  description
                    "Enable OOS logging events for the members of this bundle";
                }  // container oos
              }  // container logging
    
              container lacp-fallback {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                description
                  "Set the lacp-fallback for members of this bundle";
                leaf timeout {
                  type uint32 {
                    range "1..120";
                  }
                  description
                    "Set the timeout for lacp-fallback";
                }
              }  // container lacp-fallback
    
              container id {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../../a1:interface-name[starts-with(text(),'TenGigE')] or ../../a1:interface-name[starts-with(text(),'FortyGigE')] or ../../a1:interface-name[starts-with(text(),'HundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../../a1:interface-name[starts-with(text(),'FiftyGigE')]";
                presence
                  "Indicates a id node is configured.";
                description
                  "Add the port to an aggregated interface.";
                leaf bundle-id {
                  type uint32 {
                    range "1..65535";
                  }
                  mandatory true;
                  description
                    "Add the port to an aggregated interface.";
                }
    
                leaf mode {
                  type enumeration {
                    enum "on" {
                      value 1;
                      description
                        "Do not run LACP over the port.";
                    }
                    enum "active" {
                      value 2;
                      description
                        "Run LACP in active mode over the port.";
                    }
                    enum "passive" {
                      value 3;
                      description
                        "Run LACP in passive mode over the port.";
                    }
                    enum "inherit" {
                      value 4;
                      description
                        "Run LACP as configured in bundle.";
                    }
                  }
                  mandatory true;
                  description
                    "Specify the mode of operation.";
                }
              }  // container id
    
              leaf port-priority {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../../a1:interface-name[starts-with(text(),'TenGigE')] or ../../a1:interface-name[starts-with(text(),'FortyGigE')] or ../../a1:interface-name[starts-with(text(),'HundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../../a1:interface-name[starts-with(text(),'FiftyGigE')]";
                type uint32 {
                  range "1..65535";
                }
                description
                  "Priority for this port. Lower value is higher priority.";
              }
            }  // container bundle
    
            container bfd {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'Bundle-')]";
              description
                "BFD configuration on a bundle interface";
              container address-family {
                description
                  "Set configuration for a given address family";
                container ipv4 {
                  description
                    "Set configuration for the IPv4 address family";
                  leaf destination {
                    type inet:ipv4-address-no-zone;
                    description
                      "Set the destination address for the BFD session";
                  }
    
                  container echo {
                    description
                      "Set the configuration for the echo mode of BFD";
                    leaf minimum-interval {
                      type uint32 {
                        range "15..2000";
                      }
                      description
                        "Set the preferred minimum interval for the BFD session";
                    }
                  }  // container echo
    
                  leaf minimum-interval {
                    type uint32 {
                      range "3..30000";
                    }
                    description
                      "Set the preferred minimum interval for the BFD session";
                  }
    
                  leaf multiplier {
                    type uint32 {
                      range "2..50";
                    }
                    description
                      "Set the preferred multiplier for the BFD session";
                  }
    
                  container fast-detect {
                    presence
                      "Indicates a fast-detect node is configured.";
                    description
                      "Enable fast detection using BFD on bundle members";
                  }  // container fast-detect
    
                  container timers {
                    description
                      "Set the timers that determine when a BFD session defaults to down";
                    leaf start {
                      type uint32 {
                        range "1..3600";
                      }
                      description
                        "The time since starting a BFD session before it is considered to have gone down";
                    }
    
                    leaf nbr-unconfig {
                      type uint32 {
                        range "1..3600";
                      }
                      description
                        "The time since a BFD signalled that a peer session is unconfigured before it is considered to have gone down";
                    }
                  }  // container timers
                }  // container ipv4
    
                container ipv6 {
                  description
                    "Set configuration for the IPv6 address family";
                  leaf destination {
                    type inet:ipv6-address-no-zone;
                    description
                      "Set the destination address for the BFD session";
                  }
    
                  leaf minimum-interval {
                    type uint32 {
                      range "3..30000";
                    }
                    description
                      "Set the preferred minimum interval for the BFD session";
                  }
    
                  leaf multiplier {
                    type uint32 {
                      range "2..50";
                    }
                    description
                      "Set the preferred multiplier for the BFD session";
                  }
    
                  container fast-detect {
                    presence
                      "Indicates a fast-detect node is configured.";
                    description
                      "Enable fast detection using BFD on bundle members";
                  }  // container fast-detect
    
                  container timers {
                    description
                      "Set the timers that determine when a BFD session defaults to down";
                    leaf start {
                      type uint32 {
                        range "1..3600";
                      }
                      description
                        "The time since starting a BFD session before it is considered to have gone down";
                    }
    
                    leaf nbr-unconfig {
                      type uint32 {
                        range "1..3600";
                      }
                      description
                        "The time since a BFD signalled that a peer session is unconfigured before it is considered to have gone down";
                    }
                  }  // container timers
                }  // container ipv6
              }  // container address-family
    
              container mode {
                must "cisco or ietf";
                presence
                  "Indicates a mode node is configured.";
                description
                  "Standard used for per-member BFD";
                container cisco {
                  presence
                    "Indicates a cisco node is configured.";
                  description
                    "Use Cisco standard for BoB";
                }  // container cisco
    
                container ietf {
                  presence
                    "Indicates a ietf node is configured.";
                  description
                    "Use IETF standard for BoB";
                }  // container ietf
              }  // container mode
            }  // container bfd
    
            container lacp {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')] or ../a1:interface-name[starts-with(text(),'Bundle-')]";
              description
                "Bundle interface LACP commands";
              container switchover {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                description
                  "Modify behavior for switching between links in this bundle";
                leaf suppress-flaps {
                  type uint32 {
                    range "100..65535";
                  }
                  description
                    "Set the time for which to suppress flaps during a LACP switchover";
                }
              }  // container switchover
    
              container churn {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                description
                  "Settings for LACP churn detection";
                leaf logging {
                  type enumeration {
                    enum "actor" {
                      value 1;
                      description
                        "Log actor churn events only";
                    }
                    enum "partner" {
                      value 2;
                      description
                        "Log partner churn events only";
                    }
                    enum "both" {
                      value 3;
                      description
                        "Log actor and partner churn events";
                    }
                  }
                  description
                    "Set parameters for logging of churn events";
                }
              }  // container churn
    
              leaf collector-max-delay {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                type uint32 {
                  range "0..65535";
                }
                description
                  "Collector max delay to be signaled to the LACP partner";
              }
    
              container timeout {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                description
                  "Set timeout values for LACP-related timers";
                leaf rx-default {
                  type uint32 {
                    range "0..3000";
                  }
                  description
                    "Set the timeout between expired and defaulted states";
                }
    
                leaf actor-churn {
                  type uint32 {
                    range "0..120";
                  }
                  description
                    "Set the timeout to use before declaring actor churn";
                }
    
                leaf partner-churn {
                  type uint32 {
                    range "0..120";
                  }
                  description
                    "Set the timeout to use before declaring partner churn";
                }
              }  // container timeout
    
              container cisco {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                description
                  "Cisco LACP extensions";
                container enable {
                  presence
                    "Indicates a enable node is configured.";
                  description
                    "Enable the use of Cisco LACP extensions";
                  container link-order {
                    description
                      "Link ordering numbers processing";
                    container signaled {
                      presence
                        "Indicates a signaled node is configured.";
                      description
                        "Turn on processing of link ordering numbers";
                    }  // container signaled
                  }  // container link-order
                }  // container enable
              }  // container cisco
    
              container non-revertive {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                presence
                  "Indicates a non-revertive node is configured.";
                description
                  "Set the bundle to lacp non-revertive mode";
              }  // container non-revertive
    
              leaf mode {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                type enumeration {
                  enum "on" {
                    value 0;
                    description
                      "Do not run LACP over the port.";
                  }
                  enum "active" {
                    value 1;
                    description
                      "Run LACP in active mode over the port.";
                  }
                  enum "passive" {
                    value 2;
                    description
                      "Run LACP in passive mode over the port.";
                  }
                }
                description
                  " Set the LACP mode on bundle to be used by its member link";
              }
    
              container system {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                description
                  "Set the default system parameters for LACP bundles";
                leaf priority {
                  type uint32 {
                    range "1..65535";
                  }
                  description
                    "The system priority to use in LACP negotiations.";
                }
    
                leaf mac {
                  type yang:mac-address;
                  description
                    "Configure the system ID to use in LACP negotiations for this bundle.";
                }
              }  // container system
    
              container period {
                must "transmission-id or short";
                presence
                  "Indicates a period node is configured.";
                description
                  "Set the period on bundle to be used by its member link";
                leaf transmission-id {
                  type uint32 {
                    range "2..30000";
                  }
                  description
                    " Set the period on bundle to be used by its member link";
                }
    
                container short {
                  presence
                    "Indicates a short node is configured.";
                  description
                    "set the short period on bundle";
                }  // container short
              }  // container period
    
              leaf default-threshold {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../../a1:interface-name[starts-with(text(),'TenGigE')] or ../../a1:interface-name[starts-with(text(),'FortyGigE')] or ../../a1:interface-name[starts-with(text(),'HundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../../a1:interface-name[starts-with(text(),'FiftyGigE')]";
                type uint32 {
                  range "1..3";
                }
                description
                  "Set the LACP packet default threshold";
              }
    
              leaf expire-threshold {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../../a1:interface-name[starts-with(text(),'TenGigE')] or ../../a1:interface-name[starts-with(text(),'FortyGigE')] or ../../a1:interface-name[starts-with(text(),'HundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../../a1:interface-name[starts-with(text(),'FiftyGigE')]";
                type uint32 {
                  range "1..3";
                }
                description
                  "Set the LACP packet expire threshold";
              }
            }  // container lacp
    
            container mlacp {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'Bundle-')]";
              description
                "Multi-chassis LACP per-interface commands";
              leaf iccp-group {
                type uint32 {
                  range "1..4294967295";
                }
                description
                  "ICCP redundancy group related commands for this bundle.";
              }
    
              leaf port-priority {
                type uint32 {
                  range "1..65535";
                }
                description
                  "Set the priority for all member links on this device when running mLACP.";
              }
    
              container switchover {
                description
                  "Set the parameters for performing a switchover to/from the mLACP peer";
                leaf type {
                  type enumeration {
                    enum "brute-force" {
                      value 1;
                      description
                        "Force switchover by disabling all local member links";
                    }
                    enum "revertive" {
                      value 2;
                      description
                        "Revert based on configured priority values";
                    }
                  }
                  description
                    "Set the type of switchover operation to use";
                }
    
                container maximize {
                  description
                    "Parameters for switchover behavior to maximize operational links/bandwidth";
                  container links {
                    presence
                      "Indicates a links node is configured.";
                    description
                      "Compare the number of operational links";
                    leaf threshold {
                      type uint32 {
                        range "1..64";
                      }
                      description
                        "Set the threshold below which to switch to the peer if it has more links available";
                    }
                  }  // container links
    
                  container bandwidth {
                    presence
                      "Indicates a bandwidth node is configured.";
                    description
                      "Compare the total bandwidth of operational links";
                    leaf threshold {
                      type uint64 {
                        range
                          "1..18446744073709551615";
                      }
                      description
                        "Set the threshold below which to switch to the peer if it has more bandwidth available";
                    }
                  }  // container bandwidth
                }  // container maximize
    
                leaf recovery-delay {
                  type uint32 {
                    range "0..65535";
                  }
                  description
                    "Specify delay before bundle becoming active after recovery from failure";
                }
              }  // container switchover
            }  // container mlacp
    
            container cdp {
              presence
                "Indicates a cdp node is configured.";
              description
                "Enable CDP on an interface";
            }  // container cdp
    
            container cdp-mac-address {
              description
                "Configure CDP MAC address on interface";
              container ethernet-slow-protocols-mac {
                presence
                  "Indicates a ethernet-slow-protocols-mac node is configured.";
                description
                  "Ethernet Slow-Protocols MAC, 01:80:c2:00:00:02";
              }  // container ethernet-slow-protocols-mac
            }  // container cdp-mac-address
    
            container frequency {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'FastEthernet')] or ../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'CPRIoE')]";
              description
                "Frequency Synchronization configuration";
              container synchronization {
                presence
                  "Indicates a synchronization node is configured.";
                description
                  "Frequency Synchronization configuration";
                container ssm {
                  description
                    "SSM configuration commands";
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disable sending of SSMs";
                  }  // container disable
                }  // container ssm
    
                leaf priority {
                  type uint32 {
                    range "1..254";
                  }
                  description "Source priority";
                }
    
                leaf time-of-day-priority {
                  type uint32 {
                    range "1..254";
                  }
                  description
                    "Source time-of-day priority";
                }
    
                container quality {
                  description
                    "Quality level configuration";
                  container transmit {
                    description
                      "Set the quality level to be transmitted";
                    container lowest {
                      description
                        "Specify the lowest acceptable QL value";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../highest/itu-t/option/two/generation/one or
    ../../../../highest/itu-t/option/two/generation/two or
    ../../../../exact/itu-t/option/one or
    ../../../../exact/itu-t/option/two/generation/one or
    ../../../../exact/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container lowest
    
                    container highest {
                      description
                        "Specify the highest acceptable QL value";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../lowest/itu-t/option/one or
    ../../../../lowest/itu-t/option/two/generation/one or
    ../../../../lowest/itu-t/option/two/generation/two or
    ../../../../exact/itu-t/option/one or
    ../../../../exact/itu-t/option/two/generation/one or
    ../../../../exact/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container highest
    
                    container exact {
                      description
                        "Specify the exact QL value to use";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../highest/itu-t/option/two/generation/one or
    ../../../../highest/itu-t/option/two/generation/two or
    ../../../../lowest/itu-t/option/one or
    ../../../../lowest/itu-t/option/two/generation/one or
    ../../../../lowest/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/two or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container exact
                  }  // container transmit
    
                  container receive {
                    description
                      "Adjust the received quality level";
                    container lowest {
                      description
                        "Specify the lowest acceptable QL value";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../highest/itu-t/option/two/generation/one or
    ../../../../highest/itu-t/option/two/generation/two or
    ../../../../exact/itu-t/option/one or
    ../../../../exact/itu-t/option/two/generation/one or
    ../../../../exact/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container lowest
    
                    container highest {
                      description
                        "Specify the highest acceptable QL value";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../lowest/itu-t/option/one or
    ../../../../lowest/itu-t/option/two/generation/one or
    ../../../../lowest/itu-t/option/two/generation/two or
    ../../../../exact/itu-t/option/one or
    ../../../../exact/itu-t/option/two/generation/one or
    ../../../../exact/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container highest
    
                    container exact {
                      description
                        "Specify the exact QL value to use";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../highest/itu-t/option/two/generation/one or
    ../../../../highest/itu-t/option/two/generation/two or
    ../../../../lowest/itu-t/option/one or
    ../../../../lowest/itu-t/option/two/generation/one or
    ../../../../lowest/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/two or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container exact
                  }  // container receive
                }  // container quality
    
                leaf wait-to-restore {
                  type uint32 {
                    range "0..12";
                  }
                  description
                    "Set the wait-to-restore time";
                }
    
                container selection {
                  description
                    "Selection configuration commands";
                  container input {
                    presence
                      "Indicates a input node is configured.";
                    description
                      "Enable this source for selection";
                  }  // container input
                }  // container selection
              }  // container synchronization
            }  // container frequency
    
            container ethernet {
              description
                "Ethernet per-interface configuration commands";
              container oam {
                presence
                  "Indicates a oam node is configured.";
                description "OAM configuration";
                container link-monitor {
                  description
                    "Enter link-monitor submode";
                  container symbol-period {
                    description
                      "Symbol-period event configuration";
                    container window {
                      description
                        "window size for symbol-period event configuration";
                      leaf milliseconds {
                        type uint32 {
                          range "1000..60000";
                        }
                        must
                          "not(../symbols/window-size)";
                        description
                          "Use milliseconds as the units for the symbol-period window";
                      }
    
                      container symbols {
                        description
                          "Use symbols as the units for the symbol-period window";
                        leaf window-size {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          must
                            "not(../../milliseconds)";
                          description
                            "Size of the symbol-period window in symbols";
                        }
    
                        container thousand {
                          must
                            "../window-size and not(../million or ../billion)";
                          presence
                            "Indicates a thousand node is configured.";
                          description
                            "Use thousands of the specified units";
                        }  // container thousand
    
                        container million {
                          must
                            "../window-size and not(../thousand or ../billion)";
                          presence
                            "Indicates a million node is configured.";
                          description
                            "Use millions of the specified units";
                        }  // container million
    
                        container billion {
                          must
                            "../window-size and not(../thousand or ../million)";
                          presence
                            "Indicates a billion node is configured.";
                          description
                            "Use billions of the specified units";
                        }  // container billion
                      }  // container symbols
                    }  // container window
    
                    container threshold {
                      description
                        "threshold configuration for symbol-period events";
                      container symbols {
                        description
                          "Use symbols as the units for the symbol-period threshold";
                        leaf low {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          description
                            "low threshold for symbol-period events";
                        }
    
                        leaf high {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          description
                            "high threshold for symbol-period events";
                        }
    
                        container thousand {
                          must
                            "(../low or ../high) and not(../million or ../billion)";
                          presence
                            "Indicates a thousand node is configured.";
                          description
                            "Use thousands of the specified units";
                        }  // container thousand
    
                        container million {
                          must
                            "(../low or ../high) and not(../thousand or ../billion)";
                          presence
                            "Indicates a million node is configured.";
                          description
                            "Use millions of the specified units";
                        }  // container million
    
                        container billion {
                          must
                            "(../low or ../high) and not(../thousand or ../million)";
                          presence
                            "Indicates a billion node is configured.";
                          description
                            "Use billions of the specified units";
                        }  // container billion
                      }  // container symbols
    
                      container ppm {
                        description
                          "Use parts-per-million as the units for the symbol-period threshold";
                        leaf low {
                          type uint32 {
                            range "1..1000000";
                          }
                          description
                            "low threshold for symbol-period events";
                        }
    
                        leaf high {
                          type uint32 {
                            range "1..1000000";
                          }
                          description
                            "high threshold for symbol-period events";
                        }
                      }  // container ppm
                    }  // container threshold
                  }  // container symbol-period
    
                  container frame {
                    description
                      "Frame event configuration";
                    container window {
                      description
                        "window size for frame event configuration";
                      leaf milliseconds {
                        type uint32 {
                          range "1000..60000";
                        }
                        description
                          "Use milliseconds as the units for the frame window";
                      }
                    }  // container window
    
                    container threshold {
                      description
                        "threshold configuration for frame events";
                      leaf low {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "low threshold for frame events";
                      }
    
                      leaf high {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "high threshold for frame events";
                      }
    
                      container thousand {
                        must
                          "(../low or ../high) and not(../million or ../billion)";
                        presence
                          "Indicates a thousand node is configured.";
                        description
                          "Use thousands of the specified units";
                      }  // container thousand
    
                      container million {
                        must
                          "(../low or ../high) and not(../thousand or ../billion)";
                        presence
                          "Indicates a million node is configured.";
                        description
                          "Use millions of the specified units";
                      }  // container million
    
                      container billion {
                        must
                          "(../low or ../high) and not(../thousand or ../million)";
                        presence
                          "Indicates a billion node is configured.";
                        description
                          "Use billions of the specified units";
                      }  // container billion
                    }  // container threshold
                  }  // container frame
    
                  container frame-period {
                    description
                      "frame-period event configuration";
                    container window {
                      description
                        "window size for frame-period event configuration";
                      leaf milliseconds {
                        type uint32 {
                          range "100..60000";
                        }
                        must
                          "not(../frames/window-size)";
                        description
                          "Use milliseconds as the units for the frame-period window";
                      }
    
                      container frames {
                        description
                          "Use frames as the units for the frame-period window";
                        leaf window-size {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          must
                            "not(../../milliseconds)";
                          description
                            "Size of the frame-period window in symbols";
                        }
    
                        container thousand {
                          must
                            "../window-size and not(../million or ../billion)";
                          presence
                            "Indicates a thousand node is configured.";
                          description
                            "Use thousands of the specified units";
                        }  // container thousand
    
                        container million {
                          must
                            "../window-size and not(../thousand or ../billion)";
                          presence
                            "Indicates a million node is configured.";
                          description
                            "Use millions of the specified units";
                        }  // container million
    
                        container billion {
                          must
                            "../window-size and not(../thousand or ../million)";
                          presence
                            "Indicates a billion node is configured.";
                          description
                            "Use billions of the specified units";
                        }  // container billion
                      }  // container frames
                    }  // container window
    
                    container threshold {
                      description
                        "threshold for frame-period events";
                      container frames {
                        description
                          "Use frames as the units for the frame-period threshold";
                        leaf low {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          description
                            "low threshold for frame-period events";
                        }
    
                        leaf high {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          description
                            "high threshold for frame-period events";
                        }
    
                        container thousand {
                          must
                            "(../low or ../high) and not(../million or ../billion)";
                          presence
                            "Indicates a thousand node is configured.";
                          description
                            "Use thousands of the specified units";
                        }  // container thousand
    
                        container million {
                          must
                            "(../low or ../high) and not(../thousand or ../billion)";
                          presence
                            "Indicates a million node is configured.";
                          description
                            "Use millions of the specified units";
                        }  // container million
    
                        container billion {
                          must
                            "(../low or ../high) and not(../thousand or ../million)";
                          presence
                            "Indicates a billion node is configured.";
                          description
                            "Use billions of the specified units";
                        }  // container billion
                      }  // container frames
    
                      container ppm {
                        description
                          "Use parts-per-million as the units for the frame-period threshold";
                        leaf low {
                          type uint32 {
                            range "1..1000000";
                          }
                          description
                            "low threshold for frame events";
                        }
    
                        leaf high {
                          type uint32 {
                            range "1..1000000";
                          }
                          description
                            "high threshold for frame events";
                        }
                      }  // container ppm
                    }  // container threshold
                  }  // container frame-period
    
                  container frame-seconds {
                    description
                      "frame-seconds event configuration";
                    container window {
                      description
                        "window size for frame-seconds event configuration";
                      leaf milliseconds {
                        type uint32 {
                          range "10000..900000";
                        }
                        description
                          "Use milliseconds as the units for the frame-seconds window";
                      }
                    }  // container window
    
                    container threshold {
                      description "threshold";
                      leaf low {
                        type uint32 {
                          range "1..900";
                        }
                        description
                          "low threshold for frame-seconds events";
                      }
    
                      leaf high {
                        type uint32 {
                          range "1..900";
                        }
                        description
                          "high threshold for frame-seconds events";
                      }
                    }  // container threshold
                  }  // container frame-seconds
    
                  container monitoring {
                    presence
                      "Indicates a monitoring node is configured.";
                    description
                      "Monitoring support";
                    container disable {
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Disable monitoring";
                    }  // container disable
                  }  // container monitoring
                }  // container link-monitor
    
                container mode {
                  description "OAM mode";
                  container passive {
                    must "not(../active)";
                    presence
                      "Indicates a passive node is configured.";
                    description "Passive mode";
                  }  // container passive
    
                  container active {
                    must "not(../passive)";
                    presence
                      "Indicates a active node is configured.";
                    description "Active mode";
                  }  // container active
                }  // container mode
    
                leaf hello-interval {
                  type enumeration {
                    enum "100ms" {
                      value 1;
                      description
                        "100 millisecond hello interval";
                    }
                    enum "1s" {
                      value 0;
                      description
                        "1 second hello interval";
                    }
                  }
                  description
                    "Hello interval time";
                }
    
                container remote-loopback {
                  presence
                    "Indicates a remote-loopback node is configured.";
                  description
                    "Remote-loopback support";
                }  // container remote-loopback
    
                container mib-retrieval {
                  presence
                    "Indicates a mib-retrieval node is configured.";
                  description
                    "MIB retrieval support";
                }  // container mib-retrieval
    
                container uni-directional {
                  description
                    "Uni-directional link-fault detection support";
                  container link-fault {
                    description
                      "Uni-directional link-fault detection support";
                    container detection {
                      presence
                        "Indicates a detection node is configured.";
                      description
                        "Uni-directional link-fault detection support";
                    }  // container detection
                  }  // container link-fault
                }  // container uni-directional
    
                container connection {
                  description
                    "OAM connection configuration";
                  leaf timeout {
                    type uint32 {
                      range "2..30";
                    }
                    description
                      "OAM connection session timeout period";
                  }
                }  // container connection
    
                container profiles {
                  description
                    "Set the profile to use on the interface";
                  leaf interface-profile-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                      pattern
                        '[-a-zA-Z0-9_]*[-a-zA-Z0-9_]';
                    }
                    description
                      "Enter a profile name using only letters, numbers, '_' & '-'";
                  }
                }  // container profiles
    
                container require-remote {
                  description
                    "Enter require-remote submode";
                  container mib-retrieval {
                    presence
                      "Indicates a mib-retrieval node is configured.";
                    description
                      "Requirement of MIB retrieval support";
                  }  // container mib-retrieval
    
                  container remote-loopback {
                    presence
                      "Indicates a remote-loopback node is configured.";
                    description
                      "Requirement of Remote loopback support";
                  }  // container remote-loopback
    
                  container link-monitoring {
                    presence
                      "Indicates a link-monitoring node is configured.";
                    description
                      "Requirement of Link monitoring support";
                  }  // container link-monitoring
    
                  container mode {
                    description
                      "Requirement of a specific OAM mode";
                    container passive {
                      must
                        "not(../active or ../disabled)";
                      presence
                        "Indicates a passive node is configured.";
                      description
                        "Require passive mode";
                    }  // container passive
    
                    container active {
                      must
                        "not(../passive or ../disabled)";
                      presence
                        "Indicates a active node is configured.";
                      description
                        "Require active mode";
                    }  // container active
    
                    container disabled {
                      must
                        "not(../passive or ../active)";
                      presence
                        "Indicates a disabled node is configured.";
                      description
                        "Disable the requirement of a specific mode";
                    }  // container disabled
                  }  // container mode
                }  // container require-remote
    
                container action {
                  description
                    "Enter action submode";
                  container critical-event {
                    description
                      "Action to perform when a critical event occurs";
                    container error-disable-interface {
                      must
                        "not(../log or ../disable)";
                      presence
                        "Indicates a error-disable-interface node is configured.";
                      description
                        "Error-disable the interface";
                    }  // container error-disable-interface
    
                    container log {
                      must
                        "not(../error-disable-interface or ../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must
                        "not(../error-disable-interface or ../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container critical-event
    
                  container dying-gasp {
                    description
                      "Action to perform when a dying gasp occurs";
                    container error-disable-interface {
                      must
                        "not(../log or ../disable)";
                      presence
                        "Indicates a error-disable-interface node is configured.";
                      description
                        "Error-disable the interface";
                    }  // container error-disable-interface
    
                    container log {
                      must
                        "not(../error-disable-interface or ../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must
                        "not(../error-disable-interface or ../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container dying-gasp
    
                  container uni-directional {
                    description
                      "Action to perform when a uni-directional link-fault message is received";
                    container link-fault {
                      description
                        "Action to perform when a uni-directional link-fault message is received";
                      container error-disable-interface {
                        must
                          "not(../efd or ../log
    or ../disable)";
                        presence
                          "Indicates a error-disable-interface node is configured.";
                        description
                          "Error-disable the interface";
                      }  // container error-disable-interface
    
                      container efd {
                        must
                          "not(../error-disable-interface or ../log
    or ../disable)";
                        presence
                          "Indicates a efd node is configured.";
                        description
                          "Bring down the interface using EFD";
                      }  // container efd
    
                      container log {
                        must
                          "not(../error-disable-interface or ../efd
    or ../disable)";
                        presence
                          "Indicates a log node is configured.";
                        description
                          "Log the event";
                      }  // container log
    
                      container disable {
                        must
                          "not(../error-disable-interface or ../efd
    or ../log)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Perform no action";
                      }  // container disable
                    }  // container link-fault
                  }  // container uni-directional
    
                  container capabilities-conflict {
                    description
                      "Action to perform when a capabilities conflict occurs";
                    container error-disable-interface {
                      must
                        "not(../efd or ../log
    or ../disable)";
                      presence
                        "Indicates a error-disable-interface node is configured.";
                      description
                        "Error-disable the interface";
                    }  // container error-disable-interface
    
                    container efd {
                      must
                        "not(../error-disable-interface or ../log
    or ../disable)";
                      presence
                        "Indicates a efd node is configured.";
                      description
                        "Enable EFD to bring down the interface";
                    }  // container efd
    
                    container log {
                      must
                        "not(../error-disable-interface or ../efd
    or ../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must
                        "not(../error-disable-interface or ../efd
    or ../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container capabilities-conflict
    
                  container wiring-conflict {
                    description
                      "Action to perform when a wiring conflict occurs";
                    container efd {
                      must
                        "not(../error-disable-interface or ../log
    or ../disable)";
                      presence
                        "Indicates a efd node is configured.";
                      description
                        "Enable EFD to bring down the interface";
                    }  // container efd
    
                    container error-disable-interface {
                      must
                        "not(../efd or ../log
    or ../disable)";
                      presence
                        "Indicates a error-disable-interface node is configured.";
                      description
                        "Error-disable the interface";
                    }  // container error-disable-interface
    
                    container log {
                      must
                        "not(../efd or ../error-disable-interface
    or ../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must
                        "not(../efd or ../error-disable-interface
    or ../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container wiring-conflict
    
                  container discovery-timeout {
                    description
                      "Action to perform when discovery timeout occurs";
                    container error-disable-interface {
                      must
                        "not(../efd or ../log
    or ../disable)";
                      presence
                        "Indicates a error-disable-interface node is configured.";
                      description
                        "Error-disable the interface";
                    }  // container error-disable-interface
    
                    container efd {
                      must
                        "not(../error-disable-interface or ../log
    or ../disable)";
                      presence
                        "Indicates a efd node is configured.";
                      description
                        "Enable EFD to bring down the interface";
                    }  // container efd
    
                    container log {
                      must
                        "not(../error-disable-interface or ../efd
    or ../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must
                        "not(../error-disable-interface or ../efd
    or ../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container discovery-timeout
    
                  container high-threshold {
                    description
                      "Action to perform when a high-threshold is crossed";
                    container error-disable-interface {
                      must
                        "not(../log or ../disable)";
                      presence
                        "Indicates a error-disable-interface node is configured.";
                      description
                        "disable the interface";
                    }  // container error-disable-interface
    
                    container log {
                      must
                        "not(../error-disable-interface or ../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must
                        "not(../error-disable-interface or ../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container high-threshold
    
                  container remote-loopback {
                    description
                      "Action to perform when a remote loopback event occurs";
                    container log {
                      must "not(../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must "not(../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container remote-loopback
    
                  container session-up {
                    description
                      "Action to perform when a session comes up";
                    container log {
                      must "not(../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must "not(../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container session-up
    
                  container session-down {
                    description
                      "Action to perform when a session goes down";
                    container error-disable-interface {
                      must
                        "not(../efd or ../log
    or ../disable)";
                      presence
                        "Indicates a error-disable-interface node is configured.";
                      description
                        "Error-disable the interface";
                    }  // container error-disable-interface
    
                    container efd {
                      must
                        "not(../error-disable-interface or ../log
    or ../disable)";
                      presence
                        "Indicates a efd node is configured.";
                      description
                        "Enable EFD to bring down the interface";
                    }  // container efd
    
                    container log {
                      must
                        "not(../error-disable-interface or ../efd
    or ../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must
                        "not(../error-disable-interface or ../efd
    or ../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container session-down
                }  // container action
              }  // container oam
            }  // container ethernet
          }  // list interface
    
          list interface-preconfigure {
            key "interface-name";
            description
              "Specify a preconfig interface";
            leaf interface-name {
              type xr:Interface-name;
              description
                "Interface configuration subcommands";
            }
    
            container sub-interface-type {
              description
                "Specify type of sub-interface";
              container l2transport {
                presence
                  "Indicates a l2transport node is configured.";
                description
                  "l2transport sub-interface";
              }  // container l2transport
    
              container point-to-point {
                presence
                  "Indicates a point-to-point node is configured.";
                description
                  "point-to-point sub-interface";
              }  // container point-to-point
    
              container multipoint {
                presence
                  "Indicates a multipoint node is configured.";
                description
                  "multipoint sub-interface";
              }  // container multipoint
            }  // container sub-interface-type
    
            container ipv4 {
              description
                "Interface IPv4 config commands";
              container access-group {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[not(starts-with(text(),'tunnel-gre'))] and ../../a1:interface-name[not(starts-with(text(),'tunnel-te'))] and ../../a1:interface-name[not(starts-with(text(),'Loopback'))] and ../../a1:interface-name[not(starts-with(text(),'vasileft'))] and ../../a1:interface-name[not(starts-with(text(),'vasiright'))]";
                description
                  "Specify access group for packets";
                container ingress {
                  xr:xr-xml-map "ip_pfilter_cfg:Outbound";
                  must "access-list-name-1";
                  presence
                    "Indicates an ingress node is configured.";
                  description
                    "IPv4 Packet filter to be applied to inbound
    packets";
                  container access-list-name-1 {
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type xr:Cisco-ios-xr-string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
    
                    container common {
                      presence
                        "Indicates this is a common Access-list name";
                      description
                        "common Access-list name";
                    }  // container common
                  }  // container access-list-name-1
    
                  container access-list-name-2 {
                    must "../access-list-name-1";
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type xr:Cisco-ios-xr-string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
    
                    container common {
                      presence
                        "Indicates this is a common Access-list name";
                      description
                        "common Access-list name";
                    }  // container common
                  }  // container access-list-name-2
    
                  container access-list-name-3 {
                    must "../access-list-name-2";
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
    
                    container common {
                      presence
                        "Indicates this is a common Access-list name";
                      description
                        "common Access-list name";
                    }  // container common
                  }  // container access-list-name-3
    
                  container access-list-name-4 {
                    must "../access-list-name-3";
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
    
                    container common {
                      presence
                        "Indicates this is a common Access-list name";
                      description
                        "common Access-list name";
                    }  // container common
                  }  // container access-list-name-4
    
                  container access-list-name-5 {
                    must "../access-list-name-4";
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
    
                    container common {
                      presence
                        "Indicates this is a common Access-list name";
                      description
                        "common Access-list name";
                    }  // container common
                  }  // container access-list-name-5
    
                  container hardware-count {
                    tailf:dependency "../../../../a1:interface-name";
                    when
                      "../../../../a1:interface-name[not(starts-with(text(),'MgmtEth'))]";
                    presence
                      "Indicates a hardware-count node is configured.";
                    description
                      "Count packets in hardware";
                  }  // container hardware-count
    
                  container interface-statistics {
                    presence
                      "Indicates an interface-statistics node is configured.";
                    description
                      "Per interface statistics in hardware";
                  }  // container interface-statistics
    
                  leaf compress-level {
                    type uint32 {
                      range "0..3";
                    }
                    must
                      "not(../access-list-name-2 or ../access-list-name-1/common)";
                    description
                      "Specify ACL compression in hardware";
                  }
                }  // container ingress
    
                container egress {
                  xr:xr-xml-map "ip_pfilter_cfg:Outbound";
                  presence
                    "Indicates an egress node is configured.";
                  description
                    "IPv4 Packet filter to be applied to outbound
    packets";
                  container access-list-name {
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type xr:Cisco-ios-xr-string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
                  }  // container access-list-name
    
                  container hardware-count {
                    tailf:dependency "../../../../a1:interface-name";
                    when
                      "../../../../a1:interface-name[not(starts-with(text(),'MgmtEth'))]";
                    presence
                      "Indicates a hardware-count node is configured.";
                    description
                      "Count packets in hardware";
                  }  // container hardware-count
    
                  container interface-statistics {
                    presence
                      "Indicates an interface-statistics node is configured.";
                    description
                      "Per interface statistics in hardware";
                  }  // container interface-statistics
    
                  leaf compress-level {
                    type uint32 {
                      range "0..3";
                    }
                    description
                      "Specify ACL compression in hardware";
                  }
                }  // container egress
              }  // container access-group
    
              container forwarding-enable {
                presence
                  "Indicates a forwarding-enable node is configured.";
                description
                  "enable ipv4 forwarding on a interface";
              }  // container forwarding-enable
    
              container point-to-point {
                presence
                  "Indicates a point-to-point node is configured.";
                description
                  "Enable point-to-point handling for this interface.";
              }  // container point-to-point
    
              leaf mtu {
                type uint32 {
                  range "68..65535";
                }
                description
                  "Set IPv4 Maximum Transmission Unit";
              }
    
              container redirects {
                presence
                  "Indicates a redirects node is configured.";
                description
                  "Enable sending ICMP Redirect messages";
              }  // container redirects
    
              container mask-reply {
                presence
                  "Indicates a mask-reply node is configured.";
                description
                  "Enable sending ICMP mask reply messages";
              }  // container mask-reply
    
              container helper-addresses {
                description
                  "Specify a destination address for UDP broadcasts";
                list helper-address {
                  key "address vrf";
                  description
                    "Specify a destination address for UDP broadcasts";
                  leaf address {
                    type inet:ipv4-address-no-zone;
                    description
                      "Specify a destination address for UDP broadcasts";
                  }
    
                  leaf vrf {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description "VRF name";
                  }
                }  // list helper-address
              }  // container helper-addresses
    
              container icmp {
                description
                  "Disable ICMP unreachable for Nullx interface";
                container unreachables {
                  description
                    "Disable sending ICMP Unreachable messages";
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Override sending of ICMP Unreachable messages";
                  }  // container disable
                }  // container unreachables
              }  // container icmp
    
              container unreachables {
                description
                  "Enable sending ICMP Unreachable messages";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Override sending of ICMP Unreachable messages";
                }  // container disable
              }  // container unreachables
    
              container directed-broadcast {
                presence
                  "Indicates a directed-broadcast node is configured.";
                description
                  "Enable forwarding of directed broadcasts";
              }  // container directed-broadcast
    
              container bgp {
                description
                  "Enable BGP policy based feature";
                container policy {
                  description "BGP policy";
                  container accounting {
                    description
                      "BGP policy accounting";
                    container input {
                      must
                        "source-accounting or destination-accounting";
                      presence
                        "Indicates a input node is configured.";
                      description
                        "BGP policy accounting on input";
                      container source-accounting {
                        presence
                          "Indicates a source-accounting node is configured.";
                        description
                          "BGP policy accounting on source IP address";
                      }  // container source-accounting
    
                      container destination-accounting {
                        presence
                          "Indicates a destination-accounting node is configured.";
                        description
                          "BGP policy accounting on destination IP address";
                      }  // container destination-accounting
                    }  // container input
    
                    container output {
                      must
                        "source-accounting or destination-accounting";
                      presence
                        "Indicates a output node is configured.";
                      description
                        "BGP policy accounting on output";
                      container source-accounting {
                        presence
                          "Indicates a source-accounting node is configured.";
                        description
                          "BGP policy accounting on source IP address";
                      }  // container source-accounting
    
                      container destination-accounting {
                        presence
                          "Indicates a destination-accounting node is configured.";
                        description
                          "BGP policy accounting on destination IP address";
                      }  // container destination-accounting
                    }  // container output
                  }  // container accounting
    
                  container propagation {
                    description
                      "BGP QoS/Flow-tag policy propagation";
                    container input {
                      description
                        "Flow type is input";
                      container ip-precedence {
                        description
                          "QPPB using IP Precedence";
                        container source {
                          must
                            "not(../destination or ../../qos-group/source
    or ../../qos-group/destination)";
                          presence
                            "Indicates a source node is configured.";
                          description
                            "QPPB on source IP address";
                          container qos-group {
                            description
                              "QPPB using Qos Group";
                            container source {
                              must
                                "not(../destination)";
                              presence
                                "Indicates a source node is configured.";
                              description
                                "QPPB on source IP address";
                            }  // container source
    
                            container destination {
                              must
                                "not(../source)";
                              presence
                                "Indicates a destination node is configured.";
                              description
                                "QPPB on destination IP address";
                            }  // container destination
                          }  // container qos-group
                        }  // container source
    
                        container destination {
                          must
                            "not(../source or ../../qos-group/source
    or ../../qos-group/destination)";
                          presence
                            "Indicates a destination node is configured.";
                          description
                            "QPPB on destination IP address";
                          container qos-group {
                            description
                              "QPPB using Qos Group";
                            container destination {
                              presence
                                "Indicates a destination node is configured.";
                              description
                                "QPPB on destination IP address";
                            }  // container destination
                          }  // container qos-group
                        }  // container destination
                      }  // container ip-precedence
    
                      container qos-group {
                        description
                          "QPPB using Qos Group";
                        container source {
                          must
                            "not(../destination or ../../ip-precedence/source
    or ../../ip-precedence/destination)";
                          presence
                            "Indicates a source node is configured.";
                          description
                            "QPPB on source IP address";
                          container ip-precedence {
                            description
                              "QPPB using IP Precedence";
                            container destination {
                              presence
                                "Indicates a destination node is configured.";
                              description
                                "QPPB on destination IP address";
                            }  // container destination
                          }  // container ip-precedence
                        }  // container source
    
                        container destination {
                          must
                            "not(../source or ../../ip-precedence/source
    or ../../ip-precedence/destination)";
                          presence
                            "Indicates a destination node is configured.";
                          description
                            "QPPB on destination IP address";
                        }  // container destination
                      }  // container qos-group
    
                      container flow-tag {
                        must
                          "(source or destination) and not(source and destination)";
                        presence
                          "Indicates a flow-tag node is configured.";
                        description
                          "Flow tag policy option";
                        container source {
                          presence
                            "Indicates a source node is configured.";
                          description
                            "Flow-tag policy on source IP address";
                        }  // container source
    
                        container destination {
                          presence
                            "Indicates a destination node is configured.";
                          description
                            "Flow-tag policy on destination IP address";
                        }  // container destination
                      }  // container flow-tag
                    }  // container input
                  }  // container propagation
                }  // container policy
              }  // container bgp
    
              container verify {
                description
                  "Enable per packet validation";
                container unicast {
                  description
                    "Enable per packet validation for unicast";
                  container source {
                    description
                      "Validation of source address";
                    container reachable-via {
                      presence
                        "Indicates a reachable-via node is configured.";
                      description
                        "Specify reachability check to apply to the source address";
                      leaf type {
                        type enumeration {
                          enum "any" {
                            value 0;
                            description
                              "Source is reachable via any interface";
                          }
                          enum "rx" {
                            value 1;
                            description
                              "Source is reachable via interface on which packet was received";
                          }
                        }
                        mandatory true;
                        description
                          "Source reachable type";
                      }
    
                      leaf allow-self-ping {
                        type boolean;
                        mandatory true;
                        description
                          "Allow router to ping itself (opens vulnerability in verification)";
                      }
    
                      leaf allow-default {
                        type boolean;
                        mandatory true;
                        description
                          "Allow default route to match when checking source address";
                      }
                    }  // container reachable-via
                  }  // container source
                }  // container unicast
              }  // container verify
    
              container ttl-propagate {
                description
                  "Disable ip ttl propagation for this interface.";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable ipv4 ttl propagation on this interface";
                }  // container disable
              }  // container ttl-propagate
    
              container tcp-mss-adjust {
                description
                  "Enable tcp mss adjust for this interface.";
                container enable {
                  presence
                    "Indicates a enable node is configured.";
                  description
                    "Enable tcp mss adjust on this interface";
                }  // container enable
              }  // container tcp-mss-adjust
    
              container flowspec {
                description
                  "Flowspec on IPv4 interface";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable flowspec on interface";
                }  // container disable
              }  // container flowspec
    
              container addresses {
                description
                  "Set the IPv4 address of an interface";
                container address {
                  presence
                    "Indicates a address node is configured.";
                  description
                    "IP address and Mask";
                  leaf address {
                    type inet:ipv4-address-no-zone;
                    mandatory true;
                    description "IP address";
                  }
    
                  leaf netmask {
                    type inet:ipv4-address-no-zone;
                    mandatory true;
                    description "IP subnet mask";
                  }
    
                  leaf route-tag {
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "Route-tag to be associated with this address";
                  }
                }  // container address
    
                container secondaries {
                  description
                    "Specify a secondary address";
                  list secondary {
                    key "address";
                    description
                      "IP address and Mask";
                    leaf address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Secondary IP address";
                    }
    
                    leaf netmask {
                      type inet:ipv4-address-no-zone;
                      mandatory true;
                      description "Netmask";
                    }
    
                    leaf route-tag {
                      type uint32 {
                        range "1..4294967295";
                      }
                      description
                        "Route-tag to be associated with this address";
                    }
                  }  // list secondary
                }  // container secondaries
    
                leaf unnumbered {
                  tailf:dependency "../../../a1:interface-name";
                  when
                    "../../../a1:interface-name[not(starts-with(text(),'pw-ether'))]";
                  type xr:Interface-name;
                  description
                    "Enable IP processing without an explicit address";
                }
    
                container dhcp {
                  tailf:dependency "../../../a1:interface-name";
                  when
                    "../../../a1:interface-name[starts-with(text(),'MgmtEth')] or ../../../a1:interface-name[starts-with(text(),'BVI')]";
                  presence
                    "Indicates a dampening node is configured.";
                  description
                    "IPv4 address and Mask negotiated via DHCP";
                }  // container dhcp
              }  // container addresses
            }  // container ipv4
    
            container ipv6 {
              description
                "Interface IPv6 config commands";
              container access-group {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[not(starts-with(text(),'tunnel-gre'))] and ../../a1:interface-name[not(starts-with(text(),'tunnel-te'))] and ../../a1:interface-name[not(starts-with(text(),'Loopback'))] and ../../a1:interface-name[not(starts-with(text(),'vasileft'))] and ../../a1:interface-name[not(starts-with(text(),'vasiright'))]";
                description
                  "Specify access group for packets";
                container ingress {
                  xr:xr-xml-map "ip_pfilter_cfg:Outbound";
                  must "access-list-name-1";
                  presence
                    "Indicates an ingress node is configured.";
                  description
                    "IPv6 Packet filter to be applied to inbound
    packets";
                  container access-list-name-1 {
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type xr:Cisco-ios-xr-string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
    
                    container common {
                      presence
                        "Indicates this is a common Access-list name";
                      description
                        "common Access-list name";
                    }  // container common
                  }  // container access-list-name-1
    
                  container access-list-name-2 {
                    must "../access-list-name-1";
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type xr:Cisco-ios-xr-string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
    
                    container common {
                      presence
                        "Indicates this is a common Access-list name";
                      description
                        "common Access-list name";
                    }  // container common
                  }  // container access-list-name-2
    
                  container access-list-name-3 {
                    must "../access-list-name-2";
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type xr:Cisco-ios-xr-string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
    
                    container common {
                      presence
                        "Indicates this is a common Access-list name";
                      description
                        "common Access-list name";
                    }  // container common
                  }  // container access-list-name-3
    
                  container access-list-name-4 {
                    must "../access-list-name-3";
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type xr:Cisco-ios-xr-string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
    
                    container common {
                      presence
                        "Indicates this is a common Access-list name";
                      description
                        "common Access-list name";
                    }  // container common
                  }  // container access-list-name-4
    
                  container access-list-name-5 {
                    must "../access-list-name-4";
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
    
                    container common {
                      presence
                        "Indicates this is a common Access-list name";
                      description
                        "common Access-list name";
                    }  // container common
                  }  // container access-list-name-5
    
                  container interface-statistics {
                    presence
                      "Indicates an interface-statistics node is configured.";
                    description
                      "Per interface statistics in hardware";
                  }  // container interface-statistics
    
                  leaf compress-level {
                    type uint32 {
                      range "0..3";
                    }
                    must
                      "not(../access-list-name-2 or ../access-list-name-1/common)";
                    description
                      "Specify ACL compression in hardware";
                  }
                }  // container ingress
    
                container egress {
                  xr:xr-xml-map "ip_pfilter_cfg:Outbound";
                  presence
                    "Indicates an egress node is configured.";
                  description
                    "IPv6 Packet filter to be applied to outbound
    packets";
                  container access-list-name-1 {
                    presence
                      "Indicates this Access-list name is configured";
                    description
                      "Access-list name";
                    leaf name {
                      type xr:Cisco-ios-xr-string {
                        length "1..64";
                      }
                      mandatory true;
                      description
                        "Access-list name";
                    }
                  }  // container access-list-name-1
    
                  container interface-statistics {
                    presence
                      "Indicates an interface-statistics node is configured.";
                    description
                      "Per interface statistics in hardware";
                  }  // container interface-statistics
    
                  leaf compress-level {
                    type uint32 {
                      range "0..3";
                    }
                    description
                      "Specify ACL compression in hardware";
                  }
                }  // container egress
              }  // container access-group
    
              leaf mtu {
                type uint32 {
                  range "1280..65535";
                }
                description
                  "Set IPv6 Maximum Transmission Unit";
              }
    
              container unreachables {
                description
                  "Enable sending ICMP Unreachable messages";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Override sending of ICMP Unreachable messages";
                }  // container disable
              }  // container unreachables
    
              container verify {
                description
                  "Enable per packet validation";
                container unicast {
                  description
                    "Enable per packet validation for unicast";
                  container source {
                    description
                      "Validation of source address";
                    container reachable-via {
                      presence
                        "Indicates a reachable-via node is configured.";
                      description
                        "Specify reachability check to apply to the source address";
                      leaf type {
                        type enumeration {
                          enum "any" {
                            value 0;
                            description
                              "Source is reachable via any interface";
                          }
                          enum "rx" {
                            value 1;
                            description
                              "Source is reachable via interface on which packet was received";
                          }
                        }
                        mandatory true;
                        description
                          "Source reachable type";
                      }
    
                      leaf allow-self-ping {
                        type boolean;
                        mandatory true;
                        description
                          "Allow router to ping itself (opens vulnerability in verification)";
                      }
    
                      leaf allow-default {
                        type boolean;
                        mandatory true;
                        description
                          "Allow default route to match when checking source address";
                      }
                    }  // container reachable-via
                  }  // container source
                }  // container unicast
              }  // container verify
    
              container bgp {
                description
                  "Enable BGP policy based feature";
                container policy {
                  description "BGP policy";
                  container accounting {
                    description
                      "BGP policy accounting";
                    container input {
                      must
                        "source-accounting or destination-accounting";
                      presence
                        "Indicates a input node is configured.";
                      description
                        "BGP policy accounting on input";
                      container source-accounting {
                        presence
                          "Indicates a source-accounting node is configured.";
                        description
                          "BGP policy accounting on source IP address";
                      }  // container source-accounting
    
                      container destination-accounting {
                        presence
                          "Indicates a destination-accounting node is configured.";
                        description
                          "BGP policy accounting on destination IP address";
                      }  // container destination-accounting
                    }  // container input
    
                    container output {
                      must
                        "source-accounting or destination-accounting";
                      presence
                        "Indicates a output node is configured.";
                      description
                        "BGP policy accounting on output";
                      container source-accounting {
                        presence
                          "Indicates a source-accounting node is configured.";
                        description
                          "BGP policy accounting on source IP address";
                      }  // container source-accounting
    
                      container destination-accounting {
                        presence
                          "Indicates a destination-accounting node is configured.";
                        description
                          "BGP policy accounting on destination IP address";
                      }  // container destination-accounting
                    }  // container output
                  }  // container accounting
    
                  container propagation {
                    description
                      "BGP QoS/Flow-tag policy propagation";
                    container input {
                      description
                        "FLow type is input";
                      container ip-precedence {
                        description
                          "QPPB using IP Precedence";
                        container source {
                          must
                            "not(../destination or ../../qos-group/source
    or ../../qos-group/destination)";
                          presence
                            "Indicates a source node is configured.";
                          description
                            "QPPB on source IP address";
                          container qos-group {
                            description
                              "QPPB using Qos Group";
                            container source {
                              must
                                "not(../destination)";
                              presence
                                "Indicates a source node is configured.";
                              description
                                "QPPB on source IP address";
                            }  // container source
    
                            container destination {
                              must
                                "not(../source)";
                              presence
                                "Indicates a destination node is configured.";
                              description
                                "QPPB on destination IP address";
                            }  // container destination
                          }  // container qos-group
                        }  // container source
    
                        container destination {
                          must
                            "not(../source or ../../qos-group/source
    or ../../qos-group/destination)";
                          presence
                            "Indicates a destination node is configured.";
                          description
                            "QPPB on destination IP address";
                          container qos-group {
                            description
                              "QPPB using Qos Group";
                            container destination {
                              presence
                                "Indicates a destination node is configured.";
                              description
                                "QPPB on destination IP address";
                            }  // container destination
                          }  // container qos-group
                        }  // container destination
                      }  // container ip-precedence
    
                      container qos-group {
                        description
                          "QPPB using Qos Group";
                        container source {
                          must
                            "not(../destination or ../../ip-precedence/source
    or ../../ip-precedence/destination)";
                          presence
                            "Indicates a source node is configured.";
                          description
                            "QPPB on source IP address";
                          container ip-precedence {
                            description
                              "QPPB using IP Precedence";
                            container destination {
                              presence
                                "Indicates a destination node is configured.";
                              description
                                "QPPB on destination IP address";
                            }  // container destination
                          }  // container ip-precedence
                        }  // container source
    
                        container destination {
                          must
                            "not(../source or ../../ip-precedence/source
    or ../../ip-precedence/destination)";
                          presence
                            "Indicates a destination node is configured.";
                          description
                            "QPPB on destination IP address";
                        }  // container destination
                      }  // container qos-group
    
                      container flow-tag {
                        must
                          "(source or destination) and not(source and destination)";
                        presence
                          "Indicates a flow-tag node is configured.";
                        description
                          "Flow tag policy option";
                        container source {
                          presence
                            "Indicates a source node is configured.";
                          description
                            "Flow-tag policy on source IP address";
                        }  // container source
    
                        container destination {
                          presence
                            "Indicates a destination node is configured.";
                          description
                            "Flow-tag policy on destination IP address";
                        }  // container destination
                      }  // container flow-tag
                    }  // container input
                  }  // container propagation
                }  // container policy
              }  // container bgp
    
              container ttl-propagate {
                description
                  "Disable ip ttl propagation for this interface.";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable ipv6 ttl propagation on this interface";
                }  // container disable
              }  // container ttl-propagate
    
              container tcp-mss-adjust {
                description
                  "Enable tcp mss adjust for this interface.";
                container enable {
                  presence
                    "Indicates a enable node is configured.";
                  description
                    "Enable tcp mss adjust on this interface";
                }  // container enable
              }  // container tcp-mss-adjust
    
              container flowspec {
                description
                  "Flowspec on IPv6 interface";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable flowspec on interface";
                }  // container disable
              }  // container flowspec
    
              container addresses {
                description
                  "Set the IPv6 address of an interface";
                list ipv6-address {
                  key "address";
                  description "IPv6 address";
                  leaf address {
                    type inet:ip-address-no-zone;
                    description
                      "IPv6 name or address";
                  }
    
                  leaf prefix-length {
                    type xr:Ipv6-prefix-length;
                    mandatory true;
                    description
                      "Prefix length in bits";
                  }
    
                  leaf zone {
                    type union {
                      type string {
                        pattern '0';
                      }
                      type string;
                    }
                    mandatory true;
                    description
                      "IPv6 address zone";
                  }
    
                  leaf route-tag {
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "Route-tag to be associated with this address";
                  }
                }  // list ipv6-address
    
                container link-local-address {
                  presence
                    "Indicates a link-local-address node is configured.";
                  description
                    "Link local IPv6 address";
                  leaf address {
                    type inet:ip-address-no-zone;
                    mandatory true;
                    description "IPv6 address";
                  }
    
                  leaf zone {
                    type union {
                      type string {
                        pattern '0';
                      }
                      type string;
                    }
                    mandatory true;
                    description
                      "IPv6 address zone";
                  }
    
                  leaf route-tag {
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "Route-tag to be associated with this address";
                  }
                }  // container link-local-address
    
                container eui64-addresses {
                  description
                    "EUI-64 IPv6 address";
                  list eui64-address {
                    key "address";
                    description
                      "EUI-64 IPv6 address";
                    leaf address {
                      type inet:ip-address-no-zone;
                      description "IPv6 address";
                    }
    
                    leaf prefix-length {
                      type xr:Ipv6-prefix-length;
                      mandatory true;
                      description
                        "Prefix Length";
                    }
    
                    leaf zone {
                      type union {
                        type string {
                          pattern '0';
                        }
                        type string;
                      }
                      mandatory true;
                      description
                        "IPv6 address zone";
                    }
    
                    leaf route-tag {
                      type uint32 {
                        range "1..4294967295";
                      }
                      description
                        "Route-tag to be associated with this address";
                    }
                  }  // list eui64-address
                }  // container eui64-addresses
    
                container autoconfig {
                  tailf:dependency "../../../a1:interface-name";
                  when
                    "../../../a1:interface-name[starts-with(text(),'MgmtEth')]";
                  presence
                    "Indicates a autoconfig node is configured.";
                  description
                    "Enable slaac on Mgmt interface";
                }  // container autoconfig
    
                container dhcp {
                  tailf:dependency "../../../a1:interface-name";
                  when
                    "../../../a1:interface-name[starts-with(text(),'MgmtEth')] or ../../../a1:interface-name[starts-with(text(),'BVI')]";
                  presence
                    "Indicates a dhcp node is configured.";
                  description
                    "Enable dhcp on this interface";
                }  // container dhcp
    
                container dhcp-client-options {
                  presence
                    "Indicates a dhcp-client-options node is configured.";
                  description
                    "DHCP Client Options";
                }  // container dhcp-client-options
              }  // container addresses
    
              container enable {
                presence
                  "Indicates a dampening node is configured.";
                description
                  "Enable IPv6 on interface";
              }  // container enable
            }  // container ipv6
    
            container dampening {
              tailf:dependency "../interface-name";
              when
                "../interface-name[not(starts-with(text(),'SBC'))] and ../interface-name[not(starts-with(text(),'tunnel-te'))] and ../interface-name[not(starts-with(text(),'tunnel-mte'))] and ../interface-name[not(starts-with(text(),'tunnel-gre'))] and ../interface-name[not(starts-with(text(),'tunnel-ip'))] and ../interface-name[not(starts-with(text(),'VASILeft'))] and ../interface-name[not(starts-with(text(),'VASIRight'))] and ../interface-name[not(starts-with(text(),'service-gre'))] and ../interface-name[not(starts-with(text(),'service-ipsec'))] and ../interface-name[not(starts-with(text(),'InterflexLeft'))] and ../interface-name[not(starts-with(text(),'InterflexRight'))] and ../interface-name[not(starts-with(text(),'CEM'))]";
              presence
                "Indicates a dampening node is configured.";
              description
                "configure state dampening on the given interface";
              container decay-half-life {
                presence
                  "Indicates a decay-half-life node is configured.";
                description
                  "Decay half life (in minutes)";
                leaf value {
                  type uint32 {
                    range "1..45";
                  }
                  mandatory true;
                  description
                    "Decay half life (in minutes)";
                }
    
                container reuse-threshold {
                  must "suppress-threshold";
                  presence
                    "Indicates a reuse-threshold node is configured.";
                  description "Reuse threshold";
                  leaf value {
                    type uint32 {
                      range "1..20000";
                    }
                    mandatory true;
                    description
                      "Reuse threshold";
                  }
    
                  container suppress-threshold {
                    must "max-suppress-time";
                    presence
                      "Indicates a suppress-threshold node is configured.";
                    description
                      "Suppress threshold";
                    leaf value {
                      type uint32 {
                        range "1..20000";
                      }
                      mandatory true;
                      description
                        "Suppress threshold";
                    }
    
                    container max-suppress-time {
                      presence
                        "Indicates a max-suppress-time node is configured.";
                      description
                        "Max suppress time (in minutes)";
                      leaf value {
                        type uint32 {
                          range "1..255";
                        }
                        mandatory true;
                        description
                          "Max suppress time (in minutes)";
                      }
    
                      container restart-penalty {
                        tailf:dependency "../../../../../../interface-name";
                        when
                          "../../../../../../interface-name[not(starts-with(text(),'BVI'))] and ../../../../../../interface-name[not(starts-with(text(),'PW-Ether'))] and ../../../../../../interface-name[not(starts-with(text(),'PW-IW'))] and ../../../../../../interface-name[not(starts-with(text(),'Bundle-Ether'))] and ../../../../../../interface-name[not(starts-with(text(),'Bundle-POS'))] and ../../../../../../interface-name[not(starts-with(text(),'CSI-Ether'))] and ../../../../../../interface-name[not(starts-with(text(),'CSI'))] and ../../../../../../interface-name[not(starts-with(text(),'SFI'))] and ../../../../../../interface-name[not(starts-with(text(),'nve'))] and ../../../../../../interface-name[not(starts-with(text(),'Odu-Group-Mp'))] and ../../../../../../interface-name[not(starts-with(text(),'Odu-Group-Te'))] and ../../../../../../interface-name[not(starts-with(text(),'Loopback'))]";
                        presence
                          "Indicates a restart-penalty node is configured.";
                        description
                          "Restart penalty";
                        leaf value {
                          type uint32 {
                            range "0..20000";
                          }
                          mandatory true;
                          description
                            "Restart penalty";
                        }
                      }  // container restart-penalty
                    }  // container max-suppress-time
                  }  // container suppress-threshold
                }  // container reuse-threshold
              }  // container decay-half-life
            }  // container dampening
    
            container encapsulation {
              tailf:dependency "../interface-name";
              when
                "../interface-name[starts-with(text(),'POS')] or ../interface-name[starts-with(text(),'serial')] or ../interface-name[starts-with(text(),'multilink')]";
              description
                "Set the encapsulation on an interface";
              container ppp {
                presence
                  "Indicates a ppp node is configured.";
                description
                  "Point-to-Point protocol";
              }  // container ppp
    
              container hdlc {
                presence
                  "Indicates a hdlc node is configured.";
                description
                  "Serial HDLC synchronous";
              }  // container hdlc
    
              container mfr {
                tailf:dependency "../../interface-name";
                when
                  "../../interface-name[starts-with(text(),'serial')]";
                presence
                  "Indicates a mfr node is configured.";
                description
                  "Multilink Frame Relay Member Link";
              }  // container mfr
    
              container frame-relay {
                tailf:dependency "../../interface-name";
                when
                  "../../interface-name[not(contains(text(),'.'))]";
                presence
                  "Indicates a frame-relay node is configured.";
                description
                  "Frame Relay networks";
                container IETF {
                  presence
                    "Indicates a IETF node is configured.";
                  description
                    "Use RFC1490/RFC2427 encapsulation";
                }  // container IETF
              }  // container frame-relay
            }  // container encapsulation
    
            container shutdown {
              presence
                "Indicates a shutdown node is configured.";
              description
                "shutdown the given interface";
            }  // container shutdown
    
            leaf mtu {
              tailf:dependency "../interface-name";
              when
                "../interface-name[not(starts-with(text(),'SBC'))] and ../interface-name[not(starts-with(text(),'tunnel-te'))] and ../interface-name[not(starts-with(text(),'tunnel-mte'))] and ../interface-name[not(starts-with(text(),'VASILeft'))] and ../interface-name[not(starts-with(text(),'VASIRight'))] and ../interface-name[not(starts-with(text(),'service-gre'))] and ../interface-name[not(starts-with(text(),'service-ipsec'))] and ../interface-name[not(starts-with(text(),'InterflexLeft'))] and ../interface-name[not(starts-with(text(),'InterflexRight'))] and ../interface-name[not(starts-with(text(),'CEM'))]";
              type uint32 {
                range "64..65535";
              }
              description
                "Set the MTU on an interface";
            }
    
            container logging {
              tailf:dependency "../interface-name";
              when
                "../interface-name[starts-with(text(),'Loopback')] or ../interface-name[starts-with(text(),'Bundle-Ether')] or ../interface-name[starts-with(text(),'Bundle-POS')] or ../interface-name[starts-with(text(),'tunnel')] or ../interface-name[starts-with(text(),'service')] or ../interface-name[starts-with(text(),'Service')] or ../interface-name[starts-with(text(),'VASILeft')] or ../interface-name[starts-with(text(),'VASIRight')] or ../interface-name[starts-with(text(),'FirewallManagement')] or ../interface-name[starts-with(text(),'SBC')] or ../interface-name[starts-with(text(),'InterflexLeft')] or ../interface-name[starts-with(text(),'InterflexRight')] or ../interface-name[starts-with(text(),'BVI')] or ../interface-name[starts-with(text(),'PW-Ether')] or ../interface-name[starts-with(text(),'PW-IW')] or ../interface-name[starts-with(text(),'Odu-Group-Mp')] or ../interface-name[starts-with(text(),'Odu-Group-Te')] or ../interface-name[starts-with(text(),'nve')] or ../interface-name[starts-with(text(),'CSI')] or ../interface-name[starts-with(text(),'SFI')] or ../interface-name[contains(text(),'.')]";
              description
                "Per-interface logging configuration";
              container events {
                description
                  "Per-interface logging events";
                container link-status {
                  presence
                    "Indicates a link-status node is configured.";
                  description
                    "Enable interface and line-protocol state change alarms";
                }  // container link-status
              }  // container events
            }  // container logging
    
            leaf bandwidth {
              tailf:dependency "../interface-name";
              when
                "../interface-name[not(starts-with(text(),'SBC'))] and ../interface-name[not(starts-with(text(),'FirewallManagement'))] and ../interface-name[not(starts-with(text(),'VASILeft'))] and ../interface-name[not(starts-with(text(),'VASIRight'))] and ../interface-name[not(starts-with(text(),'service-gre'))] and ../interface-name[not(starts-with(text(),'service-ipsec'))] and ../interface-name[not(starts-with(text(),'InterflexLeft'))] and ../interface-name[not(starts-with(text(),'InterflexRight'))] and ../interface-name[not(starts-with(text(),'CEM'))]";
              type uint64 {
                range "0..18446744073709551615";
              }
              description
                "Set the bandwidth of an interface";
            }
    
            leaf description {
              type string {
                length "1..1024";
              }
              description
                "Set description for this interface";
            }
    
            container ethernet-services {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[not(starts-with(text(),'tunnel-ip'))] and ../a1:interface-name[not(starts-with(text(),'tunnel-te'))] and ../a1:interface-name[not(starts-with(text(),'Loopback'))] and ../a1:interface-name[not(starts-with(text(),'BVI'))] and ../a1:interface-name[not(starts-with(text(),'MgmtEth'))]";
              description
                "Ethernet related services";
              container access-group {
                description
                  "Specify access control for packets";
                leaf ingress {
                  type xr:Cisco-ios-xr-string {
                    length "1..64";
                  }
                  description
                    "ingress Access-list name";
                }
    
                leaf egress {
                  type xr:Cisco-ios-xr-string {
                    length "1..64";
                  }
                  description
                    "egress Access-list name";
                }
              }  // container access-group
            }  // container ethernet-services
    
            leaf load-interval {
              type uint32 {
                range
                  "0|30|60|90|120|150|180|210|240|270|300|330|360|390|420|450|480|510|540|570|600";
              }
              default "300";
              description
                "Specify interval for load calculation for an interface";
            }
    
            container ipv4 {
              description
                "IPv4 interface subcommands";
              container flowspec {
                description
                  "Flowspec on IPv4 interface";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable FlowSpec on this interface";
                }  // container disable
              }  // container flowspec
            }  // container ipv4
    
            container ipv6 {
              description
                "IPv6 interface subcommands";
              container flowspec {
                description
                  "Flowspec on IPv6 interface";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable flowspec on interface";
                }  // container disable
              }  // container flowspec
            }  // container ipv6
    
            container l2transport {
              presence
                "Indicates a l2transport node is configured.";
              description
                "Enable Layer 2 transport and enter its configuration submode";
              container l2protocol {
                tailf:dependency "../../a1:interface-name";
                when
                  "(../../a1:interface-name[starts-with(text(),'FastEthernet')] or ../../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../../a1:interface-name[starts-with(text(),'TenGigE')] or ../../a1:interface-name[starts-with(text(),'FortyGigE')] or ../../a1:interface-name[starts-with(text(),'HundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../../a1:interface-name[starts-with(text(),'Ethernet')] or ../../a1:interface-name[starts-with(text(),'Bundle-Ether')] or ../../a1:interface-name[starts-with(text(),'PW-Ether')] or ../../a1:interface-name[starts-with(text(),'Interflex')]) and (../../a1:interface-name[not(contains(text(),'.'))] or ../../a1:sub-interface-type/a1:l2transport)";
                description
                  "Layer 2 protocol handling";
                container cpsv {
                  description
                    "CDP, PVST+, STP, and VTP protocols";
                  container tunnel {
                    must
                      "not(../reverse-tunnel) and not(../drop)";
                    presence
                      "Indicates a tunnel node is configured.";
                    description
                      "Tunnel at ingress";
                  }  // container tunnel
    
                  container reverse-tunnel {
                    must
                      "not(../tunnel) and not(../drop)";
                    presence
                      "Indicates a reverse-tunnel node is configured.";
                    description
                      "Tunnel at egress";
                  }  // container reverse-tunnel
    
                  container drop {
                    must
                      "not(../tunnel) and not(../reverse-tunnel)";
                    presence
                      "Indicates a drop node is configured.";
                    description
                      "Drop these protocol packets";
                  }  // container drop
                }  // container cpsv
    
                container cdp {
                  description
                    "Cisco Discovery Protocol";
                  container drop {
                    must
                      "not(../tunnel) and not(../forward)";
                    presence
                      "Indicates a drop node is configured.";
                    description
                      "Drop this protocol's packets";
                  }  // container drop
    
                  container forward {
                    must
                      "not(../drop) and not(../tunnel)";
                    presence
                      "Indicates a forward node is configured.";
                    description
                      "Forward this protocol's packets";
                  }  // container forward
    
                  container tunnel {
                    must
                      "not(../drop) and not(../forward)";
                    presence
                      "Indicates a tunnel node is configured.";
                    description
                      "Tunnel this protocol's packets";
                  }  // container tunnel
    
                  container experimental {
                    description
                      "Modify the MPLS Experimental bits";
                    leaf mpls-experimental-bits {
                      type uint32 {
                        range "0..7";
                      }
                      must
                        "../../forward or ../../tunnel";
                      description
                        "Set the MPLS experimental bits for this interface";
                    }
                  }  // container experimental
                }  // container cdp
    
                container stp {
                  description
                    "Spanning Tree Protocol";
                  container drop {
                    must
                      "not(../tunnel) and not(../forward)";
                    presence
                      "Indicates a drop node is configured.";
                    description
                      "Drop this protocol's packets";
                  }  // container drop
    
                  container forward {
                    must
                      "not(../drop) and not(../tunnel)";
                    presence
                      "Indicates a forward node is configured.";
                    description
                      "Forward this protocol's packets";
                  }  // container forward
    
                  container tunnel {
                    must
                      "not(../drop) and not(../forward)";
                    presence
                      "Indicates a tunnel node is configured.";
                    description
                      "Tunnel this protocol's packets";
                  }  // container tunnel
    
                  container experimental {
                    description
                      "Modify the MPLS Experimental bits";
                    leaf mpls-experimental-bits {
                      type uint32 {
                        range "0..7";
                      }
                      must
                        "../../forward or ../../tunnel";
                      description
                        "Set the MPLS experimental bits for this interface";
                    }
                  }  // container experimental
                }  // container stp
    
                container vtp {
                  description
                    "VLAN Trunk Protocol";
                  container drop {
                    must
                      "not(../tunnel) and not(../forward)";
                    presence
                      "Indicates a drop node is configured.";
                    description
                      "Drop this protocol's packets";
                  }  // container drop
    
                  container forward {
                    must
                      "not(../drop) and not(../tunnel)";
                    presence
                      "Indicates a forward node is configured.";
                    description
                      "Forward this protocol's packets";
                  }  // container forward
    
                  container tunnel {
                    must
                      "not(../drop) and not(../forward)";
                    presence
                      "Indicates a tunnel node is configured.";
                    description
                      "Tunnel this protocol's packets";
                  }  // container tunnel
    
                  container experimental {
                    description
                      "Modify the MPLS Experimental bits";
                    leaf mpls-experimental-bits {
                      type uint32 {
                        range "0..7";
                      }
                      must
                        "../../forward or ../../tunnel";
                      description
                        "Set the MPLS experimental bits for this interface";
                    }
                  }  // container experimental
                }  // container vtp
    
                container pvst {
                  description
                    "Per VLAN Spanning Tree";
                  container drop {
                    must
                      "not(../tunnel) and not(../forward)";
                    presence
                      "Indicates a drop node is configured.";
                    description
                      "Drop this protocol's packets";
                  }  // container drop
    
                  container forward {
                    must
                      "not(../drop) and not(../tunnel)";
                    presence
                      "Indicates a forward node is configured.";
                    description
                      "Forward this protocol's packets";
                  }  // container forward
    
                  container tunnel {
                    must
                      "not(../drop) and not(../forward)";
                    presence
                      "Indicates a tunnel node is configured.";
                    description
                      "Tunnel this protocol's packets";
                  }  // container tunnel
    
                  container experimental {
                    description
                      "Modify the MPLS Experimental bits";
                    leaf mpls-experimental-bits {
                      type uint32 {
                        range "0..7";
                      }
                      must
                        "../../forward or ../../tunnel";
                      description
                        "Set the MPLS experimental bits for this interface";
                    }
                  }  // container experimental
                }  // container pvst
              }  // container l2protocol
    
              container propagate {
                description
                  "Select events to propagate";
                container remote-status {
                  presence
                    "Indicates a remote-status node is configured.";
                  description
                    "Propagate remote link status changes";
                }  // container remote-status
              }  // container propagate
    
              container flow {
                description
                  "Netflow configuration";
                container datalinkframesection {
                  if-feature nf_parser_verify_wrapper_allow_l2_main_dlfs;
                  description
                    "Data link section netflow configuration";
                  container monitor {
                    description
                      "Specify a flow monitor for packets";
                    container ingress-monitors {
                      description
                        "Apply flow monitor on incoming packets";
                      list ingress-monitor {
                        key "monitor-map-name";
                        description
                          "Specify a flow monitor for packets";
                        leaf monitor-map-name {
                          type xr:Cisco-ios-xr-string {
                            length "1..32";
                          }
                          description
                            "Specify a flow monitor for packets";
                        }
                      }  // list ingress-monitor
                    }  // container ingress-monitors
    
                    container ingress-monitor-samplers {
                      description
                        "Specify a flow monitor and sampler for incoming packets";
                      list ingress-monitor-sampler {
                        key "monitor-map-name sampler-map-name";
                        description
                          "Specify a flow monitor and sampler for incoming packets";
                        leaf monitor-map-name {
                          type xr:Cisco-ios-xr-string {
                            length "1..32";
                          }
                          description
                            "Specify a flow monitor for packets";
                        }
    
                        leaf sampler-map-name {
                          type xr:Cisco-ios-xr-string {
                            length "1..32";
                          }
                          description
                            "Specify a sampler for packets";
                        }
                      }  // list ingress-monitor-sampler
                    }  // container ingress-monitor-samplers
                  }  // container monitor
                }  // container datalinkframesection
              }  // container flow
    
              container monitor-sessions {
                description
                  "Monitor-session configuration commands";
                list monitor-session {
                  must
                    "ethernet or ipv4 or ipv6 or mpls-ipv4 or mpls-ipv6";
                  key "session-name";
                  description
                    "Monitor-session configuration commands";
                  leaf session-name {
                    type string {
                      length "1..79";
                    }
                    description
                      "Monitor-session configuration commands";
                  }
    
                  container ethernet {
                    must
                      "not(../ipv4 or ../ipv6 or ../mpls-ipv4 or ../mpls-ipv6)";
                    presence
                      "Indicates a ethernet node is configured.";
                    description
                      "Replicate Ethernet traffic";
                  }  // container ethernet
    
                  container ipv4 {
                    must
                      "not(../ethernet or ../ipv6 or ../mpls-ipv4 or ../mpls-ipv6)";
                    presence
                      "Indicates a ipv4 node is configured.";
                    description
                      "Replicate IPv4 traffic";
                  }  // container ipv4
    
                  container ipv6 {
                    must
                      "not(../ipv4 or ../ethernet or ../mpls-ipv4 or ../mpls-ipv6)";
                    presence
                      "Indicates a ipv6 node is configured.";
                    description
                      "Replicate IPv6 traffic";
                  }  // container ipv6
    
                  container mpls-ipv4 {
                    must
                      "not(../ipv4 or ../ipv6 or ../ethernet or ../mpls-ipv6)";
                    presence
                      "Indicates a mpls-ipv4 node is configured.";
                    description
                      "Replicate MPLS-IPv4 traffic";
                  }  // container mpls-ipv4
    
                  container mpls-ipv6 {
                    must
                      "not(../ipv4 or ../ipv6 or ../mpls-ipv4 or ../ethernet)";
                    presence
                      "Indicates a mpls-ipv6 node is configured.";
                    description
                      "Replicate MPLS-IPv6 traffic";
                  }  // container mpls-ipv6
    
                  container direction {
                    description
                      "Specify the direction of traffic to replicate";
                    container rx-only {
                      must "not(../tx-only)";
                      presence
                        "Indicates a rx-only node is configured.";
                      description
                        "Replicate only received (ingress) traffic";
                    }  // container rx-only
    
                    container tx-only {
                      must "not(../rx-only)";
                      presence
                        "Indicates a tx-only node is configured.";
                      description
                        "Replicate only transmitted (egress) traffic";
                    }  // container tx-only
                  }  // container direction
    
                  container port-level {
                    presence
                      "Indicates a port-level node is configured.";
                    description
                      "Replicate traffic on all interfaces of a main interface";
                  }  // container port-level
    
                  container acl {
                    presence
                      "Indicates a acl node is configured.";
                    description
                      "Enable acl based mirroring";
                    leaf acl-name {
                      type xr:Cisco-ios-xr-string {
                        length "1..80";
                      }
                      description "ACL name";
                    }
                  }  // container acl
    
                  leaf acl-ipv4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..80";
                    }
                    description
                      "Enable IPv4 ACL based mirroring";
                  }
    
                  leaf acl-ipv6 {
                    type xr:Cisco-ios-xr-string {
                      length "1..80";
                    }
                    description
                      "Enable IPv6 ACL based mirroring";
                  }
    
                  container mirror {
                    description
                      "Set the mirroring properties of this interface";
                    leaf first {
                      type uint32 {
                        range "1..10000";
                      }
                      description
                        "Enable mirroring on the first portion of a packet";
                    }
    
                    leaf interval {
                      type enumeration {
                        enum "512" {
                          value 1;
                          description
                            "Mirror 1 in every 512 packets";
                        }
                        enum "1K" {
                          value 2;
                          description
                            "Mirror 1 in every 1024 packets";
                        }
                        enum "2K" {
                          value 3;
                          description
                            "Mirror 1 in every 2048 packets";
                        }
                        enum "4K" {
                          value 4;
                          description
                            "Mirror 1 in every 4096 packets";
                        }
                        enum "8K" {
                          value 5;
                          description
                            "Mirror 1 in every 8192 packets";
                        }
                        enum "16K" {
                          value 6;
                          description
                            "Mirror 1 in every 16384 packets";
                        }
                      }
                      description
                        "Enable mirroring of every Nth packet";
                    }
                  }  // container mirror
                }  // list monitor-session
              }  // container monitor-sessions
    
              container monitor-session-deprecated {
                description
                  "Monitor-session deprecated configuration commands";
                container ethernet {
                  presence
                    "Indicates a ethernet node is configured.";
                  description
                    "Replicate Ethernet traffic";
                  leaf session-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..79";
                    }
                    mandatory true;
                    description "Session Name";
                  }
    
                  container direction {
                    description
                      "Specify the direction of traffic to replicate";
                    container rx-only {
                      must "not(../tx-only)";
                      presence
                        "Indicates a rx-only node is configured.";
                      description
                        "Replicate only received (ingress) traffic";
                    }  // container rx-only
    
                    container tx-only {
                      must "not(../rx-only)";
                      presence
                        "Indicates a tx-only node is configured.";
                      description
                        "Replicate only transmitted (egress) traffic";
                    }  // container tx-only
                  }  // container direction
    
                  container acl {
                    presence
                      "Indicates a acl node is configured.";
                    description
                      "Enable acl based mirroring";
                    leaf acl-name {
                      type xr:Cisco-ios-xr-string {
                        length "1..80";
                      }
                      description "ACL name";
                    }
                  }  // container acl
    
                  leaf acl-ipv4 {
                    type xr:Cisco-ios-xr-string {
                      length "1..80";
                    }
                    description
                      "Enable IPv4 ACL based mirroring";
                  }
    
                  leaf acl-ipv6 {
                    type xr:Cisco-ios-xr-string {
                      length "1..80";
                    }
                    description
                      "Enable IPv6 ACL based mirroring";
                  }
    
                  container mirror {
                    description
                      "Set the mirroring properties of this interface";
                    leaf first {
                      type uint32 {
                        range "1..10000";
                      }
                      description
                        "Enable mirroring on the first portion of a packet";
                    }
    
                    leaf interval {
                      type enumeration {
                        enum "512" {
                          value 1;
                          description
                            "Mirror 1 in every 512 packets";
                        }
                        enum "1K" {
                          value 2;
                          description
                            "Mirror 1 in every 1024 packets";
                        }
                        enum "2K" {
                          value 3;
                          description
                            "Mirror 1 in every 2048 packets";
                        }
                        enum "4K" {
                          value 4;
                          description
                            "Mirror 1 in every 4096 packets";
                        }
                        enum "8K" {
                          value 5;
                          description
                            "Mirror 1 in every 8192 packets";
                        }
                        enum "16K" {
                          value 6;
                          description
                            "Mirror 1 in every 16384 packets";
                        }
                      }
                      description
                        "Enable mirroring of every Nth packet";
                    }
                  }  // container mirror
    
                  container port-level {
                    presence
                      "Indicates a port-level node is configured.";
                    description
                      "Replicate traffic on all interfaces of a main interface";
                  }  // container port-level
                }  // container ethernet
              }  // container monitor-session-deprecated
            }  // container l2transport
    
            container carrier-delay {
              tailf:dependency "../a1:interface-name";
              when
                "(../a1:interface-name[starts-with(text(),'FastEthernet')] or ../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')] or ../a1:interface-name[starts-with(text(),'Bundle-Ether')] or ../a1:interface-name[starts-with(text(),'PW-Ether')])and ../a1:interface-name[contains(text(),'.')]";
              description
                "Set the carrier delay on an interface";
              leaf up {
                type uint32 {
                  range "1..65535";
                }
                description
                  "Set the carrier delay up value";
              }
            }  // container carrier-delay
    
            container encapsulation {
              tailf:dependency "../a1:interface-name";
              when
                "(../a1:interface-name[starts-with(text(),'FastEthernet')] or ../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')] or ../a1:interface-name[starts-with(text(),'Bundle-Ether')] or ../a1:interface-name[starts-with(text(),'PW-Ether')])and ../a1:interface-name[contains(text(),'.')]and not(../a1:sub-interface-type/a1:l2transport)";
              description
                "Specify which packets will be matched by this sub-interface";
              container dot1q {
                description
                  "IEEE 802.1Q VLAN-tagged packets";
                leaf vlan-id {
                  type uint32 {
                    range "1..4094";
                  }
                  description
                    "Configure first (outer) VLAN ID on the subinterface";
                }
    
                leaf second-dot1q {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id";
                  description
                    "Configure second (inner 802.1Q) VLAN ID on the subinterface";
                }
              }  // container dot1q
    
              container dot1ad {
                description
                  "IEEE 802.1ad VLAN-tagged packets";
                leaf vlan-id {
                  type uint32 {
                    range "1..4094";
                  }
                  description
                    "Configure first (outer) VLAN ID on the subinterface";
                }
    
                leaf dot1q {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id";
                  description
                    "Configure second (inner 802.1Q) VLAN ID on the subinterface";
                }
              }  // container dot1ad
            }  // container encapsulation
    
            container l2transport-encapsulation {
              tailf:dependency "../a1:interface-name";
              when
                "(../a1:interface-name[starts-with(text(),'FastEthernet')] or ../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')] or ../a1:interface-name[starts-with(text(),'Bundle-Ether')] or ../a1:interface-name[starts-with(text(),'PW-Ether')])and ../a1:interface-name[contains(text(),'.')]and ../a1:sub-interface-type/a1:l2transport";
              description
                "Specify which packets will be matched by this sub-interface";
              container dot1q {
                description
                  "IEEE 802.1Q VLAN-tagged packets";
                leaf vlan-id {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "any" {
                        value 4096;
                        description
                          "Match any VLAN id";
                      }
                    }
                  }
                  must "not(../priority-tagged)";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "not-set" {
                        value 4097;
                        description
                          "Need to set this when configuring additional vlan-id with a single VLAN id";
                      }
                    }
                  }
                  must
                    "../vlan-id and ../vlan-id != 'any'";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-2 {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "untagged" {
                        value 65534;
                        description
                          "Packets with no explicit VLAN tag";
                      }
                    }
                  }
                  must
                    "../vlan-id and ../vlan-id != 'any' and ../end-vlan-id";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-2 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-2";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-3 {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "untagged" {
                        value 65534;
                        description
                          "Packets with no explicit VLAN tag";
                      }
                    }
                  }
                  must "../vlan-id-2";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-3 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-3";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-4 {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "untagged" {
                        value 65534;
                        description
                          "Packets with no explicit VLAN tag";
                      }
                    }
                  }
                  must "../vlan-id-3";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-4 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-4";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-5 {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "untagged" {
                        value 65534;
                        description
                          "Packets with no explicit VLAN tag";
                      }
                    }
                  }
                  must "../vlan-id-4";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-5 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-5";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-6 {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "untagged" {
                        value 65534;
                        description
                          "Packets with no explicit VLAN tag";
                      }
                    }
                  }
                  must "../vlan-id-5";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-6 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-6";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-7 {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "untagged" {
                        value 65534;
                        description
                          "Packets with no explicit VLAN tag";
                      }
                    }
                  }
                  must "../vlan-id-6";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-7 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-7";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-8 {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "untagged" {
                        value 65534;
                        description
                          "Packets with no explicit VLAN tag";
                      }
                    }
                  }
                  must "../vlan-id-7";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-8 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-8";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-9 {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "untagged" {
                        value 65534;
                        description
                          "Packets with no explicit VLAN tag";
                      }
                    }
                  }
                  must "../vlan-id-8";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-9 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-9";
                  description
                    "End of VLAN range";
                }
    
                leaf second-dot1q {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "any" {
                        value 4096;
                        description
                          "Match any VLAN id";
                      }
                    }
                  }
                  must "../vlan-id";
                  description
                    "End of VLAN range";
                }
    
                container exact {
                  presence
                    "Indicates this node is configured.";
                  description
                    "Do not allow further inner tags";
                }  // container exact
    
                container ingress {
                  description
                    "Perform MAC-based matching";
                  leaf source-mac {
                    type yang:mac-address;
                    description
                      "Perform source MAC-based matching";
                  }
                }  // container ingress
    
                container priority-tagged {
                  must "not(../vlan-id)";
                  presence
                    "Indicates a priority-tagged node is configured.";
                  description
                    "IEEE 802.1ad priority-tagged packets";
                  container dot1q {
                    presence
                      "Indicates a dot1q node is configured.";
                    description
                      "IEEE 802.1Q VLAN-tagged packets";
                    leaf vlan-id {
                      type union {
                        type uint32 {
                          range "1..4094";
                        }
                        type enumeration {
                          enum "any" {
                            value 4096;
                            description
                              "Match any VLAN id";
                          }
                        }
                      }
                      mandatory true;
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id != 'any'";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-2 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id != 'any'";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-2 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-2";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-3 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-2";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-3 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-3";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-4 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-3";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-4 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-4";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-5 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-4";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-5 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-5";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-6 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-5";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-6 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-6";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-7 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-6";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-7 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-7";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-8 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-7";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-8 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-8";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-9 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-8";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-9 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-9";
                      description
                        "End of VLAN range";
                    }
                  }  // container dot1q
    
                  container exact {
                    presence
                      "Indicates this node is configured.";
                    description
                      "Do not allow further inner tags";
                  }  // container exact
    
                  container ingress {
                    description
                      "Perform MAC-based matching";
                    leaf source-mac {
                      type yang:mac-address;
                      description
                        "Perform source MAC-based matching";
                    }
                  }  // container ingress
                }  // container priority-tagged
              }  // container dot1q
    
              container dot1ad {
                description
                  "IEEE 802.1ad VLAN-tagged packets";
                leaf vlan-id {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "any" {
                        value 4096;
                        description
                          "Match any VLAN id";
                      }
                    }
                  }
                  must "not(../priority-tagged)";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "not-set" {
                        value 4097;
                        description
                          "Need to set this when configuring additional vlan-id with a single VLAN id";
                      }
                    }
                  }
                  must
                    "../vlan-id and ../vlan-id != 'any'";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-2 {
                  type uint32 {
                    range "1..4094";
                  }
                  must
                    "../vlan-id and ../vlan-id != 'any' and ../end-vlan-id";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-2 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-2";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-3 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-2";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-3 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-3";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-4 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-3";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-4 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-4";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-5 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-4";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-5 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-5";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-6 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-5";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-6 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-6";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-7 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-6";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-7 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-7";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-8 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-7";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-8 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-8";
                  description
                    "End of VLAN range";
                }
    
                leaf vlan-id-9 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-8";
                  description
                    "Single VLAN id or start of VLAN range";
                }
    
                leaf end-vlan-id-9 {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-9";
                  description
                    "End of VLAN range";
                }
    
                leaf dot1q {
                  type union {
                    type uint32 {
                      range "1..4094";
                    }
                    type enumeration {
                      enum "any" {
                        value 4096;
                        description
                          "Match any VLAN id";
                      }
                    }
                  }
                  must "../vlan-id";
                  description
                    "End of VLAN range";
                }
    
                container exact {
                  presence
                    "Indicates this node is configured.";
                  description
                    "Do not allow further inner tags";
                }  // container exact
    
                container ingress {
                  description
                    "Perform MAC-based matching";
                  leaf source-mac {
                    type yang:mac-address;
                    description
                      "Perform source MAC-based matching";
                  }
                }  // container ingress
    
                container priority-tagged {
                  must "not(../vlan-id)";
                  presence
                    "Indicates a priority-tagged node is configured.";
                  description
                    "IEEE 802.1ad priority-tagged packets";
                  container dot1q {
                    presence
                      "Indicates a dot1q node is configured.";
                    description
                      "IEEE 802.1Q VLAN-tagged packets";
                    leaf vlan-id {
                      type union {
                        type uint32 {
                          range "1..4094";
                        }
                        type enumeration {
                          enum "any" {
                            value 4096;
                            description
                              "Match any VLAN id";
                          }
                        }
                      }
                      mandatory true;
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id != 'any'";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-2 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id != 'any'";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-2 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-2";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-3 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-2";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-3 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-3";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-4 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-3";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-4 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-4";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-5 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-4";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-5 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-5";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-6 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-5";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-6 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-6";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-7 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-6";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-7 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-7";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-8 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-7";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-8 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-8";
                      description
                        "End of VLAN range";
                    }
    
                    leaf vlan-id-9 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-8";
                      description
                        "Single VLAN id or start of VLAN range";
                    }
    
                    leaf end-vlan-id-9 {
                      type uint32 {
                        range "1..4094";
                      }
                      must "../vlan-id-9";
                      description
                        "End of VLAN range";
                    }
                  }  // container dot1q
    
                  container exact {
                    presence
                      "Indicates this node is configured.";
                    description
                      "Do not allow further inner tags";
                  }  // container exact
    
                  container ingress {
                    description
                      "Perform MAC-based matching";
                    leaf source-mac {
                      type yang:mac-address;
                      description
                        "Perform source MAC-based matching";
                    }
                  }  // container ingress
                }  // container priority-tagged
              }  // container dot1ad
    
              container untagged {
                presence
                  "Indicates untagged node is configured.";
                description
                  "Packets with no explicit VLAN tag";
                container dot1q {
                  presence
                    "Indicates a dot1q node is configured.";
                  description
                    "IEEE 802.1Q VLAN-tagged packets";
                  leaf vlan-id {
                    type union {
                      type uint32 {
                        range "1..4094";
                      }
                      type enumeration {
                        enum "any" {
                          value 4096;
                          description
                            "Match any VLAN id";
                        }
                      }
                    }
                    mandatory true;
                    description
                      "Single VLAN id or start of VLAN range";
                  }
    
                  leaf end-vlan-id {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id != 'any'";
                    description
                      "End of VLAN range";
                  }
    
                  leaf vlan-id-2 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id != 'any'";
                    description
                      "Single VLAN id or start of VLAN range";
                  }
    
                  leaf end-vlan-id-2 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-2";
                    description
                      "End of VLAN range";
                  }
    
                  leaf vlan-id-3 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-2";
                    description
                      "Single VLAN id or start of VLAN range";
                  }
    
                  leaf end-vlan-id-3 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-3";
                    description
                      "End of VLAN range";
                  }
    
                  leaf vlan-id-4 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-3";
                    description
                      "Single VLAN id or start of VLAN range";
                  }
    
                  leaf end-vlan-id-4 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-4";
                    description
                      "End of VLAN range";
                  }
    
                  leaf vlan-id-5 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-4";
                    description
                      "Single VLAN id or start of VLAN range";
                  }
    
                  leaf end-vlan-id-5 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-5";
                    description
                      "End of VLAN range";
                  }
    
                  leaf vlan-id-6 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-5";
                    description
                      "Single VLAN id or start of VLAN range";
                  }
    
                  leaf end-vlan-id-6 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-6";
                    description
                      "End of VLAN range";
                  }
    
                  leaf vlan-id-7 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-6";
                    description
                      "Single VLAN id or start of VLAN range";
                  }
    
                  leaf end-vlan-id-7 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-7";
                    description
                      "End of VLAN range";
                  }
    
                  leaf vlan-id-8 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-7";
                    description
                      "Single VLAN id or start of VLAN range";
                  }
    
                  leaf end-vlan-id-8 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-8";
                    description
                      "End of VLAN range";
                  }
    
                  leaf vlan-id-9 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-8";
                    description
                      "Single VLAN id or start of VLAN range";
                  }
    
                  leaf end-vlan-id-9 {
                    type uint32 {
                      range "1..4094";
                    }
                    must "../vlan-id-9";
                    description
                      "End of VLAN range";
                  }
                }  // container dot1q
    
                container ingress {
                  description
                    "Perform MAC-based matching";
                  leaf source-mac {
                    type yang:mac-address;
                    description
                      "Perform source MAC-based matching";
                  }
                }  // container ingress
              }  // container untagged
    
              container default {
                presence
                  "Indicates default node is configured.";
                description
                  "Packets unmatched by other service instances";
              }  // container default
            }  // container l2transport-encapsulation
    
            container rewrite {
              description
                "Set the tag rewriting policy for this EFP";
              container ingress {
                description
                  "Set the tag rewriting policy for this EFP";
                container tag {
                  description
                    "Set the tag rewriting policy for this EFP";
                  container push {
                    description
                      "Push one or more tags";
                    container dot1q {
                      must
                        "not(../dot1ad or
        ../../pop/one or
        ../../pop/two or
        ../../translate/one-to-one/dot1q or
        ../../translate/one-to-one/dot1ad or
        ../../translate/one-to-two/dot1q or
        ../../translate/one-to-two/dot1ad or
        ../../translate/two-to-one/dot1q or
        ../../translate/two-to-one/dot1ad or
        ../../translate/two-to-two/dot1q or
        ../../translate/two-to-two/dot1ad)";
                      presence
                        "Indicates dot1q node is configured.";
                      description
                        "Push a Dot1Q tag";
                      leaf vlan-id {
                        type uint32 {
                          range "1..4094";
                        }
                        mandatory true;
                        description
                          "Push a Dot1Q tag";
                      }
    
                      leaf second-dot1q {
                        type uint32 {
                          range "1..4094";
                        }
                        description
                          "Push another Dot1Q tag";
                      }
                    }  // container dot1q
    
                    container dot1ad {
                      must
                        "not(../dot1q or
        ../../pop/one or
        ../../pop/two or
        ../../translate/one-to-one/dot1q or
        ../../translate/one-to-one/dot1ad or
        ../../translate/one-to-two/dot1q or
        ../../translate/one-to-two/dot1ad or
        ../../translate/two-to-one/dot1q or
        ../../translate/two-to-one/dot1ad or
        ../../translate/two-to-two/dot1q or
        ../../translate/two-to-two/dot1ad)";
                      presence
                        "Indicates dot1ad node is configured.";
                      description
                        "Push a Dot1ad tag";
                      leaf vlan-id {
                        type uint32 {
                          range "1..4094";
                        }
                        mandatory true;
                        description
                          "Push a Dot1Q tag";
                      }
    
                      leaf dot1q {
                        type uint32 {
                          range "1..4094";
                        }
                        description
                          "Push an inner Dot1Q tag";
                      }
                    }  // container dot1ad
                  }  // container push
    
                  container pop {
                    description
                      "Remove one or more tags";
                    container one {
                      must
                        "not(../../push/dot1q or
        ../../push/dot1ad or
        ../two or
        ../../translate/one-to-one/dot1q or
        ../../translate/one-to-one/dot1ad or
        ../../translate/one-to-two/dot1q or
        ../../translate/one-to-two/dot1ad or
        ../../translate/two-to-one/dot1q or
        ../../translate/two-to-one/dot1ad or
        ../../translate/two-to-two/dot1q or
        ../../translate/two-to-two/dot1ad)";
                      presence
                        "Indicates this node is configured.";
                      description
                        "Remove outer tag only";
                    }  // container one
    
                    container two {
                      must
                        "not(../../push/dot1q or
        ../../push/dot1ad or
        ../one or
        ../../translate/one-to-one/dot1q or
        ../../translate/one-to-one/dot1ad or
        ../../translate/one-to-two/dot1q or
        ../../translate/one-to-two/dot1ad or
        ../../translate/two-to-one/dot1q or
        ../../translate/two-to-one/dot1ad or
        ../../translate/two-to-two/dot1q or
        ../../translate/two-to-two/dot1ad)";
                      presence
                        "Indicates this node is configured.";
                      description
                        "Remove two outermost tags";
                    }  // container two
                  }  // container pop
    
                  container translate {
                    description
                      "Replace tags with other tags";
                    container one-to-one {
                      description
                        "Replace the outermost tag with another tag";
                      container dot1q {
                        must
                          "not(../../../push/dot1q or
        ../../../push/dot1ad or
        ../../../pop/one or
        ../../../pop/two or
        ../dot1ad or
        ../../one-to-two/dot1q or
        ../../one-to-two/dot1ad or
        ../../two-to-one/dot1q or
        ../../two-to-one/dot1ad or
        ../../two-to-two/dot1q or
        ../../two-to-two/dot1ad)";
                        presence
                          "Indicates dot1q node is configured.";
                        description
                          "Push a Dot1Q tag";
                        leaf vlan-id {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push a Dot1Q tag";
                        }
                      }  // container dot1q
    
                      container dot1ad {
                        must
                          "not(../../../push/dot1q or
        ../../../push/dot1ad or
        ../../../pop/one or
        ../../../pop/two or
        ../dot1q or
        ../../one-to-two/dot1q or
        ../../one-to-two/dot1ad or
        ../../two-to-one/dot1q or
        ../../two-to-one/dot1ad or
        ../../two-to-two/dot1q or
        ../../two-to-two/dot1ad)";
                        presence
                          "Indicates dot1ad node is configured.";
                        description
                          "Push a Dot1ad tag";
                        leaf vlan-id {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push a Dot1Q tag";
                        }
                      }  // container dot1ad
                    }  // container one-to-one
    
                    container one-to-two {
                      description
                        "Replace the outermost tag with two tags";
                      container dot1q {
                        must
                          "not(../../../push/dot1q or
        ../../../push/dot1ad or
        ../../../pop/one or
        ../../../pop/two or
        ../../one-to-one/dot1q or
        ../../one-to-one/dot1ad or
        ../dot1ad or
        ../../two-to-one/dot1q or
        ../../two-to-one/dot1ad or
        ../../two-to-two/dot1q or
        ../../two-to-two/dot1ad)";
                        presence
                          "Indicates a dot1q node is configured.";
                        description
                          "Push a Dot1Q tag";
                        leaf vlan-id {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push a Dot1Q tag";
                        }
    
                        leaf second-dot1q {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push an inner Dot1Q tag";
                        }
                      }  // container dot1q
    
                      container dot1ad {
                        must
                          "not(../../../push/dot1q or
        ../../../push/dot1ad or
        ../../../pop/one or
        ../../../pop/two or
        ../../one-to-one/dot1q or
        ../../one-to-one/dot1ad or
        ../dot1q or
        ../../two-to-one/dot1q or
        ../../two-to-one/dot1ad or
        ../../two-to-two/dot1q or
        ../../two-to-two/dot1ad)";
                        presence
                          "Indicates a dot1ad node is configured.";
                        description
                          "Push a Dot1ad tag";
                        leaf vlan-id {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push a Dot1Q tag";
                        }
    
                        leaf dot1q {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push an inner Dot1Q tag";
                        }
                      }  // container dot1ad
                    }  // container one-to-two
    
                    container two-to-one {
                      description
                        "Replace the outermost two tags with one tag";
                      container dot1q {
                        must
                          "not(../../../push/dot1q or
        ../../../push/dot1ad or
        ../../../pop/one or
        ../../../pop/two or
        ../../one-to-one/dot1q or
        ../../one-to-one/dot1ad or
        ../../one-to-two/dot1q or
        ../../one-to-two/dot1ad or
        ../dot1ad or
        ../../two-to-two/dot1q or
        ../../two-to-two/dot1ad)";
                        presence
                          "Indicates dot1q node is configured.";
                        description
                          "Push a Dot1Q tag";
                        leaf vlan-id {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push a Dot1Q tag";
                        }
                      }  // container dot1q
    
                      container dot1ad {
                        must
                          "not(../../../push/dot1q or
        ../../../push/dot1ad or
        ../../../pop/one or
        ../../../pop/two or
        ../../one-to-one/dot1q or
        ../../one-to-one/dot1ad or
        ../../one-to-two/dot1q or
        ../../one-to-two/dot1ad or
        ../dot1q or
        ../../two-to-two/dot1q or
        ../../two-to-two/dot1ad)";
                        presence
                          "Indicates dot1ad node is configured.";
                        description
                          "Push a Dot1ad tag";
                        leaf vlan-id {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push a Dot1Q tag";
                        }
                      }  // container dot1ad
                    }  // container two-to-one
    
                    container two-to-two {
                      description
                        "Replace the outermost two tags with two other tags";
                      container dot1q {
                        must
                          "not(../../../push/dot1q or
        ../../../push/dot1ad or
        ../../../pop/one or
        ../../../pop/two or
        ../../one-to-one/dot1q or
        ../../one-to-one/dot1ad or
        ../../one-to-two/dot1q or
        ../../one-to-two/dot1ad or
        ../dot1ad or
        ../../two-to-one/dot1q or
        ../../two-to-one/dot1ad)";
                        presence
                          "Indicates a dot1q node is configured.";
                        description
                          "Push a Dot1Q tag";
                        leaf vlan-id {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push a Dot1Q tag";
                        }
    
                        leaf second-dot1q {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push an inner Dot1Q tag";
                        }
                      }  // container dot1q
    
                      container dot1ad {
                        must
                          "not(../../../push/dot1q or
        ../../../push/dot1ad or
        ../../../pop/one or
        ../../../pop/two or
        ../../one-to-one/dot1q or
        ../../one-to-one/dot1ad or
        ../../one-to-two/dot1q or
        ../../one-to-two/dot1ad or
        ../dot1q or
        ../../two-to-one/dot1q or
        ../../two-to-one/dot1ad)";
                        presence
                          "Indicates a dot1ad node is configured.";
                        description
                          "Push a Dot1ad tag";
                        leaf vlan-id {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push a Dot1Q tag";
                        }
    
                        leaf dot1q {
                          type uint32 {
                            range "1..4094";
                          }
                          mandatory true;
                          description
                            "Push an inner Dot1Q tag";
                        }
                      }  // container dot1ad
                    }  // container two-to-two
                  }  // container translate
                }  // container tag
              }  // container ingress
            }  // container rewrite
    
            container local-traffic {
              description
                "Set the default encapsulation for this EFP";
              container default {
                description
                  "Set the default encapsulation for this EFP";
                container encapsulation {
                  description
                    "Set the default encapsulation for this EFP";
                  container dot1q {
                    presence
                      "Indicates a dot1q node is configured.";
                    description
                      "Default Dot1Q tag";
                    leaf vlan-id {
                      type uint32 {
                        range "1..4094";
                      }
                      mandatory true;
                      description
                        "Default Dot1Q tag";
                    }
    
                    leaf second-dot1q {
                      type uint32 {
                        range "1..4094";
                      }
                      description
                        "Default second Dot1Q tag";
                    }
                  }  // container dot1q
    
                  container dot1ad {
                    presence
                      "Indicates a dot1ad node is configured.";
                    description
                      "Default Dot1ad tag";
                    leaf vlan-id {
                      type uint32 {
                        range "1..4094";
                      }
                      mandatory true;
                      description
                        "Default Dot1ad tag";
                    }
    
                    leaf dot1q {
                      type uint32 {
                        range "1..4094";
                      }
                      description
                        "Default inner Dot1Q tag";
                    }
                  }  // container dot1ad
                }  // container encapsulation
              }  // container default
            }  // container local-traffic
    
            container dot1q {
              description
                "802.1Q VLAN configuration";
              container native {
                description
                  "802.1Q Native VLAN configuration";
                leaf vlan {
                  type uint32 {
                    range "1..4094";
                  }
                  description
                    "Configure the Native VLAN ID for the trunk";
                }
              }  // container native
    
              container tunneling {
                description
                  "Q-in-Q configuration";
                leaf ethertype {
                  type enumeration {
                    enum "0x9100" {
                      value 37120;
                      description
                        "The outer Ethertype uses value 0x9100 (default is 0x8100)";
                    }
                    enum "0x9200" {
                      value 37376;
                      description
                        "The outer Ethertype uses value 0x9200 (default is 0x8100)";
                    }
                  }
                  description
                    "Configure the outer Ethertype used for Q-in-Q frames";
                }
              }  // container tunneling
            }  // container dot1q
    
            container mac-accounting {
              description
                "Start per MAC address accounting on the interface";
              container ingress {
                presence
                  "Indicates a ingress node is configured.";
                description
                  "Enable accounting on ingress direction";
              }  // container ingress
    
              container egress {
                presence
                  "Indicates a egress node is configured.";
                description
                  "Enable accounting on egress direction";
              }  // container egress
            }  // container mac-accounting
    
            container vlan-switched {
              description
                "Enable vlan-switched on this interface";
              container trunk {
                description
                  "Enable vlan-switched on trunk port";
                container dot1q {
                  description
                    "IEEE 802.1Q VLAN-tagged packets";
                  leaf vlan-ranges {
                    type xr:Cisco-ios-xr-string {
                      length "1..1024";
                    }
                    must
                      "not(../../dot1ad/vlan-ranges) and not(../../../access)";
                    description
                      "List of VLAN Ranges in the form a-b,c,d,e-f,g";
                  }
                }  // container dot1q
    
                container dot1ad {
                  description
                    "IEEE 802.1ad VLAN-tagged packets";
                  leaf vlan-ranges {
                    type xr:Cisco-ios-xr-string {
                      length "1..1024";
                    }
                    must
                      "not(../../dot1q/vlan-ranges) and not(../../../access)";
                    description
                      "List of VLAN Ranges in the form a-b,c,d,e-f,g";
                  }
                }  // container dot1ad
              }  // container trunk
    
              leaf access {
                type uint32 {
                  range "1..4094";
                }
                must
                  "not(../trunk/dot1q/vlan-ranges) and not(../trunk/dot1ad/vlan-ranges)";
                description
                  "Enable vlan-switched on access port";
              }
            }  // container vlan-switched
    
            container flow {
              if-feature netflow_if_supported;
              description
                "Netflow configuration";
              container ipv4 {
                description
                  "IPV4 netflow configuration";
                container monitor {
                  description
                    "Specify a flow monitor for packets";
                  container ingress-monitors {
                    description
                      "Apply flow monitor on incoming packets";
                    list ingress-monitor {
                      key "monitor-map-name";
                      description
                        "Specify a flow monitor for packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
                    }  // list ingress-monitor
                  }  // container ingress-monitors
    
                  container ingress-monitor-samplers {
                    description
                      "Specify a flow monitor and sampler for incoming packets";
                    list ingress-monitor-sampler {
                      key "monitor-map-name sampler-map-name";
                      description
                        "Specify a flow monitor and sampler for incoming packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
    
                      leaf sampler-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a sampler for packets";
                      }
                    }  // list ingress-monitor-sampler
                  }  // container ingress-monitor-samplers
    
                  container egress-monitors {
                    description
                      "Apply flow monitor on outgoing packets";
                    list egress-monitor {
                      key "monitor-map-name";
                      description
                        "Specify a flow monitor for packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
                    }  // list egress-monitor
                  }  // container egress-monitors
    
                  container egress-monitor-samplers {
                    description
                      "Specify a flow monitor and sampler for outgoing packets";
                    list egress-monitor-sampler {
                      key "monitor-map-name sampler-map-name";
                      description
                        "Specify a flow monitor and sampler for outgoing packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
    
                      leaf sampler-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a sampler for packets";
                      }
                    }  // list egress-monitor-sampler
                  }  // container egress-monitor-samplers
                }  // container monitor
              }  // container ipv4
    
              container mpls {
                if-feature netflow_pd_allow_mpls_kw;
                description
                  "MPLS netflow configuration";
                container monitor {
                  description
                    "Specify a flow monitor for packets";
                  container ingress-monitors {
                    description
                      "Apply flow monitor on incoming packets";
                    list ingress-monitor {
                      key "monitor-map-name";
                      description
                        "Specify a flow monitor for packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
                    }  // list ingress-monitor
                  }  // container ingress-monitors
    
                  container ingress-monitor-samplers {
                    description
                      "Specify a flow monitor and sampler for incoming packets";
                    list ingress-monitor-sampler {
                      key "monitor-map-name sampler-map-name";
                      description
                        "Specify a flow monitor and sampler for incoming packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
    
                      leaf sampler-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a sampler for packets";
                      }
                    }  // list ingress-monitor-sampler
                  }  // container ingress-monitor-samplers
    
                  container egress-monitors {
                    description
                      "Apply flow monitor on outgoing packets";
                    list egress-monitor {
                      key "monitor-map-name";
                      description
                        "Specify a flow monitor for packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
                    }  // list egress-monitor
                  }  // container egress-monitors
    
                  container egress-monitor-samplers {
                    description
                      "Specify a flow monitor and sampler for outgoing packets";
                    list egress-monitor-sampler {
                      key "monitor-map-name sampler-map-name";
                      description
                        "Specify a flow monitor and sampler for outgoing packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
    
                      leaf sampler-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a sampler for packets";
                      }
                    }  // list egress-monitor-sampler
                  }  // container egress-monitor-samplers
                }  // container monitor
              }  // container mpls
    
              container ipv6 {
                if-feature netflow_pd_allow_ipv6_kw;
                description
                  "IPV6 netflow configuration";
                container monitor {
                  description
                    "Specify a flow monitor for packets";
                  container ingress-monitors {
                    description
                      "Apply flow monitor on incoming packets";
                    list ingress-monitor {
                      key "monitor-map-name";
                      description
                        "Specify a flow monitor for packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
                    }  // list ingress-monitor
                  }  // container ingress-monitors
    
                  container ingress-monitor-samplers {
                    description
                      "Specify a flow monitor and sampler for incoming packets";
                    list ingress-monitor-sampler {
                      key "monitor-map-name sampler-map-name";
                      description
                        "Specify a flow monitor and sampler for incoming packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
    
                      leaf sampler-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a sampler for packets";
                      }
                    }  // list ingress-monitor-sampler
                  }  // container ingress-monitor-samplers
    
                  container egress-monitors {
                    description
                      "Apply flow monitor on outgoing packets";
                    list egress-monitor {
                      key "monitor-map-name";
                      description
                        "Specify a flow monitor for packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
                    }  // list egress-monitor
                  }  // container egress-monitors
    
                  container egress-monitor-samplers {
                    description
                      "Specify a flow monitor and sampler for outgoing packets";
                    list egress-monitor-sampler {
                      key "monitor-map-name sampler-map-name";
                      description
                        "Specify a flow monitor and sampler for outgoing packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
    
                      leaf sampler-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a sampler for packets";
                      }
                    }  // list egress-monitor-sampler
                  }  // container egress-monitor-samplers
                }  // container monitor
              }  // container ipv6
    
              container datalinkframesection {
                if-feature netflow_pd_allow_sectiondata_kw;
                description
                  "Data link section netflow configuration";
                container monitor {
                  description
                    "Specify a flow monitor for packets";
                  container ingress-monitors {
                    description
                      "Apply flow monitor on incoming packets";
                    list ingress-monitor {
                      key "monitor-map-name";
                      description
                        "Specify a flow monitor for packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
                    }  // list ingress-monitor
                  }  // container ingress-monitors
    
                  container ingress-monitor-samplers {
                    description
                      "Specify a flow monitor and sampler for incoming packets";
                    list ingress-monitor-sampler {
                      key "monitor-map-name sampler-map-name";
                      description
                        "Specify a flow monitor and sampler for incoming packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
    
                      leaf sampler-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a sampler for packets";
                      }
                    }  // list ingress-monitor-sampler
                  }  // container ingress-monitor-samplers
    
                  container egress-monitors {
                    description
                      "Apply flow monitor on outgoing packets";
                    list egress-monitor {
                      key "monitor-map-name";
                      description
                        "Specify a flow monitor for packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
                    }  // list egress-monitor
                  }  // container egress-monitors
    
                  container egress-monitor-samplers {
                    description
                      "Specify a flow monitor and sampler for outgoing packets";
                    list egress-monitor-sampler {
                      key "monitor-map-name sampler-map-name";
                      description
                        "Specify a flow monitor and sampler for outgoing packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
    
                      leaf sampler-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a sampler for packets";
                      }
                    }  // list egress-monitor-sampler
                  }  // container egress-monitor-samplers
                }  // container monitor
              }  // container datalinkframesection
    
              container map-t {
                if-feature nf_parser_verify_wrapper_allow_intf_mapt_kw;
                description
                  "Map-t netflow configuration";
                container monitor {
                  description
                    "Specify a flow monitor for packets";
                  container ingress-monitors {
                    description
                      "Apply flow monitor on incoming packets";
                    list ingress-monitor {
                      key "monitor-map-name";
                      description
                        "Specify a flow monitor for packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
                    }  // list ingress-monitor
                  }  // container ingress-monitors
    
                  container ingress-monitor-samplers {
                    description
                      "Specify a flow monitor and sampler for incoming packets";
                    list ingress-monitor-sampler {
                      key "monitor-map-name sampler-map-name";
                      description
                        "Specify a flow monitor and sampler for incoming packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
    
                      leaf sampler-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a sampler for packets";
                      }
                    }  // list ingress-monitor-sampler
                  }  // container ingress-monitor-samplers
    
                  container egress-monitors {
                    description
                      "Apply flow monitor on outgoing packets";
                    list egress-monitor {
                      key "monitor-map-name";
                      description
                        "Specify a flow monitor for packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
                    }  // list egress-monitor
                  }  // container egress-monitors
    
                  container egress-monitor-samplers {
                    description
                      "Specify a flow monitor and sampler for outgoing packets";
                    list egress-monitor-sampler {
                      key "monitor-map-name sampler-map-name";
                      description
                        "Specify a flow monitor and sampler for outgoing packets";
                      leaf monitor-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a flow monitor for packets";
                      }
    
                      leaf sampler-map-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a sampler for packets";
                      }
                    }  // list egress-monitor-sampler
                  }  // container egress-monitor-samplers
                }  // container monitor
              }  // container map-t
            }  // container flow
    
            container mpls {
              description
                "MPLS interface subcommands";
              leaf mtu {
                type uint32 {
                  range "68..65535";
                }
                description
                  "Set the MPLS MTU for the interface";
              }
    
              container label-security {
                description
                  "MPLS label-security for the interface";
                container rpf {
                  presence
                    "Indicates a rpf node is configured.";
                  description
                    "MPLS RPF for incoming packets";
                }  // container rpf
    
                container multi-label-packet {
                  description
                    "Handling incoming packets with multiple labels on the stack";
                  container drop {
                    presence
                      "Indicates a drop node is configured.";
                    description
                      "Drop packets with multiple labels on the stack";
                  }  // container drop
                }  // container multi-label-packet
              }  // container label-security
            }  // container mpls
    
            container host-routing {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'BVI')]";
              presence
                "Indicates a host-routing node is configured.";
              description
                "Enable host-routing on this interface";
            }  // container host-routing
    
            container gratuitous-announcement-timer {
              presence
                "Indicates a gratuitous-announcement-timer node is configured.";
              description
                "Enable gratuitous announcement (GARP) timer on this interface";
              leaf interval {
                type uint32 {
                  range "60..30000";
                }
                description
                  "Gratuitous announcement (GARP/NA) timer interval in seconds";
              }
    
              leaf jitter {
                type uint32 {
                  range "0..100";
                }
                description
                  "Gratuitous announcement (GARP/NA) timer jitter percentage";
              }
            }  // container gratuitous-announcement-timer
    
            container pw-ether {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'PW-Ether')]";
              description
                "Configuration for pw-ether interface";
              container attach {
                description
                  "Attach to an interface list";
                leaf generic-interface-list {
                  type xr:Cisco-ios-xr-string {
                    length "1..32";
                  }
                  description "Interface List";
                }
              }  // container attach
    
              leaf l2overhead {
                type uint32 {
                  range "1..64";
                }
                description
                  "Set Layer 2 Overhead size";
              }
            }  // container pw-ether
    
            container pw-iw {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'PW-IW')]";
              description
                "Configuration for pw-iw interface";
              container attach {
                description
                  "Attach to an interface list";
                leaf generic-interface-list {
                  type xr:Cisco-ios-xr-string {
                    length "1..32";
                  }
                  description "Interface List";
                }
              }  // container attach
    
              leaf l2overhead {
                type uint32 {
                  range "1..64";
                }
                description
                  "Set Layer 2 Overhead size";
              }
            }  // container pw-iw
    
            container arp {
              description
                "Configure Address Resolution Protocol";
              leaf timeout {
                type uint32 {
                  range "30..2144448000";
                }
                description
                  "Set ARP cache timeout";
              }
    
              leaf purge-delay {
                type uint32 {
                  range "1..65535";
                }
                description
                  "Delay purging ARP entries when the interface goes down";
              }
    
              container learning {
                description
                  "Configuration for dynamic learning of ARP entries";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable dynamic learning of ARP entries";
                }  // container disable
    
                container local {
                  presence
                    "Indicates a local node is configured.";
                  description
                    "Enable dynamic learning only for local subnet only";
                }  // container local
    
                container solicited {
                  presence
                    "Indicates a solicited node is configured.";
                  description
                    "Enable dynamic learning only for solicited ARP packets";
                }  // container solicited
              }  // container learning
    
              container gratuitous {
                description
                  "Configure the handling of Gratuitous ARP packets";
                container ignore {
                  presence
                    "Indicates a ignore node is configured.";
                  description
                    "Ignore the receipt of Gratuitous ARP packets";
                }  // container ignore
              }  // container gratuitous
    
              container drop-adjacency {
                if-feature drop-adjacency;
                description
                  "Set ARP drop adjacency timeout";
                leaf timeout {
                  type uint32 {
                    range "900..7200";
                  }
                  default "3600";
                  description "Specify timeout";
                }
              }  // container drop-adjacency
            }  // container arp
    
            container proxy-arp {
              presence
                "Indicates a proxy-arp node is configured.";
              description "Enable proxy ARP";
            }  // container proxy-arp
    
            container local-proxy-arp {
              presence
                "Indicates a local-proxy-arp node is configured.";
              description
                "Enable local proxy ARP";
            }  // container local-proxy-arp
    
            container monitor-sessions {
              description
                "Monitor-session configuration commands";
              list monitor-session {
                must
                  "ethernet or ipv4 or ipv6 or mpls-ipv4 or mpls-ipv6";
                key "session-name";
                description
                  "Monitor-session configuration commands";
                leaf session-name {
                  type string {
                    length "1..79";
                  }
                  description
                    "Monitor-session configuration commands";
                }
    
                container ethernet {
                  must
                    "not(../ipv4 or ../ipv6 or ../mpls-ipv4 or ../mpls-ipv6)";
                  presence
                    "Indicates a ethernet node is configured.";
                  description
                    "Replicate Ethernet traffic";
                }  // container ethernet
    
                container ipv4 {
                  must
                    "not(../ethernet or ../ipv6 or ../mpls-ipv4 or ../mpls-ipv6)";
                  presence
                    "Indicates a ipv4 node is configured.";
                  description
                    "Replicate IPv4 traffic";
                }  // container ipv4
    
                container ipv6 {
                  must
                    "not(../ipv4 or ../ethernet or ../mpls-ipv4 or ../mpls-ipv6)";
                  presence
                    "Indicates a ipv6 node is configured.";
                  description
                    "Replicate IPv6 traffic";
                }  // container ipv6
    
                container mpls-ipv4 {
                  must
                    "not(../ipv4 or ../ipv6 or ../ethernet or ../mpls-ipv6)";
                  presence
                    "Indicates a mpls-ipv4 node is configured.";
                  description
                    "Replicate MPLS-IPv4 traffic";
                }  // container mpls-ipv4
    
                container mpls-ipv6 {
                  must
                    "not(../ipv4 or ../ipv6 or ../mpls-ipv4 or ../ethernet)";
                  presence
                    "Indicates a mpls-ipv6 node is configured.";
                  description
                    "Replicate MPLS-IPv6 traffic";
                }  // container mpls-ipv6
    
                container direction {
                  description
                    "Specify the direction of traffic to replicate";
                  container rx-only {
                    must "not(../tx-only)";
                    presence
                      "Indicates a rx-only node is configured.";
                    description
                      "Replicate only received (ingress) traffic";
                  }  // container rx-only
    
                  container tx-only {
                    must "not(../rx-only)";
                    presence
                      "Indicates a tx-only node is configured.";
                    description
                      "Replicate only transmitted (egress) traffic";
                  }  // container tx-only
                }  // container direction
    
                container port-level {
                  presence
                    "Indicates a port-level node is configured.";
                  description
                    "Replicate traffic on all interfaces of a main interface";
                }  // container port-level
    
                container acl {
                  presence
                    "Indicates a acl node is configured.";
                  description
                    "Enable acl based mirroring";
                  leaf acl-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..80";
                    }
                    description "ACL name";
                  }
                }  // container acl
    
                leaf acl-ipv4 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv4 ACL based mirroring";
                }
    
                leaf acl-ipv6 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv6 ACL based mirroring";
                }
    
                container mirror {
                  description
                    "Set the mirroring properties of this interface";
                  leaf first {
                    type uint32 {
                      range "1..10000";
                    }
                    description
                      "Enable mirroring on the first portion of a packet";
                  }
    
                  leaf interval {
                    type enumeration {
                      enum "512" {
                        value 1;
                        description
                          "Mirror 1 in every 512 packets";
                      }
                      enum "1K" {
                        value 2;
                        description
                          "Mirror 1 in every 1024 packets";
                      }
                      enum "2K" {
                        value 3;
                        description
                          "Mirror 1 in every 2048 packets";
                      }
                      enum "4K" {
                        value 4;
                        description
                          "Mirror 1 in every 4096 packets";
                      }
                      enum "8K" {
                        value 5;
                        description
                          "Mirror 1 in every 8192 packets";
                      }
                      enum "16K" {
                        value 6;
                        description
                          "Mirror 1 in every 16384 packets";
                      }
                    }
                    description
                      "Enable mirroring of every Nth packet";
                  }
                }  // container mirror
              }  // list monitor-session
            }  // container monitor-sessions
    
            container monitor-session-deprecated {
              description
                "Monitor-session deprecated configuration commands";
              container ethernet {
                presence
                  "Indicates a ethernet node is configured.";
                description
                  "Replicate Ethernet traffic";
                leaf session-name {
                  type xr:Cisco-ios-xr-string {
                    length "1..79";
                  }
                  mandatory true;
                  description "Session Name";
                }
    
                container direction {
                  description
                    "Specify the direction of traffic to replicate";
                  container rx-only {
                    must "not(../tx-only)";
                    presence
                      "Indicates a rx-only node is configured.";
                    description
                      "Replicate only received (ingress) traffic";
                  }  // container rx-only
    
                  container tx-only {
                    must "not(../rx-only)";
                    presence
                      "Indicates a tx-only node is configured.";
                    description
                      "Replicate only transmitted (egress) traffic";
                  }  // container tx-only
                }  // container direction
    
                container acl {
                  presence
                    "Indicates a acl node is configured.";
                  description
                    "Enable acl based mirroring";
                  leaf acl-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..80";
                    }
                    description "ACL name";
                  }
                }  // container acl
    
                leaf acl-ipv4 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv4 ACL based mirroring";
                }
    
                leaf acl-ipv6 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv6 ACL based mirroring";
                }
    
                container mirror {
                  description
                    "Set the mirroring properties of this interface";
                  leaf first {
                    type uint32 {
                      range "1..10000";
                    }
                    description
                      "Enable mirroring on the first portion of a packet";
                  }
    
                  leaf interval {
                    type enumeration {
                      enum "512" {
                        value 1;
                        description
                          "Mirror 1 in every 512 packets";
                      }
                      enum "1K" {
                        value 2;
                        description
                          "Mirror 1 in every 1024 packets";
                      }
                      enum "2K" {
                        value 3;
                        description
                          "Mirror 1 in every 2048 packets";
                      }
                      enum "4K" {
                        value 4;
                        description
                          "Mirror 1 in every 4096 packets";
                      }
                      enum "8K" {
                        value 5;
                        description
                          "Mirror 1 in every 8192 packets";
                      }
                      enum "16K" {
                        value 6;
                        description
                          "Mirror 1 in every 16384 packets";
                      }
                    }
                    description
                      "Enable mirroring of every Nth packet";
                  }
                }  // container mirror
    
                container port-level {
                  presence
                    "Indicates a port-level node is configured.";
                  description
                    "Replicate traffic on all interfaces of a main interface";
                }  // container port-level
              }  // container ethernet
    
              container ipv4 {
                presence
                  "Indicates a ipv4 node is configured.";
                description
                  "Replicate IPv4 traffic";
                leaf session-name {
                  type xr:Cisco-ios-xr-string {
                    length "1..79";
                  }
                  mandatory true;
                  description "Session Name";
                }
    
                container direction {
                  description
                    "Specify the direction of traffic to replicate";
                  container rx-only {
                    must "not(../tx-only)";
                    presence
                      "Indicates a rx-only node is configured.";
                    description
                      "Replicate only received (ingress) traffic";
                  }  // container rx-only
    
                  container tx-only {
                    must "not(../rx-only)";
                    presence
                      "Indicates a tx-only node is configured.";
                    description
                      "Replicate only transmitted (egress) traffic";
                  }  // container tx-only
                }  // container direction
    
                container acl {
                  presence
                    "Indicates a acl node is configured.";
                  description
                    "Enable acl based mirroring";
                  leaf acl-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..80";
                    }
                    description "ACL name";
                  }
                }  // container acl
    
                leaf acl-ipv4 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv4 ACL based mirroring";
                }
    
                leaf acl-ipv6 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv6 ACL based mirroring";
                }
    
                container mirror {
                  description
                    "Set the mirroring properties of this interface";
                  leaf first {
                    type uint32 {
                      range "1..10000";
                    }
                    description
                      "Enable mirroring on the first portion of a packet";
                  }
    
                  leaf interval {
                    type enumeration {
                      enum "512" {
                        value 1;
                        description
                          "Mirror 1 in every 512 packets";
                      }
                      enum "1K" {
                        value 2;
                        description
                          "Mirror 1 in every 1024 packets";
                      }
                      enum "2K" {
                        value 3;
                        description
                          "Mirror 1 in every 2048 packets";
                      }
                      enum "4K" {
                        value 4;
                        description
                          "Mirror 1 in every 4096 packets";
                      }
                      enum "8K" {
                        value 5;
                        description
                          "Mirror 1 in every 8192 packets";
                      }
                      enum "16K" {
                        value 6;
                        description
                          "Mirror 1 in every 16384 packets";
                      }
                    }
                    description
                      "Enable mirroring of every Nth packet";
                  }
                }  // container mirror
    
                container port-level {
                  presence
                    "Indicates a port-level node is configured.";
                  description
                    "Replicate traffic on all interfaces of a main interface";
                }  // container port-level
              }  // container ipv4
    
              container ipv6 {
                presence
                  "Indicates a ipv6 node is configured.";
                description
                  "Replicate IPv6 traffic";
                leaf session-name {
                  type xr:Cisco-ios-xr-string {
                    length "1..79";
                  }
                  mandatory true;
                  description "Session Name";
                }
    
                container direction {
                  description
                    "Specify the direction of traffic to replicate";
                  container rx-only {
                    must "not(../tx-only)";
                    presence
                      "Indicates a rx-only node is configured.";
                    description
                      "Replicate only received (ingress) traffic";
                  }  // container rx-only
    
                  container tx-only {
                    must "not(../rx-only)";
                    presence
                      "Indicates a tx-only node is configured.";
                    description
                      "Replicate only transmitted (egress) traffic";
                  }  // container tx-only
                }  // container direction
    
                container acl {
                  presence
                    "Indicates a acl node is configured.";
                  description
                    "Enable acl based mirroring";
                  leaf acl-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..80";
                    }
                    description "ACL name";
                  }
                }  // container acl
    
                leaf acl-ipv4 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv4 ACL based mirroring";
                }
    
                leaf acl-ipv6 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv6 ACL based mirroring";
                }
    
                container mirror {
                  description
                    "Set the mirroring properties of this interface";
                  leaf first {
                    type uint32 {
                      range "1..10000";
                    }
                    description
                      "Enable mirroring on the first portion of a packet";
                  }
    
                  leaf interval {
                    type enumeration {
                      enum "512" {
                        value 1;
                        description
                          "Mirror 1 in every 512 packets";
                      }
                      enum "1K" {
                        value 2;
                        description
                          "Mirror 1 in every 1024 packets";
                      }
                      enum "2K" {
                        value 3;
                        description
                          "Mirror 1 in every 2048 packets";
                      }
                      enum "4K" {
                        value 4;
                        description
                          "Mirror 1 in every 4096 packets";
                      }
                      enum "8K" {
                        value 5;
                        description
                          "Mirror 1 in every 8192 packets";
                      }
                      enum "16K" {
                        value 6;
                        description
                          "Mirror 1 in every 16384 packets";
                      }
                    }
                    description
                      "Enable mirroring of every Nth packet";
                  }
                }  // container mirror
    
                container port-level {
                  presence
                    "Indicates a port-level node is configured.";
                  description
                    "Replicate traffic on all interfaces of a main interface";
                }  // container port-level
              }  // container ipv6
    
              container mpls-ipv4 {
                presence
                  "Indicates a mpls-ipv4 node is configured.";
                description
                  "Replicate MPLS-IPv4 traffic";
                leaf session-name {
                  type xr:Cisco-ios-xr-string {
                    length "1..79";
                  }
                  mandatory true;
                  description "Session Name";
                }
    
                container direction {
                  description
                    "Specify the direction of traffic to replicate";
                  container rx-only {
                    must "not(../tx-only)";
                    presence
                      "Indicates a rx-only node is configured.";
                    description
                      "Replicate only received (ingress) traffic";
                  }  // container rx-only
    
                  container tx-only {
                    must "not(../rx-only)";
                    presence
                      "Indicates a tx-only node is configured.";
                    description
                      "Replicate only transmitted (egress) traffic";
                  }  // container tx-only
                }  // container direction
    
                container acl {
                  presence
                    "Indicates a acl node is configured.";
                  description
                    "Enable acl based mirroring";
                  leaf acl-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..80";
                    }
                    description "ACL name";
                  }
                }  // container acl
    
                leaf acl-ipv4 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv4 ACL based mirroring";
                }
    
                leaf acl-ipv6 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv6 ACL based mirroring";
                }
    
                container mirror {
                  description
                    "Set the mirroring properties of this interface";
                  leaf first {
                    type uint32 {
                      range "1..10000";
                    }
                    description
                      "Enable mirroring on the first portion of a packet";
                  }
    
                  leaf interval {
                    type enumeration {
                      enum "512" {
                        value 1;
                        description
                          "Mirror 1 in every 512 packets";
                      }
                      enum "1K" {
                        value 2;
                        description
                          "Mirror 1 in every 1024 packets";
                      }
                      enum "2K" {
                        value 3;
                        description
                          "Mirror 1 in every 2048 packets";
                      }
                      enum "4K" {
                        value 4;
                        description
                          "Mirror 1 in every 4096 packets";
                      }
                      enum "8K" {
                        value 5;
                        description
                          "Mirror 1 in every 8192 packets";
                      }
                      enum "16K" {
                        value 6;
                        description
                          "Mirror 1 in every 16384 packets";
                      }
                    }
                    description
                      "Enable mirroring of every Nth packet";
                  }
                }  // container mirror
    
                container port-level {
                  presence
                    "Indicates a port-level node is configured.";
                  description
                    "Replicate traffic on all interfaces of a main interface";
                }  // container port-level
              }  // container mpls-ipv4
    
              container mpls-ipv6 {
                presence
                  "Indicates a mpls-ipv6 node is configured.";
                description
                  "Replicate MPLS-IPv6 traffic";
                leaf session-name {
                  type xr:Cisco-ios-xr-string {
                    length "1..79";
                  }
                  mandatory true;
                  description "Session Name";
                }
    
                container direction {
                  description
                    "Specify the direction of traffic to replicate";
                  container rx-only {
                    must "not(../tx-only)";
                    presence
                      "Indicates a rx-only node is configured.";
                    description
                      "Replicate only received (ingress) traffic";
                  }  // container rx-only
    
                  container tx-only {
                    must "not(../rx-only)";
                    presence
                      "Indicates a tx-only node is configured.";
                    description
                      "Replicate only transmitted (egress) traffic";
                  }  // container tx-only
                }  // container direction
    
                container acl {
                  presence
                    "Indicates a acl node is configured.";
                  description
                    "Enable acl based mirroring";
                  leaf acl-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..80";
                    }
                    description "ACL name";
                  }
                }  // container acl
    
                leaf acl-ipv4 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv4 ACL based mirroring";
                }
    
                leaf acl-ipv6 {
                  type xr:Cisco-ios-xr-string {
                    length "1..80";
                  }
                  description
                    "Enable IPv6 ACL based mirroring";
                }
    
                container mirror {
                  description
                    "Set the mirroring properties of this interface";
                  leaf first {
                    type uint32 {
                      range "1..10000";
                    }
                    description
                      "Enable mirroring on the first portion of a packet";
                  }
    
                  leaf interval {
                    type enumeration {
                      enum "512" {
                        value 1;
                        description
                          "Mirror 1 in every 512 packets";
                      }
                      enum "1K" {
                        value 2;
                        description
                          "Mirror 1 in every 1024 packets";
                      }
                      enum "2K" {
                        value 3;
                        description
                          "Mirror 1 in every 2048 packets";
                      }
                      enum "4K" {
                        value 4;
                        description
                          "Mirror 1 in every 4096 packets";
                      }
                      enum "8K" {
                        value 5;
                        description
                          "Mirror 1 in every 8192 packets";
                      }
                      enum "16K" {
                        value 6;
                        description
                          "Mirror 1 in every 16384 packets";
                      }
                    }
                    description
                      "Enable mirroring of every Nth packet";
                  }
                }  // container mirror
    
                container port-level {
                  presence
                    "Indicates a port-level node is configured.";
                  description
                    "Replicate traffic on all interfaces of a main interface";
                }  // container port-level
              }  // container mpls-ipv6
            }  // container monitor-session-deprecated
    
            leaf vrf {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[not(starts-with(text(),'tunnel-'))] and ../a1:interface-name[not(starts-with(text(),'cem'))] and ../a1:interface-name[not(starts-with(text(),'nve'))]";
              type xr:Cisco-ios-xr-string {
                length "1..32";
              }
              description
                "Set VRF in which the interface operates";
            }
    
            container address-family {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[not(starts-with(text(),'pw-ether'))] and ../a1:interface-name[not(starts-with(text(),'pw-iw'))] and ../a1:interface-name[not(starts-with(text(),'cem'))]";
              description
                "AFI/SAFI configuration";
              container ipv4 {
                description
                  "IPv4 address family";
                container multicast {
                  presence
                    "Indicates a multicast node is configured.";
                  description
                    "Multicast topology";
                  container default-topology {
                    presence
                      "Indicates a default-topology node is configured.";
                    description
                      "Multicast default topology";
                  }  // container default-topology
    
                  container topologies {
                    description
                      "Specify a non-default topology";
                    list topology {
                      key "topology-name";
                      description
                        "Specify a non-default topology";
                      leaf topology-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a non-default topology";
                      }
                    }  // list topology
                  }  // container topologies
                }  // container multicast
              }  // container ipv4
    
              container ipv6 {
                description
                  "IPv6 address family";
                container multicast {
                  presence
                    "Indicates a multicast node is configured.";
                  description
                    "Multicast topology";
                  container default-topology {
                    presence
                      "Indicates a default-topology node is configured.";
                    description
                      "Multicast default topology";
                  }  // container default-topology
    
                  container topologies {
                    description
                      "Specify a non-default topology";
                    list topology {
                      key "topology-name";
                      description
                        "Specify a non-default topology";
                      leaf topology-name {
                        type string {
                          length "1..32";
                        }
                        description
                          "Specify a non-default topology";
                      }
                    }  // list topology
                  }  // container topologies
                }  // container multicast
              }  // container ipv6
            }  // container address-family
    
            container lldp {
              presence
                "Indicates a lldp node is configured.";
              description
                "LLDP interface configuration commands";
              container transmit {
                description
                  "Disable LLDP TX on an interface";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable LLDP TX on an interface";
                }  // container disable
              }  // container transmit
    
              container receive {
                description
                  "Disable LLDP RX on an interface";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable LLDP RX on an interface";
                }  // container disable
              }  // container receive
    
              container destination {
                description
                  "Configure LLDP Destination MAC on the interface";
                container mac-address {
                  presence
                    "Indicates a mac-address node is configured.";
                  description
                    "Destination MAC address on the interface";
                  container ieee-nearest-non-tmpr-bridge {
                    must
                      "not(../ieee-nearest-bridge)";
                    presence
                      "Indicates a ieee-nearest-non-tmpr-bridge node is configured.";
                    description
                      "IEEE Non-TMPR Bridge MAC address, 01:80:C2:00:00:03";
                  }  // container ieee-nearest-non-tmpr-bridge
    
                  container ieee-nearest-bridge {
                    must
                      "not(../ieee-nearest-non-tmpr-bridge)";
                    presence
                      "Indicates a ieee-nearest-bridge node is configured.";
                    description
                      "Default LLDP Destination MAC address, 01:80:C2:00:00:0E";
                  }  // container ieee-nearest-bridge
                }  // container mac-address
              }  // container destination
    
              container enable {
                presence
                  "Indicates a enable node is configured.";
                description
                  "Enable LLDP TX and RX on an interface";
              }  // container enable
            }  // container lldp
    
            container csi-ether {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'CSI-Ether')]";
              description
                "CSI-Ether interface subcommands";
              leaf mtu {
                type uint32 {
                  range "64..9500";
                }
                description
                  "Set the CSI Ether MA MTU";
              }
            }  // container csi-ether
    
            container threshold {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')]";
              description
                "Commands to set the threshold for the appropriate Bit Error Rate";
              leaf sd-ber {
                type uint32 {
                  range "3..15";
                }
                description
                  "Set the Signal Degrade Bit Error Rate threshold";
              }
    
              leaf sf-ber {
                type uint32 {
                  range "4..15";
                }
                description
                  "Set the Signal Fail Bit Error Rate threshold";
              }
            }  // container threshold
    
            container report {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')]";
              description
                "Commands to control interface alarm reporting";
              container sd-ber {
                presence
                  "Indicates a sd-ber node is configured.";
                description
                  "Enable Signal Degrade alarm reporting";
              }  // container sd-ber
    
              container sf-ber {
                description
                  "Commands to control Signal Fail alarm reporting";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable Signal Fail alarm reporting";
                }  // container disable
              }  // container sf-ber
    
              container crc-ber {
                presence
                  "Indicates a crc-ber node is configured.";
                description
                  "Enable CRC based ber monitoring";
              }  // container crc-ber
            }  // container report
    
            container signal {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')]";
              description
                "Bit Error Rate handling signalling commands";
              container sf-ber {
                description
                  "Signal Fail Bit Error Rate signalling commands";
                container remote-fault {
                  presence
                    "Indicates a remote-fault node is configured.";
                  description
                    "Enable Signal Fail remote fault signalling";
                }  // container remote-fault
              }  // container sf-ber
            }  // container signal
    
            container carrier-delay {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'FastEthernet')] or ../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')]";
              description
                "Set the carrier delay on an interface";
              leaf up {
                type uint32 {
                  range "0..2147483647";
                }
                description
                  "Set the carrier delay up value";
              }
    
              leaf down {
                type uint32 {
                  range "0..2147483647";
                }
                description
                  "Set the carrier delay down value";
              }
            }  // container carrier-delay
    
            leaf duplex {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')]";
              type enumeration {
                enum "full" {
                  value 0;
                  description "Full duplex";
                }
                enum "half" {
                  value 1;
                  description "Half duplex";
                }
              }
              description
                "Configure duplex operational mode";
            }
    
            leaf fec {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')]";
              type enumeration {
                enum "none" {
                  value 0;
                  description
                    "Disable any FEC enabled on the interface";
                }
                enum "standard" {
                  value 1;
                  description
                    "Enable the standard (CL-91, Reed-Solomon) FEC";
                }
                enum "base-r" {
                  value 2;
                  description
                    "Enable BASE-R FEC";
                }
              }
              description
                "Set the Forward Error Correction on an interface";
            }
    
            leaf flow-control {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'FastEthernet')] or ../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')] or ../a1:interface-name[starts-with(text(),'CPRIoE')]";
              type enumeration {
                enum "ingress" {
                  value 0;
                  description
                    "Enable the sending of flow control pause frames";
                }
                enum "egress" {
                  value 1;
                  description
                    "Enable the receiving of flow control pause frames";
                }
                enum "bidirectional" {
                  value 2;
                  description
                    "Enable both sending and receiving of flow control pause frames";
                }
              }
              description
                "Set the flow control mode on an interface";
            }
    
            leaf packet-gap {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'TenGigE')]";
              type enumeration {
                enum "non-standard" {
                  value 16;
                  description
                    "Set the non-standard IPG";
                }
              }
              description
                "Set the IPG on an interface";
            }
    
            leaf loopback {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'FastEthernet')] or ../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')] or ../a1:interface-name[starts-with(text(),'CPRIoE')]";
              type enumeration {
                enum "external" {
                  value 0;
                  description
                    "Enable external loopback (requires loopback connector)";
                }
                enum "internal" {
                  value 1;
                  description
                    "Enable internal loopback";
                }
                enum "line" {
                  value 2;
                  description
                    "Enable line loopback";
                }
              }
              description
                "Set the loopback mode on an interface";
            }
    
            container negotiation {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'FastEthernet')] or ../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')]";
              description
                "Select autonegotiation mode";
              container auto {
                presence
                  "Indicates a auto node is configured.";
                description
                  "Perform link autonegotiation";
                container allow-overrides {
                  presence
                    "Indicates a allow-overrides node is configured.";
                  description
                    "Allow configured values to override negotiated settings";
                }  // container allow-overrides
              }  // container auto
            }  // container negotiation
    
            leaf speed {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'MgmtEth')] or ../a1:interface-name[starts-with(text(),'FastEthernet')] or ../a1:interface-name[starts-with(text(),'PTP')] or ../a1:interface-name[starts-with(text(),'GigabitEthernet')]";
              type enumeration {
                enum "10" {
                  value 10;
                  description "Ethernet is 10Mb";
                }
                enum "100" {
                  value 100;
                  description
                    "Ethernet is 100Mb";
                }
                enum "1000" {
                  value 1000;
                  description "Ethernet is 1Gb";
                }
              }
              description
                "Set the ethernet speed on an interface";
            }
    
            container priority-flow-control {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')]";
              description
                "Priority flow control options";
              leaf mode {
                type enumeration {
                  enum "off" {
                    value 0;
                    description
                      "Disable priority flow control";
                  }
                  enum "on" {
                    value 1;
                    description
                      "Enable priority flow control";
                  }
                }
                description
                  "Set priority flow control mode";
              }
    
              container watchdog {
                description
                  " Priority flow control watchdog options";
                leaf mode {
                  type enumeration {
                    enum "off" {
                      value 0;
                      description
                        "Disable priority flow control watchdog";
                    }
                    enum "on" {
                      value 1;
                      description
                        "Enable priority flow control watchdog";
                    }
                  }
                  description
                    "Set priority flow control watchdog mode";
                }
    
                leaf interval {
                  type uint32 {
                    range "100..1000";
                  }
                  description
                    "PFC WD Polling Interval";
                }
    
                leaf shutdown-multiplier {
                  type uint32 {
                    range "1..10";
                  }
                  description
                    "Pause Storm Detection Timer Threshold";
                }
    
                leaf auto-restore-multiplier {
                  type uint32 {
                    range "0..100";
                  }
                  description
                    "Watchdog Auto Restore Timer";
                }
              }  // container watchdog
            }  // container priority-flow-control
    
            container fast-shutdown {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'FastEthernet')] or ((../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')]) and ../a1:interface-name[not(contains(text(),'.'))])";
              presence
                "Indicates a fast-shutdown node is configured.";
              description "Enable fast shutdown";
            }  // container fast-shutdown
    
            container optical-power {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'FastEthernet')] or ((../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')]) and ../a1:interface-name[not(contains(text(),'.'))])";
              description
                "Commands to set the optical power degrade alarm threshold";
              container alarm {
                description
                  "Set the optical power alarm threshold";
                leaf rx {
                  type int32 {
                    range "-300..50";
                  }
                  description
                    "Set the alarm threshold for received optical power";
                }
              }  // container alarm
            }  // container optical-power
    
            container frame-preemption {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'FastEthernet')] or ../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')] or ../a1:interface-name[starts-with(text(),'CPRIoE')]";
              presence
                "Indicates a frame-preemption node is configured.";
              description
                "Configure frame preemption operational mode";
            }  // container frame-preemption
    
            container bundle {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')] or ../a1:interface-name[starts-with(text(),'Bundle-')]";
              description
                "Bundle interface commands";
              container minimum-active {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                description
                  "Set the minimum criteria for the bundle to be active";
                leaf links {
                  type uint32 {
                    range "1..64";
                  }
                  description
                    "Set the number of active links needed to bring up this bundle";
                }
    
                container bandwidth {
                  description
                    "Set the bandwidth needed to bring up this bundle";
                  leaf bandwidth {
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "Set the bandwidth (in kbps) needed to bring up this bundle";
                  }
    
                  leaf kbps {
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "Set the bandwidth in kbps";
                  }
    
                  leaf mbps {
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "Set the bandwidth in mbps";
                  }
    
                  leaf gbps {
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "Set the bandwidth in gbps";
                  }
                }  // container bandwidth
              }  // container minimum-active
    
              container maximum-active {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                description
                  "Set a limit on the number of links that can be active";
                container links {
                  presence
                    "Indicates a links node is configured.";
                  description
                    "Set the maximum number of active links in this bundle";
                  leaf maximum-number {
                    type uint32 {
                      range "1..64";
                    }
                    mandatory true;
                    description
                      "Set the maximum number of active links in this bundle";
                  }
    
                  container hot-standby {
                    presence
                      "Indicates a hot-standby node is configured.";
                    description
                      "Hot-standby behaviour (non-standard, only effective on links with LACP enabled)";
                  }  // container hot-standby
                }  // container links
              }  // container maximum-active
    
              leaf wait-while {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                type uint32 {
                  range "0..2000";
                }
                description
                  "Set the wait-while timeout for members of this bundle";
              }
    
              container shutdown {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                presence
                  "Indicates a shutdown node is configured.";
                description
                  "Bring all links in the bundle down to Standby state";
              }  // container shutdown
    
              container load-balancing {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                description
                  "Load balancing commands on a bundle";
                container hash {
                  description
                    "Select the hash function used for traffic forwarded over the bundle";
                  container src-ip {
                    presence
                      "Indicates a src-ip node is configured.";
                    description
                      "Use the source IP as the hash function";
                  }  // container src-ip
    
                  container dst-ip {
                    presence
                      "Indicates a dst-ip node is configured.";
                    description
                      "Use the destination IP as the hash function";
                  }  // container dst-ip
                }  // container hash
    
                container localize {
                  description
                    "Restrict forwarding to members in the same rack where possible";
                  container threshold {
                    description
                      "The threshold below which traffic is no longer localized";
                    leaf links {
                      type uint32 {
                        range "1..64";
                      }
                      description
                        "Set a threshold of active member links per rack";
                    }
                  }  // container threshold
                }  // container localize
              }  // container load-balancing
    
              leaf lacp-delay {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                type uint32 {
                  range "1000..15000";
                }
                description
                  "Set the lacp-delay timeout for members of this bundle";
              }
    
              container logging {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                description
                  "logging events for the members of this bundle";
                container oos {
                  presence
                    "Indicates a oos node is configured.";
                  description
                    "Enable OOS logging events for the members of this bundle";
                }  // container oos
              }  // container logging
    
              container lacp-fallback {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                description
                  "Set the lacp-fallback for members of this bundle";
                leaf timeout {
                  type uint32 {
                    range "1..120";
                  }
                  description
                    "Set the timeout for lacp-fallback";
                }
              }  // container lacp-fallback
    
              container id {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../../a1:interface-name[starts-with(text(),'TenGigE')] or ../../a1:interface-name[starts-with(text(),'FortyGigE')] or ../../a1:interface-name[starts-with(text(),'HundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../../a1:interface-name[starts-with(text(),'FiftyGigE')]";
                presence
                  "Indicates a id node is configured.";
                description
                  "Add the port to an aggregated interface.";
                leaf bundle-id {
                  type uint32 {
                    range "1..65535";
                  }
                  mandatory true;
                  description
                    "Add the port to an aggregated interface.";
                }
    
                leaf mode {
                  type enumeration {
                    enum "on" {
                      value 1;
                      description
                        "Do not run LACP over the port.";
                    }
                    enum "active" {
                      value 2;
                      description
                        "Run LACP in active mode over the port.";
                    }
                    enum "passive" {
                      value 3;
                      description
                        "Run LACP in passive mode over the port.";
                    }
                    enum "inherit" {
                      value 4;
                      description
                        "Run LACP as configured in bundle.";
                    }
                  }
                  mandatory true;
                  description
                    "Specify the mode of operation.";
                }
              }  // container id
    
              leaf port-priority {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../../a1:interface-name[starts-with(text(),'TenGigE')] or ../../a1:interface-name[starts-with(text(),'FortyGigE')] or ../../a1:interface-name[starts-with(text(),'HundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../../a1:interface-name[starts-with(text(),'FiftyGigE')]";
                type uint32 {
                  range "1..65535";
                }
                description
                  "Priority for this port. Lower value is higher priority.";
              }
            }  // container bundle
    
            container bfd {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'Bundle-')]";
              description
                "BFD configuration on a bundle interface";
              container address-family {
                description
                  "Set configuration for a given address family";
                container ipv4 {
                  description
                    "Set configuration for the IPv4 address family";
                  leaf destination {
                    type inet:ipv4-address-no-zone;
                    description
                      "Set the destination address for the BFD session";
                  }
    
                  container echo {
                    description
                      "Set the configuration for the echo mode of BFD";
                    leaf minimum-interval {
                      type uint32 {
                        range "15..2000";
                      }
                      description
                        "Set the preferred minimum interval for the BFD session";
                    }
                  }  // container echo
    
                  leaf minimum-interval {
                    type uint32 {
                      range "3..30000";
                    }
                    description
                      "Set the preferred minimum interval for the BFD session";
                  }
    
                  leaf multiplier {
                    type uint32 {
                      range "2..50";
                    }
                    description
                      "Set the preferred multiplier for the BFD session";
                  }
    
                  container fast-detect {
                    presence
                      "Indicates a fast-detect node is configured.";
                    description
                      "Enable fast detection using BFD on bundle members";
                  }  // container fast-detect
    
                  container timers {
                    description
                      "Set the timers that determine when a BFD session defaults to down";
                    leaf start {
                      type uint32 {
                        range "1..3600";
                      }
                      description
                        "The time since starting a BFD session before it is considered to have gone down";
                    }
    
                    leaf nbr-unconfig {
                      type uint32 {
                        range "1..3600";
                      }
                      description
                        "The time since a BFD signalled that a peer session is unconfigured before it is considered to have gone down";
                    }
                  }  // container timers
                }  // container ipv4
    
                container ipv6 {
                  description
                    "Set configuration for the IPv6 address family";
                  leaf destination {
                    type inet:ipv6-address-no-zone;
                    description
                      "Set the destination address for the BFD session";
                  }
    
                  leaf minimum-interval {
                    type uint32 {
                      range "3..30000";
                    }
                    description
                      "Set the preferred minimum interval for the BFD session";
                  }
    
                  leaf multiplier {
                    type uint32 {
                      range "2..50";
                    }
                    description
                      "Set the preferred multiplier for the BFD session";
                  }
    
                  container fast-detect {
                    presence
                      "Indicates a fast-detect node is configured.";
                    description
                      "Enable fast detection using BFD on bundle members";
                  }  // container fast-detect
    
                  container timers {
                    description
                      "Set the timers that determine when a BFD session defaults to down";
                    leaf start {
                      type uint32 {
                        range "1..3600";
                      }
                      description
                        "The time since starting a BFD session before it is considered to have gone down";
                    }
    
                    leaf nbr-unconfig {
                      type uint32 {
                        range "1..3600";
                      }
                      description
                        "The time since a BFD signalled that a peer session is unconfigured before it is considered to have gone down";
                    }
                  }  // container timers
                }  // container ipv6
              }  // container address-family
    
              container mode {
                must "cisco or ietf";
                presence
                  "Indicates a mode node is configured.";
                description
                  "Standard used for per-member BFD";
                container cisco {
                  presence
                    "Indicates a cisco node is configured.";
                  description
                    "Use Cisco standard for BoB";
                }  // container cisco
    
                container ietf {
                  presence
                    "Indicates a ietf node is configured.";
                  description
                    "Use IETF standard for BoB";
                }  // container ietf
              }  // container mode
            }  // container bfd
    
            container lacp {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')] or ../a1:interface-name[starts-with(text(),'Bundle-')]";
              description
                "Bundle interface LACP commands";
              container switchover {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                description
                  "Modify behavior for switching between links in this bundle";
                leaf suppress-flaps {
                  type uint32 {
                    range "100..65535";
                  }
                  description
                    "Set the time for which to suppress flaps during a LACP switchover";
                }
              }  // container switchover
    
              container churn {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                description
                  "Settings for LACP churn detection";
                leaf logging {
                  type enumeration {
                    enum "actor" {
                      value 1;
                      description
                        "Log actor churn events only";
                    }
                    enum "partner" {
                      value 2;
                      description
                        "Log partner churn events only";
                    }
                    enum "both" {
                      value 3;
                      description
                        "Log actor and partner churn events";
                    }
                  }
                  description
                    "Set parameters for logging of churn events";
                }
              }  // container churn
    
              leaf collector-max-delay {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                type uint32 {
                  range "0..65535";
                }
                description
                  "Collector max delay to be signaled to the LACP partner";
              }
    
              container timeout {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                description
                  "Set timeout values for LACP-related timers";
                leaf rx-default {
                  type uint32 {
                    range "0..3000";
                  }
                  description
                    "Set the timeout between expired and defaulted states";
                }
    
                leaf actor-churn {
                  type uint32 {
                    range "0..120";
                  }
                  description
                    "Set the timeout to use before declaring actor churn";
                }
    
                leaf partner-churn {
                  type uint32 {
                    range "0..120";
                  }
                  description
                    "Set the timeout to use before declaring partner churn";
                }
              }  // container timeout
    
              container cisco {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                description
                  "Cisco LACP extensions";
                container enable {
                  presence
                    "Indicates a enable node is configured.";
                  description
                    "Enable the use of Cisco LACP extensions";
                  container link-order {
                    description
                      "Link ordering numbers processing";
                    container signaled {
                      presence
                        "Indicates a signaled node is configured.";
                      description
                        "Turn on processing of link ordering numbers";
                    }  // container signaled
                  }  // container link-order
                }  // container enable
              }  // container cisco
    
              container non-revertive {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                presence
                  "Indicates a non-revertive node is configured.";
                description
                  "Set the bundle to lacp non-revertive mode";
              }  // container non-revertive
    
              leaf mode {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                type enumeration {
                  enum "on" {
                    value 0;
                    description
                      "Do not run LACP over the port.";
                  }
                  enum "active" {
                    value 1;
                    description
                      "Run LACP in active mode over the port.";
                  }
                  enum "passive" {
                    value 2;
                    description
                      "Run LACP in passive mode over the port.";
                  }
                }
                description
                  " Set the LACP mode on bundle to be used by its member link";
              }
    
              container system {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'Bundle-')]";
                description
                  "Set the default system parameters for LACP bundles";
                leaf priority {
                  type uint32 {
                    range "1..65535";
                  }
                  description
                    "The system priority to use in LACP negotiations.";
                }
    
                leaf mac {
                  type yang:mac-address;
                  description
                    "Configure the system ID to use in LACP negotiations for this bundle.";
                }
              }  // container system
    
              container period {
                must "transmission-id or short";
                presence
                  "Indicates a period node is configured.";
                description
                  "Set the period on bundle to be used by its member link";
                leaf transmission-id {
                  type uint32 {
                    range "2..30000";
                  }
                  description
                    " Set the period on bundle to be used by its member link";
                }
    
                container short {
                  presence
                    "Indicates a short node is configured.";
                  description
                    "set the short period on bundle";
                }  // container short
              }  // container period
    
              leaf default-threshold {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../../a1:interface-name[starts-with(text(),'TenGigE')] or ../../a1:interface-name[starts-with(text(),'FortyGigE')] or ../../a1:interface-name[starts-with(text(),'HundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../../a1:interface-name[starts-with(text(),'FiftyGigE')]";
                type uint32 {
                  range "1..3";
                }
                description
                  "Set the LACP packet default threshold";
              }
    
              leaf expire-threshold {
                tailf:dependency "../../a1:interface-name";
                when
                  "../../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../../a1:interface-name[starts-with(text(),'TenGigE')] or ../../a1:interface-name[starts-with(text(),'FortyGigE')] or ../../a1:interface-name[starts-with(text(),'HundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../../a1:interface-name[starts-with(text(),'FiftyGigE')]";
                type uint32 {
                  range "1..3";
                }
                description
                  "Set the LACP packet expire threshold";
              }
            }  // container lacp
    
            container mlacp {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'Bundle-')]";
              description
                "Multi-chassis LACP per-interface commands";
              leaf iccp-group {
                type uint32 {
                  range "1..4294967295";
                }
                description
                  "ICCP redundancy group related commands for this bundle.";
              }
    
              leaf port-priority {
                type uint32 {
                  range "1..65535";
                }
                description
                  "Set the priority for all member links on this device when running mLACP.";
              }
    
              container switchover {
                description
                  "Set the parameters for performing a switchover to/from the mLACP peer";
                leaf type {
                  type enumeration {
                    enum "brute-force" {
                      value 1;
                      description
                        "Force switchover by disabling all local member links";
                    }
                    enum "revertive" {
                      value 2;
                      description
                        "Revert based on configured priority values";
                    }
                  }
                  description
                    "Set the type of switchover operation to use";
                }
    
                container maximize {
                  description
                    "Parameters for switchover behavior to maximize operational links/bandwidth";
                  container links {
                    presence
                      "Indicates a links node is configured.";
                    description
                      "Compare the number of operational links";
                    leaf threshold {
                      type uint32 {
                        range "1..64";
                      }
                      description
                        "Set the threshold below which to switch to the peer if it has more links available";
                    }
                  }  // container links
    
                  container bandwidth {
                    presence
                      "Indicates a bandwidth node is configured.";
                    description
                      "Compare the total bandwidth of operational links";
                    leaf threshold {
                      type uint64 {
                        range
                          "1..18446744073709551615";
                      }
                      description
                        "Set the threshold below which to switch to the peer if it has more bandwidth available";
                    }
                  }  // container bandwidth
                }  // container maximize
    
                leaf recovery-delay {
                  type uint32 {
                    range "0..65535";
                  }
                  description
                    "Specify delay before bundle becoming active after recovery from failure";
                }
              }  // container switchover
            }  // container mlacp
    
            container cdp {
              presence
                "Indicates a cdp node is configured.";
              description
                "Enable CDP on an interface";
            }  // container cdp
    
            container cdp-mac-address {
              description
                "Configure CDP MAC address on interface";
              container ethernet-slow-protocols-mac {
                presence
                  "Indicates a ethernet-slow-protocols-mac node is configured.";
                description
                  "Ethernet Slow-Protocols MAC, 01:80:c2:00:00:02";
              }  // container ethernet-slow-protocols-mac
            }  // container cdp-mac-address
    
            container frequency {
              tailf:dependency "../a1:interface-name";
              when
                "../a1:interface-name[starts-with(text(),'FastEthernet')] or ../a1:interface-name[starts-with(text(),'GigabitEthernet')] or ../a1:interface-name[starts-with(text(),'TenGigE')] or ../a1:interface-name[starts-with(text(),'TwentyFiveGigE')] or ../a1:interface-name[starts-with(text(),'FortyGigE')] or ../a1:interface-name[starts-with(text(),'FiftyGigE')] or ../a1:interface-name[starts-with(text(),'HundredGigE')] or ../a1:interface-name[starts-with(text(),'TwoHundredGigE')] or ../a1:interface-name[starts-with(text(),'FourHundredGigE')] or ../a1:interface-name[starts-with(text(),'CPRIoE')]";
              description
                "Frequency Synchronization configuration";
              container synchronization {
                presence
                  "Indicates a synchronization node is configured.";
                description
                  "Frequency Synchronization configuration";
                container ssm {
                  description
                    "SSM configuration commands";
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disable sending of SSMs";
                  }  // container disable
                }  // container ssm
    
                leaf priority {
                  type uint32 {
                    range "1..254";
                  }
                  description "Source priority";
                }
    
                leaf time-of-day-priority {
                  type uint32 {
                    range "1..254";
                  }
                  description
                    "Source time-of-day priority";
                }
    
                container quality {
                  description
                    "Quality level configuration";
                  container transmit {
                    description
                      "Set the quality level to be transmitted";
                    container lowest {
                      description
                        "Specify the lowest acceptable QL value";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../highest/itu-t/option/two/generation/one or
    ../../../../highest/itu-t/option/two/generation/two or
    ../../../../exact/itu-t/option/one or
    ../../../../exact/itu-t/option/two/generation/one or
    ../../../../exact/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container lowest
    
                    container highest {
                      description
                        "Specify the highest acceptable QL value";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../lowest/itu-t/option/one or
    ../../../../lowest/itu-t/option/two/generation/one or
    ../../../../lowest/itu-t/option/two/generation/two or
    ../../../../exact/itu-t/option/one or
    ../../../../exact/itu-t/option/two/generation/one or
    ../../../../exact/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container highest
    
                    container exact {
                      description
                        "Specify the exact QL value to use";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../highest/itu-t/option/two/generation/one or
    ../../../../highest/itu-t/option/two/generation/two or
    ../../../../lowest/itu-t/option/one or
    ../../../../lowest/itu-t/option/two/generation/one or
    ../../../../lowest/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/two or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container exact
                  }  // container transmit
    
                  container receive {
                    description
                      "Adjust the received quality level";
                    container lowest {
                      description
                        "Specify the lowest acceptable QL value";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../highest/itu-t/option/two/generation/one or
    ../../../../highest/itu-t/option/two/generation/two or
    ../../../../exact/itu-t/option/one or
    ../../../../exact/itu-t/option/two/generation/one or
    ../../../../exact/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container lowest
    
                    container highest {
                      description
                        "Specify the highest acceptable QL value";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../lowest/itu-t/option/one or
    ../../../../lowest/itu-t/option/two/generation/one or
    ../../../../lowest/itu-t/option/two/generation/two or
    ../../../../exact/itu-t/option/one or
    ../../../../exact/itu-t/option/two/generation/one or
    ../../../../exact/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container highest
    
                    container exact {
                      description
                        "Specify the exact QL value to use";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../highest/itu-t/option/two/generation/one or
    ../../../../highest/itu-t/option/two/generation/two or
    ../../../../lowest/itu-t/option/one or
    ../../../../lowest/itu-t/option/two/generation/one or
    ../../../../lowest/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/two or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container exact
                  }  // container receive
                }  // container quality
    
                leaf wait-to-restore {
                  type uint32 {
                    range "0..12";
                  }
                  description
                    "Set the wait-to-restore time";
                }
    
                container selection {
                  description
                    "Selection configuration commands";
                  container input {
                    presence
                      "Indicates a input node is configured.";
                    description
                      "Enable this source for selection";
                  }  // container input
                }  // container selection
              }  // container synchronization
            }  // container frequency
    
            container ethernet {
              description
                "Ethernet per-interface configuration commands";
              container oam {
                presence
                  "Indicates a oam node is configured.";
                description "OAM configuration";
                container link-monitor {
                  description
                    "Enter link-monitor submode";
                  container symbol-period {
                    description
                      "Symbol-period event configuration";
                    container window {
                      description
                        "window size for symbol-period event configuration";
                      leaf milliseconds {
                        type uint32 {
                          range "1000..60000";
                        }
                        must
                          "not(../symbols/window-size)";
                        description
                          "Use milliseconds as the units for the symbol-period window";
                      }
    
                      container symbols {
                        description
                          "Use symbols as the units for the symbol-period window";
                        leaf window-size {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          must
                            "not(../../milliseconds)";
                          description
                            "Size of the symbol-period window in symbols";
                        }
    
                        container thousand {
                          must
                            "../window-size and not(../million or ../billion)";
                          presence
                            "Indicates a thousand node is configured.";
                          description
                            "Use thousands of the specified units";
                        }  // container thousand
    
                        container million {
                          must
                            "../window-size and not(../thousand or ../billion)";
                          presence
                            "Indicates a million node is configured.";
                          description
                            "Use millions of the specified units";
                        }  // container million
    
                        container billion {
                          must
                            "../window-size and not(../thousand or ../million)";
                          presence
                            "Indicates a billion node is configured.";
                          description
                            "Use billions of the specified units";
                        }  // container billion
                      }  // container symbols
                    }  // container window
    
                    container threshold {
                      description
                        "threshold configuration for symbol-period events";
                      container symbols {
                        description
                          "Use symbols as the units for the symbol-period threshold";
                        leaf low {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          description
                            "low threshold for symbol-period events";
                        }
    
                        leaf high {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          description
                            "high threshold for symbol-period events";
                        }
    
                        container thousand {
                          must
                            "(../low or ../high) and not(../million or ../billion)";
                          presence
                            "Indicates a thousand node is configured.";
                          description
                            "Use thousands of the specified units";
                        }  // container thousand
    
                        container million {
                          must
                            "(../low or ../high) and not(../thousand or ../billion)";
                          presence
                            "Indicates a million node is configured.";
                          description
                            "Use millions of the specified units";
                        }  // container million
    
                        container billion {
                          must
                            "(../low or ../high) and not(../thousand or ../million)";
                          presence
                            "Indicates a billion node is configured.";
                          description
                            "Use billions of the specified units";
                        }  // container billion
                      }  // container symbols
    
                      container ppm {
                        description
                          "Use parts-per-million as the units for the symbol-period threshold";
                        leaf low {
                          type uint32 {
                            range "1..1000000";
                          }
                          description
                            "low threshold for symbol-period events";
                        }
    
                        leaf high {
                          type uint32 {
                            range "1..1000000";
                          }
                          description
                            "high threshold for symbol-period events";
                        }
                      }  // container ppm
                    }  // container threshold
                  }  // container symbol-period
    
                  container frame {
                    description
                      "Frame event configuration";
                    container window {
                      description
                        "window size for frame event configuration";
                      leaf milliseconds {
                        type uint32 {
                          range "1000..60000";
                        }
                        description
                          "Use milliseconds as the units for the frame window";
                      }
                    }  // container window
    
                    container threshold {
                      description
                        "threshold configuration for frame events";
                      leaf low {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "low threshold for frame events";
                      }
    
                      leaf high {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "high threshold for frame events";
                      }
    
                      container thousand {
                        must
                          "(../low or ../high) and not(../million or ../billion)";
                        presence
                          "Indicates a thousand node is configured.";
                        description
                          "Use thousands of the specified units";
                      }  // container thousand
    
                      container million {
                        must
                          "(../low or ../high) and not(../thousand or ../billion)";
                        presence
                          "Indicates a million node is configured.";
                        description
                          "Use millions of the specified units";
                      }  // container million
    
                      container billion {
                        must
                          "(../low or ../high) and not(../thousand or ../million)";
                        presence
                          "Indicates a billion node is configured.";
                        description
                          "Use billions of the specified units";
                      }  // container billion
                    }  // container threshold
                  }  // container frame
    
                  container frame-period {
                    description
                      "frame-period event configuration";
                    container window {
                      description
                        "window size for frame-period event configuration";
                      leaf milliseconds {
                        type uint32 {
                          range "100..60000";
                        }
                        must
                          "not(../frames/window-size)";
                        description
                          "Use milliseconds as the units for the frame-period window";
                      }
    
                      container frames {
                        description
                          "Use frames as the units for the frame-period window";
                        leaf window-size {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          must
                            "not(../../milliseconds)";
                          description
                            "Size of the frame-period window in symbols";
                        }
    
                        container thousand {
                          must
                            "../window-size and not(../million or ../billion)";
                          presence
                            "Indicates a thousand node is configured.";
                          description
                            "Use thousands of the specified units";
                        }  // container thousand
    
                        container million {
                          must
                            "../window-size and not(../thousand or ../billion)";
                          presence
                            "Indicates a million node is configured.";
                          description
                            "Use millions of the specified units";
                        }  // container million
    
                        container billion {
                          must
                            "../window-size and not(../thousand or ../million)";
                          presence
                            "Indicates a billion node is configured.";
                          description
                            "Use billions of the specified units";
                        }  // container billion
                      }  // container frames
                    }  // container window
    
                    container threshold {
                      description
                        "threshold for frame-period events";
                      container frames {
                        description
                          "Use frames as the units for the frame-period threshold";
                        leaf low {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          description
                            "low threshold for frame-period events";
                        }
    
                        leaf high {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          description
                            "high threshold for frame-period events";
                        }
    
                        container thousand {
                          must
                            "(../low or ../high) and not(../million or ../billion)";
                          presence
                            "Indicates a thousand node is configured.";
                          description
                            "Use thousands of the specified units";
                        }  // container thousand
    
                        container million {
                          must
                            "(../low or ../high) and not(../thousand or ../billion)";
                          presence
                            "Indicates a million node is configured.";
                          description
                            "Use millions of the specified units";
                        }  // container million
    
                        container billion {
                          must
                            "(../low or ../high) and not(../thousand or ../million)";
                          presence
                            "Indicates a billion node is configured.";
                          description
                            "Use billions of the specified units";
                        }  // container billion
                      }  // container frames
    
                      container ppm {
                        description
                          "Use parts-per-million as the units for the frame-period threshold";
                        leaf low {
                          type uint32 {
                            range "1..1000000";
                          }
                          description
                            "low threshold for frame events";
                        }
    
                        leaf high {
                          type uint32 {
                            range "1..1000000";
                          }
                          description
                            "high threshold for frame events";
                        }
                      }  // container ppm
                    }  // container threshold
                  }  // container frame-period
    
                  container frame-seconds {
                    description
                      "frame-seconds event configuration";
                    container window {
                      description
                        "window size for frame-seconds event configuration";
                      leaf milliseconds {
                        type uint32 {
                          range "10000..900000";
                        }
                        description
                          "Use milliseconds as the units for the frame-seconds window";
                      }
                    }  // container window
    
                    container threshold {
                      description "threshold";
                      leaf low {
                        type uint32 {
                          range "1..900";
                        }
                        description
                          "low threshold for frame-seconds events";
                      }
    
                      leaf high {
                        type uint32 {
                          range "1..900";
                        }
                        description
                          "high threshold for frame-seconds events";
                      }
                    }  // container threshold
                  }  // container frame-seconds
    
                  container monitoring {
                    presence
                      "Indicates a monitoring node is configured.";
                    description
                      "Monitoring support";
                    container disable {
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Disable monitoring";
                    }  // container disable
                  }  // container monitoring
                }  // container link-monitor
    
                container mode {
                  description "OAM mode";
                  container passive {
                    must "not(../active)";
                    presence
                      "Indicates a passive node is configured.";
                    description "Passive mode";
                  }  // container passive
    
                  container active {
                    must "not(../passive)";
                    presence
                      "Indicates a active node is configured.";
                    description "Active mode";
                  }  // container active
                }  // container mode
    
                leaf hello-interval {
                  type enumeration {
                    enum "100ms" {
                      value 1;
                      description
                        "100 millisecond hello interval";
                    }
                    enum "1s" {
                      value 0;
                      description
                        "1 second hello interval";
                    }
                  }
                  description
                    "Hello interval time";
                }
    
                container remote-loopback {
                  presence
                    "Indicates a remote-loopback node is configured.";
                  description
                    "Remote-loopback support";
                }  // container remote-loopback
    
                container mib-retrieval {
                  presence
                    "Indicates a mib-retrieval node is configured.";
                  description
                    "MIB retrieval support";
                }  // container mib-retrieval
    
                container uni-directional {
                  description
                    "Uni-directional link-fault detection support";
                  container link-fault {
                    description
                      "Uni-directional link-fault detection support";
                    container detection {
                      presence
                        "Indicates a detection node is configured.";
                      description
                        "Uni-directional link-fault detection support";
                    }  // container detection
                  }  // container link-fault
                }  // container uni-directional
    
                container connection {
                  description
                    "OAM connection configuration";
                  leaf timeout {
                    type uint32 {
                      range "2..30";
                    }
                    description
                      "OAM connection session timeout period";
                  }
                }  // container connection
    
                container profiles {
                  description
                    "Set the profile to use on the interface";
                  leaf interface-profile-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                      pattern
                        '[-a-zA-Z0-9_]*[-a-zA-Z0-9_]';
                    }
                    description
                      "Enter a profile name using only letters, numbers, '_' & '-'";
                  }
                }  // container profiles
    
                container require-remote {
                  description
                    "Enter require-remote submode";
                  container mib-retrieval {
                    presence
                      "Indicates a mib-retrieval node is configured.";
                    description
                      "Requirement of MIB retrieval support";
                  }  // container mib-retrieval
    
                  container remote-loopback {
                    presence
                      "Indicates a remote-loopback node is configured.";
                    description
                      "Requirement of Remote loopback support";
                  }  // container remote-loopback
    
                  container link-monitoring {
                    presence
                      "Indicates a link-monitoring node is configured.";
                    description
                      "Requirement of Link monitoring support";
                  }  // container link-monitoring
    
                  container mode {
                    description
                      "Requirement of a specific OAM mode";
                    container passive {
                      must
                        "not(../active or ../disabled)";
                      presence
                        "Indicates a passive node is configured.";
                      description
                        "Require passive mode";
                    }  // container passive
    
                    container active {
                      must
                        "not(../passive or ../disabled)";
                      presence
                        "Indicates a active node is configured.";
                      description
                        "Require active mode";
                    }  // container active
    
                    container disabled {
                      must
                        "not(../passive or ../active)";
                      presence
                        "Indicates a disabled node is configured.";
                      description
                        "Disable the requirement of a specific mode";
                    }  // container disabled
                  }  // container mode
                }  // container require-remote
    
                container action {
                  description
                    "Enter action submode";
                  container critical-event {
                    description
                      "Action to perform when a critical event occurs";
                    container error-disable-interface {
                      must
                        "not(../log or ../disable)";
                      presence
                        "Indicates a error-disable-interface node is configured.";
                      description
                        "Error-disable the interface";
                    }  // container error-disable-interface
    
                    container log {
                      must
                        "not(../error-disable-interface or ../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must
                        "not(../error-disable-interface or ../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container critical-event
    
                  container dying-gasp {
                    description
                      "Action to perform when a dying gasp occurs";
                    container error-disable-interface {
                      must
                        "not(../log or ../disable)";
                      presence
                        "Indicates a error-disable-interface node is configured.";
                      description
                        "Error-disable the interface";
                    }  // container error-disable-interface
    
                    container log {
                      must
                        "not(../error-disable-interface or ../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must
                        "not(../error-disable-interface or ../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container dying-gasp
    
                  container uni-directional {
                    description
                      "Action to perform when a uni-directional link-fault message is received";
                    container link-fault {
                      description
                        "Action to perform when a uni-directional link-fault message is received";
                      container error-disable-interface {
                        must
                          "not(../efd or ../log
    or ../disable)";
                        presence
                          "Indicates a error-disable-interface node is configured.";
                        description
                          "Error-disable the interface";
                      }  // container error-disable-interface
    
                      container efd {
                        must
                          "not(../error-disable-interface or ../log
    or ../disable)";
                        presence
                          "Indicates a efd node is configured.";
                        description
                          "Bring down the interface using EFD";
                      }  // container efd
    
                      container log {
                        must
                          "not(../error-disable-interface or ../efd
    or ../disable)";
                        presence
                          "Indicates a log node is configured.";
                        description
                          "Log the event";
                      }  // container log
    
                      container disable {
                        must
                          "not(../error-disable-interface or ../efd
    or ../log)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Perform no action";
                      }  // container disable
                    }  // container link-fault
                  }  // container uni-directional
    
                  container capabilities-conflict {
                    description
                      "Action to perform when a capabilities conflict occurs";
                    container error-disable-interface {
                      must
                        "not(../efd or ../log
    or ../disable)";
                      presence
                        "Indicates a error-disable-interface node is configured.";
                      description
                        "Error-disable the interface";
                    }  // container error-disable-interface
    
                    container efd {
                      must
                        "not(../error-disable-interface or ../log
    or ../disable)";
                      presence
                        "Indicates a efd node is configured.";
                      description
                        "Enable EFD to bring down the interface";
                    }  // container efd
    
                    container log {
                      must
                        "not(../error-disable-interface or ../efd
    or ../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must
                        "not(../error-disable-interface or ../efd
    or ../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container capabilities-conflict
    
                  container wiring-conflict {
                    description
                      "Action to perform when a wiring conflict occurs";
                    container efd {
                      must
                        "not(../error-disable-interface or ../log
    or ../disable)";
                      presence
                        "Indicates a efd node is configured.";
                      description
                        "Enable EFD to bring down the interface";
                    }  // container efd
    
                    container error-disable-interface {
                      must
                        "not(../efd or ../log
    or ../disable)";
                      presence
                        "Indicates a error-disable-interface node is configured.";
                      description
                        "Error-disable the interface";
                    }  // container error-disable-interface
    
                    container log {
                      must
                        "not(../efd or ../error-disable-interface
    or ../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must
                        "not(../efd or ../error-disable-interface
    or ../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container wiring-conflict
    
                  container discovery-timeout {
                    description
                      "Action to perform when discovery timeout occurs";
                    container error-disable-interface {
                      must
                        "not(../efd or ../log
    or ../disable)";
                      presence
                        "Indicates a error-disable-interface node is configured.";
                      description
                        "Error-disable the interface";
                    }  // container error-disable-interface
    
                    container efd {
                      must
                        "not(../error-disable-interface or ../log
    or ../disable)";
                      presence
                        "Indicates a efd node is configured.";
                      description
                        "Enable EFD to bring down the interface";
                    }  // container efd
    
                    container log {
                      must
                        "not(../error-disable-interface or ../efd
    or ../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must
                        "not(../error-disable-interface or ../efd
    or ../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container discovery-timeout
    
                  container high-threshold {
                    description
                      "Action to perform when a high-threshold is crossed";
                    container error-disable-interface {
                      must
                        "not(../log or ../disable)";
                      presence
                        "Indicates a error-disable-interface node is configured.";
                      description
                        "disable the interface";
                    }  // container error-disable-interface
    
                    container log {
                      must
                        "not(../error-disable-interface or ../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must
                        "not(../error-disable-interface or ../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container high-threshold
    
                  container remote-loopback {
                    description
                      "Action to perform when a remote loopback event occurs";
                    container log {
                      must "not(../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must "not(../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container remote-loopback
    
                  container session-up {
                    description
                      "Action to perform when a session comes up";
                    container log {
                      must "not(../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must "not(../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container session-up
    
                  container session-down {
                    description
                      "Action to perform when a session goes down";
                    container error-disable-interface {
                      must
                        "not(../efd or ../log
    or ../disable)";
                      presence
                        "Indicates a error-disable-interface node is configured.";
                      description
                        "Error-disable the interface";
                    }  // container error-disable-interface
    
                    container efd {
                      must
                        "not(../error-disable-interface or ../log
    or ../disable)";
                      presence
                        "Indicates a efd node is configured.";
                      description
                        "Enable EFD to bring down the interface";
                    }  // container efd
    
                    container log {
                      must
                        "not(../error-disable-interface or ../efd
    or ../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must
                        "not(../error-disable-interface or ../efd
    or ../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container session-down
                }  // container action
              }  // container oam
            }  // container ethernet
          }  // list interface-preconfigure
    
          list controller {
            key "controller-name";
            description
              "Controller configuration subcommands";
            leaf controller-name {
              type xr:Controller-name;
              description "Controller name";
            }
    
            container shutdown {
              tailf:dependency "../controller-name";
              when
                "../controller-name[not(starts-with(text(),'MACSecCtrlr'))] and ../controller-name[not(starts-with(text(),'Odu-Group-'))] and ../controller-name[not(starts-with(text(),'dwdm'))]";
              presence
                "Indicates a shutdown node is configured.";
              description
                "shutdown the given controller";
            }  // container shutdown
    
            leaf description {
              tailf:dependency "../controller-name";
              when
                "../controller-name[not(starts-with(text(),'CPRI'))] and ../controller-name[not(starts-with(text(),'MACSecCtrlr'))] and ../controller-name[not(starts-with(text(),'Odu-Group-'))] and ../controller-name[not(starts-with(text(),'STM'))] and ../controller-name[not(starts-with(text(),'STS'))] and ../controller-name[not(starts-with(text(),'VC'))] and ../controller-name[not(starts-with(text(),'dwdm'))]";
              type string {
                length "1..1024";
              }
              description
                "Set description for this controller";
            }
    
            leaf sec-admin-state {
              tailf:dependency "../controller-name";
              when
                "../controller-name[not(starts-with(text(),'MACSecCtrlr'))] and ../controller-name[not(starts-with(text(),'Odu-Group-'))] and ../controller-name[not(starts-with(text(),'E1'))] and ../controller-name[not(starts-with(text(),'E3'))] and ../controller-name[not(starts-with(text(),'T1'))] and ../controller-name[not(starts-with(text(),'T3'))] and ../controller-name[not(starts-with(text(),'SONET'))] and ../controller-name[not(starts-with(text(),'ODU'))] and ../controller-name[not(starts-with(text(),'OTU'))] and ../controller-name[not(starts-with(text(),'dwdm'))]";
              type enumeration {
                enum "normal" {
                  value 0;
                  description
                    "change the sec-admin-state to normal, only for optics";
                }
                enum "maintenance" {
                  value 1;
                  description
                    "change the sec-admin-state to maintenance";
                }
              }
              description
                "Configure the secondary admin state, not available for all controllers";
            }
    
            container frequency {
              tailf:dependency "../a1:controller-name";
              when
                "../a1:controller-name[starts-with(text(),'SONET')]";
              description
                "Frequency Synchronization configuration";
              container synchronization {
                presence
                  "Indicates a synchronization node is configured.";
                description
                  "Frequency Synchronization configuration";
                container ssm {
                  description
                    "SSM configuration commands";
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disable sending of SSMs";
                  }  // container disable
                }  // container ssm
    
                leaf priority {
                  type uint32 {
                    range "1..254";
                  }
                  description "Source priority";
                }
    
                leaf time-of-day-priority {
                  type uint32 {
                    range "1..254";
                  }
                  description
                    "Source time-of-day priority";
                }
    
                container quality {
                  description
                    "Quality level configuration";
                  container transmit {
                    description
                      "Set the quality level to be transmitted";
                    container lowest {
                      description
                        "Specify the lowest acceptable QL value";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../highest/itu-t/option/two/generation/one or
    ../../../../highest/itu-t/option/two/generation/two or
    ../../../../exact/itu-t/option/one or
    ../../../../exact/itu-t/option/two/generation/one or
    ../../../../exact/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container lowest
    
                    container highest {
                      description
                        "Specify the highest acceptable QL value";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../lowest/itu-t/option/one or
    ../../../../lowest/itu-t/option/two/generation/one or
    ../../../../lowest/itu-t/option/two/generation/two or
    ../../../../exact/itu-t/option/one or
    ../../../../exact/itu-t/option/two/generation/one or
    ../../../../exact/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container highest
    
                    container exact {
                      description
                        "Specify the exact QL value to use";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../highest/itu-t/option/two/generation/one or
    ../../../../highest/itu-t/option/two/generation/two or
    ../../../../lowest/itu-t/option/one or
    ../../../../lowest/itu-t/option/two/generation/one or
    ../../../../lowest/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/two or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container exact
                  }  // container transmit
    
                  container receive {
                    description
                      "Adjust the received quality level";
                    container lowest {
                      description
                        "Specify the lowest acceptable QL value";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../highest/itu-t/option/two/generation/one or
    ../../../../highest/itu-t/option/two/generation/two or
    ../../../../exact/itu-t/option/one or
    ../../../../exact/itu-t/option/two/generation/one or
    ../../../../exact/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container lowest
    
                    container highest {
                      description
                        "Specify the highest acceptable QL value";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../lowest/itu-t/option/one or
    ../../../../lowest/itu-t/option/two/generation/one or
    ../../../../lowest/itu-t/option/two/generation/two or
    ../../../../exact/itu-t/option/one or
    ../../../../exact/itu-t/option/two/generation/one or
    ../../../../exact/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container highest
    
                    container exact {
                      description
                        "Specify the exact QL value to use";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../highest/itu-t/option/two/generation/one or
    ../../../../highest/itu-t/option/two/generation/two or
    ../../../../lowest/itu-t/option/one or
    ../../../../lowest/itu-t/option/two/generation/one or
    ../../../../lowest/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/two or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container exact
                  }  // container receive
                }  // container quality
    
                leaf wait-to-restore {
                  type uint32 {
                    range "0..12";
                  }
                  description
                    "Set the wait-to-restore time";
                }
    
                container selection {
                  description
                    "Selection configuration commands";
                  container input {
                    presence
                      "Indicates a input node is configured.";
                    description
                      "Enable this source for selection";
                  }  // container input
                }  // container selection
              }  // container synchronization
            }  // container frequency
          }  // list controller
    
          list controller-preconfigure {
            key "controller-name";
            description
              "Specify a preconfig controller";
            leaf controller-name {
              type xr:Controller-name;
              description "Controller name";
            }
    
            container shutdown {
              tailf:dependency "../controller-name";
              when
                "../controller-name[not(starts-with(text(),'MACSecCtrlr'))] and ../controller-name[not(starts-with(text(),'Odu-Group-'))] and ../controller-name[not(starts-with(text(),'dwdm'))]";
              presence
                "Indicates a shutdown node is configured.";
              description
                "shutdown the given controller";
            }  // container shutdown
    
            leaf description {
              tailf:dependency "../controller-name";
              when
                "../controller-name[not(starts-with(text(),'CPRI'))] and ../controller-name[not(starts-with(text(),'MACSecCtrlr'))] and ../controller-name[not(starts-with(text(),'Odu-Group-'))] and ../controller-name[not(starts-with(text(),'STM'))] and ../controller-name[not(starts-with(text(),'STS'))] and ../controller-name[not(starts-with(text(),'VC'))] and ../controller-name[not(starts-with(text(),'dwdm'))]";
              type string {
                length "1..1024";
              }
              description
                "Set description for this controller";
            }
    
            leaf sec-admin-state {
              tailf:dependency "../controller-name";
              when
                "../controller-name[not(starts-with(text(),'MACSecCtrlr'))] and ../controller-name[not(starts-with(text(),'Odu-Group-'))] and ../controller-name[not(starts-with(text(),'E1'))] and ../controller-name[not(starts-with(text(),'E3'))] and ../controller-name[not(starts-with(text(),'T1'))] and ../controller-name[not(starts-with(text(),'T3'))] and ../controller-name[not(starts-with(text(),'SONET'))] and ../controller-name[not(starts-with(text(),'ODU'))] and ../controller-name[not(starts-with(text(),'OTU'))] and ../controller-name[not(starts-with(text(),'dwdm'))]";
              type enumeration {
                enum "normal" {
                  value 0;
                  description
                    "change the sec-admin-state to normal, only for optics";
                }
                enum "maintenance" {
                  value 1;
                  description
                    "change the sec-admin-state to maintenance";
                }
              }
              description
                "Configure the secondary admin state, not available for all controllers";
            }
    
            container frequency {
              tailf:dependency "../a1:controller-name";
              when
                "../a1:controller-name[starts-with(text(),'SONET')]";
              description
                "Frequency Synchronization configuration";
              container synchronization {
                presence
                  "Indicates a synchronization node is configured.";
                description
                  "Frequency Synchronization configuration";
                container ssm {
                  description
                    "SSM configuration commands";
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disable sending of SSMs";
                  }  // container disable
                }  // container ssm
    
                leaf priority {
                  type uint32 {
                    range "1..254";
                  }
                  description "Source priority";
                }
    
                leaf time-of-day-priority {
                  type uint32 {
                    range "1..254";
                  }
                  description
                    "Source time-of-day priority";
                }
    
                container quality {
                  description
                    "Quality level configuration";
                  container transmit {
                    description
                      "Set the quality level to be transmitted";
                    container lowest {
                      description
                        "Specify the lowest acceptable QL value";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../highest/itu-t/option/two/generation/one or
    ../../../../highest/itu-t/option/two/generation/two or
    ../../../../exact/itu-t/option/one or
    ../../../../exact/itu-t/option/two/generation/one or
    ../../../../exact/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container lowest
    
                    container highest {
                      description
                        "Specify the highest acceptable QL value";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../lowest/itu-t/option/one or
    ../../../../lowest/itu-t/option/two/generation/one or
    ../../../../lowest/itu-t/option/two/generation/two or
    ../../../../exact/itu-t/option/one or
    ../../../../exact/itu-t/option/two/generation/one or
    ../../../../exact/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container highest
    
                    container exact {
                      description
                        "Specify the exact QL value to use";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../highest/itu-t/option/two/generation/one or
    ../../../../highest/itu-t/option/two/generation/two or
    ../../../../lowest/itu-t/option/one or
    ../../../../lowest/itu-t/option/two/generation/one or
    ../../../../lowest/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/two or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container exact
                  }  // container transmit
    
                  container receive {
                    description
                      "Adjust the received quality level";
                    container lowest {
                      description
                        "Specify the lowest acceptable QL value";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../highest/itu-t/option/two/generation/one or
    ../../../../highest/itu-t/option/two/generation/two or
    ../../../../exact/itu-t/option/one or
    ../../../../exact/itu-t/option/two/generation/one or
    ../../../../exact/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container lowest
    
                    container highest {
                      description
                        "Specify the highest acceptable QL value";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../lowest/itu-t/option/one or
    ../../../../lowest/itu-t/option/two/generation/one or
    ../../../../lowest/itu-t/option/two/generation/two or
    ../../../../exact/itu-t/option/one or
    ../../../../exact/itu-t/option/two/generation/one or
    ../../../../exact/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two or
    ../../../../../../exact/itu-t/option/one or
    ../../../../../../exact/itu-t/option/two/generation/one or
    ../../../../../../exact/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container highest
    
                    container exact {
                      description
                        "Specify the exact QL value to use";
                      container itu-t {
                        description
                          "ITU-T QL options";
                        container option {
                          description
                            "ITU-T QL options";
                          leaf one {
                            type enumeration {
                              enum "prc" {
                                value 22;
                                description
                                  "ITU-T Option 1: Primary reference clock";
                              }
                              enum "prtc" {
                                value 21;
                                description
                                  "ITU-T Option 1: Primary reference timing clock";
                              }
                              enum "e-prtc" {
                                value 20;
                                description
                                  "ITU-T Option 1: Enhanced primary reference timing clock";
                              }
                              enum "ssu-a" {
                                value 23;
                                description
                                  "ITU-T Option 1: Type I or V subordinate clock";
                              }
                              enum "ssu-b" {
                                value 24;
                                description
                                  "ITU-T Option 1: Type IV subordinate clock";
                              }
                              enum "sec" {
                                value 27;
                                description
                                  "ITU-T Option 1: SONET equipment clock";
                              }
                              enum "e-eec" {
                                value 25;
                                description
                                  "ITU-T Option 1: Enhanced ethernet equipment clock";
                              }
                              enum "eec1" {
                                value 26;
                                description
                                  "ITU-T Option 1: Ethernet equipment clock";
                              }
                              enum "dnu" {
                                value 1;
                                description
                                  "This signal should not be used for synchronization";
                              }
                            }
                            must
                              "not(../two/generation/one or
    ../two/generation/two or
    ../../../../highest/itu-t/option/two/generation/one or
    ../../../../highest/itu-t/option/two/generation/two or
    ../../../../lowest/itu-t/option/one or
    ../../../../lowest/itu-t/option/two/generation/one or
    ../../../../lowest/itu-t/option/two/generation/two)";
                            description
                              "ITU-T QL option 1";
                          }
    
                          container two {
                            description
                              "ITU-T QL option 2";
                            container generation {
                              description
                                "ITU-T QL option 2 generation";
                              leaf one {
                                type enumeration {
                                  enum "prs" {
                                    value 42;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 41;
                                    description
                                      "ITU-T Option 2, Generation 1: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 40;
                                    description
                                      "ITU-T Option 2, Generation 1: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 43;
                                    description
                                      "ITU-T Option 2, Generation 1: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 44;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 2";
                                  }
                                  enum "st3" {
                                    value 45;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 48;
                                    description
                                      "ITU-T Option 2, Generation 1: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 47;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 46;
                                    description
                                      "ITU-T Option 2, Generation 1: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 49;
                                    description
                                      "ITU-T Option 2, Generation 1: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../two or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/two or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 1";
                              }
    
                              leaf two {
                                type enumeration {
                                  enum "prs" {
                                    value 62;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference source";
                                  }
                                  enum "prtc" {
                                    value 61;
                                    description
                                      "ITU-T Option 2, Generation 2: Primary reference timing clock";
                                  }
                                  enum "e-prtc" {
                                    value 60;
                                    description
                                      "ITU-T Option 2, Generation 2: Enhanced primary reference timing clock";
                                  }
                                  enum "stu" {
                                    value 63;
                                    description
                                      "ITU-T Option 2, Generation 2: Synchronized - traceability unknown";
                                  }
                                  enum "st2" {
                                    value 64;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 2";
                                  }
                                  enum "tnc" {
                                    value 65;
                                    description
                                      "ITU-T Option 2, Generation 2: Transit node clock";
                                  }
                                  enum "st3e" {
                                    value 66;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3E";
                                  }
                                  enum "st3" {
                                    value 67;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 3";
                                  }
                                  enum "smc" {
                                    value 70;
                                    description
                                      "ITU-T Option 2, Generation 2: SONET clock self timed";
                                  }
                                  enum "eec2" {
                                    value 69;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet equipment clock";
                                  }
                                  enum "e-eec" {
                                    value 68;
                                    description
                                      "ITU-T Option 2, Generation 2: Ethernet ethernet equipment clock";
                                  }
                                  enum "st4" {
                                    value 71;
                                    description
                                      "ITU-T Option 2, Generation 2: Stratum 4 freerun";
                                  }
                                  enum "dus" {
                                    value 1;
                                    description
                                      "This signal should not be used for synchronization";
                                  }
                                }
                                must
                                  "not(../../../one or
    ../one or
    ../../../../../../highest/itu-t/option/one or
    ../../../../../../highest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/one or
    ../../../../../../lowest/itu-t/option/two/generation/one or
    ../../../../../../lowest/itu-t/option/two/generation/two)";
                                description
                                  "ITU-T QL option 2, generation 2";
                              }
                            }  // container generation
                          }  // container two
                        }  // container option
                      }  // container itu-t
                    }  // container exact
                  }  // container receive
                }  // container quality
    
                leaf wait-to-restore {
                  type uint32 {
                    range "0..12";
                  }
                  description
                    "Set the wait-to-restore time";
                }
    
                container selection {
                  description
                    "Selection configuration commands";
                  container input {
                    presence
                      "Indicates a input node is configured.";
                    description
                      "Enable this source for selection";
                  }  // container input
                }  // container selection
              }  // container synchronization
            }  // container frequency
          }  // list controller-preconfigure
        }  // container interfaces
    
        container logging {
          description
            "Modify message logging facilities";
          container events {
            description
              "Configure event monitoring parameters";
            container link-status {
              description
                "Enable or disable UP/DOWN state notifications for all interfaces";
              container disable {
                must
                  "not(../software-interfaces)";
                presence
                  "Indicates a disable node is configured.";
                description
                  "Disable state UP/DOWN notifications for all interfaces";
              }  // container disable
    
              container software-interfaces {
                must "not(../disable)";
                presence
                  "Indicates a software-interfaces node is configured.";
                description
                  "Enable state UP/DOWN notification for software interfaces";
              }  // container software-interfaces
            }  // container link-status
          }  // container events
        }  // container logging
      }  // module Cisco-IOS-XR-um-interface-cfg
    

© 2023 YumaWorks, Inc. All rights reserved.