Cisco-IOS-XR-um-l2vpn-cfg

This module contains a collection of YANG definitions for Cisco IOS-XR l2vpn package configuration. This YANG module augments t...

  • Version: 2021-05-10

    Cisco-IOS-XR-um-l2vpn-cfg@2021-05-10


    
      module Cisco-IOS-XR-um-l2vpn-cfg {
    
        yang-version 1;
    
        namespace
          "http://cisco.com/ns/yang/Cisco-IOS-XR-um-l2vpn-cfg";
    
        prefix um-l2vpn-cfg;
    
        import Cisco-IOS-XR-types {
          prefix xr;
        }
        import ietf-inet-types {
          prefix inet;
        }
        import ietf-yang-types {
          prefix yang;
        }
        import Cisco-IOS-XR-um-interface-cfg {
          prefix a1;
        }
        import Cisco-IOS-XR-um-snmp-server-cfg {
          prefix a2;
        }
        import Cisco-IOS-XR-um-vrf-cfg {
          prefix a3;
        }
        import tailf-common {
          prefix tailf;
        }
        import cisco-semver {
          prefix semver;
        }
    
        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 l2vpn package configuration.
    
    This YANG module augments the
    modules with configuration data.
    
    Copyright (c) 2021 by Cisco Systems, Inc.
    All rights reserved.";
    
        revision "2021-05-10" {
          description "Initial release";
        }
    
        semver:module-version "1.0.0";
    
        feature l2vpn_evpn_not_nve_intf {
          description "l2vpn evpn not nve intf";
        }
    
        feature l2vpn_evpn_is_bundle_intf {
          description
            "l2vpn evpn is bundle intf";
        }
    
        feature l2vpn_platform_srv6_supported {
          description
            "l2vpn platform srv6 supported";
        }
    
        feature l2vpn_iflist_intf_supported {
          description
            "l2vpn iflist intf supported";
        }
    
        feature l2vpn_is_cli_supported {
          description "l2vpn is cli supported";
        }
    
        feature l2vpn_bd_non_ether_ac_supported {
          description
            "l2vpn bd non ether ac supported";
        }
    
        feature l2vpn_pw_p2mp_supported {
          description "l2vpn pw p2mp supported";
        }
    
        feature l2vpn_cem_func_supported {
          description "l2vpn cem func supported";
        }
    
        feature l2vpn_platform_vpws_seamless_integration_supported {
          description
            "l2vpn platform vpws seamless integration supported";
        }
    
        feature l2vpn_p2p_backup_supported {
          description
            "l2vpn p2p backup supported";
        }
    
        feature l2vpn_cfg_ipv6_pw_supported {
          description
            "l2vpn cfg ipv6 pw supported";
        }
    
        container evpn {
          presence
            "Indicates a evpn node is configured.";
          description "Configure E-VPN commands";
          container interface {
            description
              "Assign interface to EVPN";
            list interface {
              key "interface-name";
              description
                "Specify interface name";
              leaf interface-name {
                type xr:Interface-name;
                description
                  "Specify interface name";
              }
    
              container mac-flush {
                description "MAC Flush mode";
                container mvrp {
                  presence
                    "Indicates a mvrp node is configured.";
                  description
                    "MAC Flush over MVRP";
                }  // container mvrp
              }  // container mac-flush
    
              container timers {
                presence
                  "Indicates a timers node is configured.";
                description
                  "Configure interface-specific EVPN timers";
                leaf peering {
                  type uint32 {
                    range "0..300";
                  }
                  description
                    "Interface-specific peering timer";
                }
    
                leaf recovery {
                  type uint32 {
                    range "0..3600";
                  }
                  description
                    "Interface-specific recovery timer";
                }
    
                leaf carving {
                  type uint32 {
                    range "0..300";
                  }
                  description
                    "Interface-specific carving timer";
                }
    
                leaf ac-debounce {
                  type uint32 {
                    range "0..300000";
                  }
                  description
                    "Interface-specific AC Debounce timer";
                }
              }  // container timers
    
              container ethernet-segment {
                presence
                  "Indicates a ethernet-segment node is configured.";
                description
                  "Ethernet Segment configuration commands";
                container identifier {
                  description
                    "Ethernet Segment identifier (ESI)";
                  container type {
                    description "ESI Type";
                    container zero {
                      presence
                        "Indicates a zero node is configured.";
                      description
                        "Type 0 (arbitrary 9-octet ESI value)";
                      leaf bytes-1 {
                        type xr:Hex-integer-8;
                        mandatory true;
                        description "1st Byte";
                      }
    
                      leaf bytes-23 {
                        type xr:Hex-integer-16;
                        units "byte";
                        mandatory true;
                        description
                          "2nd and 3rd Bytes";
                      }
    
                      leaf bytes-45 {
                        type xr:Hex-integer-16;
                        units "byte";
                        mandatory true;
                        description
                          "4th and 5th Bytes";
                      }
    
                      leaf bytes-67 {
                        type xr:Hex-integer-16;
                        units "byte";
                        mandatory true;
                        description
                          "6th and 7th Bytes";
                      }
    
                      leaf bytes-89 {
                        type xr:Hex-integer-16;
                        units "byte";
                        mandatory true;
                        description
                          "8th and 9th Bytes";
                      }
                    }  // container zero
                  }  // container type
                }  // container identifier
    
                container load-balancing-mode {
                  description
                    "Specify load balancing mode";
                  container all-active {
                    must
                      "not(../port-active or ../single-active
    or ../single-flow-active)";
                    presence
                      "Indicates a all-active node is configured.";
                    description
                      "All-Active load balancing";
                  }  // container all-active
    
                  container port-active {
                    must
                      "not(../all-active or ../single-active
    or ../single-flow-active)";
                    presence
                      "Indicates a port-active node is configured.";
                    description
                      "Port-Active load balancing";
                  }  // container port-active
    
                  container single-active {
                    must
                      "not(../all-active or ../port-active
    or ../single-flow-active)";
                    presence
                      "Indicates a single-active node is configured.";
                    description
                      "Single-Active load balancing";
                  }  // container single-active
    
                  container single-flow-active {
                    must
                      "not(../all-active or ../port-active
    or ../single-active)";
                    presence
                      "Indicates a single-flow-active node is configured.";
                    description
                      "Single-Flow-Active load balancing";
                  }  // container single-flow-active
                }  // container load-balancing-mode
    
                leaf backbone-source-mac {
                  type yang:mac-address;
                  description
                    "Backbone Source MAC (PBB Only)";
                }
    
                container force {
                  description
                    "Forced attributes for this ethernet segment";
                  container single-homed {
                    presence
                      "Indicates a single-homed node is configured.";
                    description
                      "Ethernet segment is to remain single-home";
                  }  // container single-homed
                }  // container force
    
                container service-carving {
                  description
                    "Specify service carving";
                  container manual {
                    presence
                      "Indicates a manual node is configured.";
                    description
                      "Configure EVPN  Manual services list";
                    leaf primary {
                      type string {
                        length "1..150";
                      }
                      must "../secondary";
                      description
                        "Primary services list";
                    }
    
                    leaf secondary {
                      type string {
                        length "1..150";
                      }
                      must "../primary";
                      description
                        "Secondary services list";
                    }
                  }  // container manual
    
                  container hrw {
                    presence
                      "Indicates a hrw node is configured.";
                    description
                      "HRW mode of carving services";
                  }  // container hrw
    
                  container multicast {
                    description
                      "Multicast specific service carving";
                    container hrw-s-g {
                      must "not(../hrw-g)";
                      presence
                        "Indicates a hrw-s-g node is configured.";
                      description "HRW s,g mode";
                    }  // container hrw-s-g
    
                    container hrw-g {
                      must "not(../hrw-s-g)";
                      presence
                        "Indicates a hrw-g node is configured.";
                      description "HRW *,g mode";
                    }  // container hrw-g
                  }  // container multicast
    
                  container preference-based {
                    presence
                      "Indicates a preference-based node is configured.";
                    description
                      "Configure EVPN  Preference-Based";
                    leaf weight {
                      type uint32 {
                        range "0..65535";
                      }
                      description
                        "Preference value";
                    }
    
                    container access-driven {
                      presence
                        "Indicates a access-driven node is configured.";
                      description
                        "Access-Driven DF Election";
                    }  // container access-driven
                  }  // container preference-based
                }  // container service-carving
    
                container bgp {
                  description "Configure BGP";
                  leaf route-target {
                    type yang:mac-address;
                    description
                      "Set ES-Import Route Target";
                  }
                }  // container bgp
    
                container convergence {
                  presence
                    "Indicates a convergence node is configured.";
                  description
                    "Specify convergence mode(s) and options";
                  container reroute {
                    presence
                      "Indicates a reroute node is configured.";
                    description
                      "Redirect unicast traffic to backup peer";
                  }  // container reroute
    
                  container mac-mobility {
                    presence
                      "Indicates a mac-mobility node is configured.";
                    description
                      "MAC-Mobility triggered reconvergence";
                  }  // container mac-mobility
    
                  container nexthop-tracking {
                    presence
                      "Indicates a nexthop-tracking node is configured.";
                    description
                      "Enable EVPN procedures to be influenced by BGP nexthop reachability";
                  }  // container nexthop-tracking
                }  // container convergence
              }  // container ethernet-segment
    
              leaf core-isolation-group {
                if-feature l2vpn_evpn_is_bundle_intf;
                type uint32 {
                  range "1..4294967295";
                }
                description
                  "Core isolation group";
              }
    
              container access-signal {
                if-feature l2vpn_evpn_is_bundle_intf;
                description
                  "Override default signal sent to bring down access circuit";
                container bundle-down {
                  presence
                    "Indicates a bundle-down node is configured.";
                  description
                    "Signal Bundle Down";
                }  // container bundle-down
              }  // container access-signal
    
              container virtual-ethernet-segment {
                presence
                  "Indicates a virtual-ethernet-segment node is configured.";
                description
                  "Virtual Ethernet Segment configuration commands";
                container identifier {
                  description
                    "VES identifier (6 byte value in MAC format)";
                  container type {
                    description "ESI Type";
                    leaf three {
                      type yang:mac-address;
                      description
                        "Type 3 (6-byte value in MAC format)";
                    }
                  }  // container type
                }  // container identifier
              }  // container virtual-ethernet-segment
            }  // list interface
          }  // container interface
    
          container virtual {
            description
              "Virtual Access Segment to EVPN";
            container neighbor {
              description
                "Specify the peer to cross connect";
              list neighbor {
                key "address pw-id";
                description
                  "Specify the peer to cross connect";
                leaf address {
                  type inet:ipv4-address-no-zone;
                  description
                    "IPv4 address of the peer";
                }
    
                leaf pw-id {
                  type uint32 {
                    range "1..4294967295";
                  }
                  description
                    "Specify the pseudowire id";
                }
    
                container timers {
                  presence
                    "Indicates a timers node is configured.";
                  description
                    "Configure access PW-specific EVPN timers";
                  leaf peering {
                    type uint32 {
                      range "0..300";
                    }
                    description
                      "Access PW-specific peering timer";
                  }
    
                  leaf recovery {
                    type uint32 {
                      range "0..3600";
                    }
                    description
                      "Access PW-specific recovery timer";
                  }
    
                  leaf carving {
                    type uint32 {
                      range "0..300";
                    }
                    description
                      "Access PW-specific carving timer";
                  }
    
                  leaf ac-debounce {
                    type uint32 {
                      range "0..300000";
                    }
                    description
                      "Access PW-specific AC Debounce timer";
                  }
                }  // container timers
    
                container ethernet-segment {
                  presence
                    "Indicates a ethernet-segment node is configured.";
                  description
                    "Ethernet Segment configuration commands";
                  container identifier {
                    description
                      "Ethernet Segment identifier (ESI)";
                    container type {
                      description "ESI Type";
                      container zero {
                        presence
                          "Indicates a zero node is configured.";
                        description
                          "Type 0 (arbitrary 9-octet ESI value)";
                        leaf bytes-1 {
                          type xr:Hex-integer-8;
                          mandatory true;
                          description "1st Byte";
                        }
    
                        leaf bytes-23 {
                          type xr:Hex-integer-16;
                          units "byte";
                          mandatory true;
                          description
                            "2nd and 3rd Bytes";
                        }
    
                        leaf bytes-45 {
                          type xr:Hex-integer-16;
                          units "byte";
                          mandatory true;
                          description
                            "4th and 5th Bytes";
                        }
    
                        leaf bytes-67 {
                          type xr:Hex-integer-16;
                          units "byte";
                          mandatory true;
                          description
                            "6th and 7th Bytes";
                        }
    
                        leaf bytes-89 {
                          type xr:Hex-integer-16;
                          units "byte";
                          mandatory true;
                          description
                            "8th and 9th Bytes";
                        }
                      }  // container zero
                    }  // container type
                  }  // container identifier
    
                  container service-carving {
                    description
                      "Specify service carving";
                    container manual {
                      presence
                        "Indicates a manual node is configured.";
                      description
                        "Configure EVPN  Manual services list";
                      leaf primary {
                        type string {
                          length "1..150";
                        }
                        must "../secondary";
                        description
                          "Primary services list";
                      }
    
                      leaf secondary {
                        type string {
                          length "1..150";
                        }
                        must "../primary";
                        description
                          "Secondary services list";
                      }
                    }  // container manual
    
                    container hrw {
                      presence
                        "Indicates a hrw node is configured.";
                      description
                        "HRW mode of carving services";
                    }  // container hrw
    
                    container multicast {
                      description
                        "Multicast specific service carving";
                      container hrw-s-g {
                        must "not(../hrw-g)";
                        presence
                          "Indicates a hrw-s-g node is configured.";
                        description
                          "HRW s,g mode";
                      }  // container hrw-s-g
    
                      container hrw-g {
                        must "not(../hrw-s-g)";
                        presence
                          "Indicates a hrw-g node is configured.";
                        description
                          "HRW *,g mode";
                      }  // container hrw-g
                    }  // container multicast
    
                    container preference-based {
                      presence
                        "Indicates a preference-based node is configured.";
                      description
                        "Configure EVPN  Preference-Based";
                      leaf weight {
                        type uint32 {
                          range "0..65535";
                        }
                        description
                          "Preference value";
                      }
    
                      container access-driven {
                        presence
                          "Indicates a access-driven node is configured.";
                        description
                          "Access-Driven DF Election";
                      }  // container access-driven
                    }  // container preference-based
                  }  // container service-carving
    
                  container bgp {
                    description "Configure BGP";
                    leaf route-target {
                      type yang:mac-address;
                      description
                        "Set ES-Import Route Target";
                    }
                  }  // container bgp
                }  // container ethernet-segment
              }  // list neighbor
            }  // container neighbor
    
            container vfis {
              description
                "Specify the virtual forwarding interface name";
              list vfi {
                key "vfi-name";
                description
                  "Specify the virtual forwarding interface name";
                leaf vfi-name {
                  type xr:Cisco-ios-xr-string {
                    length "1..32";
                  }
                  description
                    "Specify the virtual forwarding interface name";
                }
    
                container timers {
                  presence
                    "Indicates a timers node is configured.";
                  description
                    "Configure access VFI-specific EVPN timers";
                  leaf peering {
                    type uint32 {
                      range "0..300";
                    }
                    description
                      "Access VFI-specific peering timer";
                  }
    
                  leaf recovery {
                    type uint32 {
                      range "0..3600";
                    }
                    description
                      "Access VFI-specific recovery timer";
                  }
    
                  leaf carving {
                    type uint32 {
                      range "0..300";
                    }
                    description
                      "Access VFI-specific carving timer";
                  }
    
                  leaf ac-debounce {
                    type uint32 {
                      range "0..300000";
                    }
                    description
                      "Access VFI-specific AC Debounce timer";
                  }
                }  // container timers
    
                container ethernet-segment {
                  presence
                    "Indicates a ethernet-segment node is configured.";
                  description
                    "Ethernet Segment configuration commands";
                  container identifier {
                    description
                      "Ethernet Segment identifier (ESI)";
                    container type {
                      description "ESI Type";
                      container zero {
                        presence
                          "Indicates a zero node is configured.";
                        description
                          "Type 0 (arbitrary 9-octet ESI value)";
                        leaf bytes-1 {
                          type xr:Hex-integer-8;
                          mandatory true;
                          description "1st Byte";
                        }
    
                        leaf bytes-23 {
                          type xr:Hex-integer-16;
                          units "byte";
                          mandatory true;
                          description
                            "2nd and 3rd Bytes";
                        }
    
                        leaf bytes-45 {
                          type xr:Hex-integer-16;
                          units "byte";
                          mandatory true;
                          description
                            "4th and 5th Bytes";
                        }
    
                        leaf bytes-67 {
                          type xr:Hex-integer-16;
                          units "byte";
                          mandatory true;
                          description
                            "6th and 7th Bytes";
                        }
    
                        leaf bytes-89 {
                          type xr:Hex-integer-16;
                          units "byte";
                          mandatory true;
                          description
                            "8th and 9th Bytes";
                        }
                      }  // container zero
                    }  // container type
                  }  // container identifier
    
                  container service-carving {
                    description
                      "Specify service carving";
                    container manual {
                      presence
                        "Indicates a manual node is configured.";
                      description
                        "Configure EVPN  Manual services list";
                      leaf primary {
                        type string {
                          length "1..150";
                        }
                        must "../secondary";
                        description
                          "Primary services list";
                      }
    
                      leaf secondary {
                        type string {
                          length "1..150";
                        }
                        must "../primary";
                        description
                          "Secondary services list";
                      }
                    }  // container manual
    
                    container hrw {
                      presence
                        "Indicates a hrw node is configured.";
                      description
                        "HRW mode of carving services";
                    }  // container hrw
    
                    container preference-based {
                      presence
                        "Indicates a preference-based node is configured.";
                      description
                        "Configure EVPN  Preference-Based";
                      leaf weight {
                        type uint32 {
                          range "0..65535";
                        }
                        description
                          "Preference value";
                      }
    
                      container access-driven {
                        presence
                          "Indicates a access-driven node is configured.";
                        description
                          "Access-Driven DF Election";
                      }  // container access-driven
                    }  // container preference-based
                  }  // container service-carving
    
                  container bgp {
                    description "Configure BGP";
                    leaf route-target {
                      type yang:mac-address;
                      description
                        "Set ES-Import Route Target";
                    }
                  }  // container bgp
                }  // container ethernet-segment
              }  // list vfi
            }  // container vfis
    
            container access-evi {
              presence
                "Indicates a access-evi node is configured.";
              description
                "Virtual access EVI interface";
              container ethernet-segment {
                presence
                  "Indicates a ethernet-segment node is configured.";
                description
                  "Ethernet Segment configuration commands";
                container identifier {
                  description
                    "Ethernet Segment identifier (ESI)";
                  container type {
                    description "ESI Type";
                    container zero {
                      presence
                        "Indicates a zero node is configured.";
                      description
                        "Type 0 (arbitrary 9-octet ESI value)";
                      leaf bytes-1 {
                        type xr:Hex-integer-8;
                        mandatory true;
                        description "1st Byte";
                      }
    
                      leaf bytes-23 {
                        type xr:Hex-integer-16;
                        units "byte";
                        mandatory true;
                        description
                          "2nd and 3rd Bytes";
                      }
    
                      leaf bytes-45 {
                        type xr:Hex-integer-16;
                        units "byte";
                        mandatory true;
                        description
                          "4th and 5th Bytes";
                      }
    
                      leaf bytes-67 {
                        type xr:Hex-integer-16;
                        units "byte";
                        mandatory true;
                        description
                          "6th and 7th Bytes";
                      }
    
                      leaf bytes-89 {
                        type xr:Hex-integer-16;
                        units "byte";
                        mandatory true;
                        description
                          "8th and 9th Bytes";
                      }
                    }  // container zero
                  }  // container type
                }  // container identifier
    
                container bgp {
                  description "Configure BGP";
                  leaf route-target {
                    type yang:mac-address;
                    description
                      "Set ES-Import Route Target";
                  }
                }  // container bgp
              }  // container ethernet-segment
            }  // container access-evi
          }  // container virtual
    
          container bgp {
            presence
              "Indicates a bgp node is configured.";
            description "Configure BGP";
            container rd {
              description
                "Set the Route Distinguisher";
              leaf two-byte-as-number {
                type uint32 {
                  range "1..65535";
                }
                must
                  "not(../four-byte-as-number or ../ipv4-address)";
                description "Two Byte AS Number";
              }
    
              leaf two-byte-as-assigned-number {
                type uint32 {
                  range "0..4294967295";
                }
                must "../two-byte-as-number";
                description
                  "AS:nn (hex or decimal format)";
              }
    
              leaf four-byte-as-number {
                type uint32 {
                  range "65536..4294967295";
                }
                must
                  "not(../two-byte-as-number or ../ipv4-address)";
                description
                  "Four Byte AS number";
              }
    
              leaf four-byte-as-assigned-number {
                type uint32 {
                  range "0..65535";
                }
                must "../four-byte-as-number";
                description
                  "AS:nn (hex or decimal format)";
              }
    
              leaf ipv4-address {
                type inet:ipv4-address-no-zone;
                must
                  "not(../two-byte-as-number or ../four-byte-as-number)";
                description "IP address";
              }
    
              leaf ipv4-address-assigned-number {
                type uint32 {
                  range "0..65535";
                }
                must "../ipv4-address";
                description
                  "IP-address:nn (hex or decimal format)";
              }
            }  // container rd
          }  // container bgp
    
          container timers {
            presence
              "Indicates a timers node is configured.";
            description
              "Configure global EVPN timers";
            leaf recovery {
              type uint32 {
                range "0..3600";
              }
              description
                "Global recovery timer";
            }
    
            leaf peering {
              type uint32 {
                range "0..300";
              }
              description "Global peering timer";
            }
    
            leaf carving {
              type uint32 {
                range "0..300";
              }
              description "Global carving timer";
            }
    
            leaf ac-debounce {
              type uint32 {
                range "0..300000";
              }
              description
                "Global AC Debounce timer";
            }
    
            leaf backup-replacement-delay {
              type uint32 {
                range "0..300000";
              }
              description
                "When receiving a new backup route, delay installation for this amount of time timer";
            }
    
            leaf mac-postpone {
              type uint32 {
                range "0..300";
              }
              description
                "Global MAC withdraw postpone timer";
            }
          }  // container timers
    
          container load-balancing {
            presence
              "Indicates a load-balancing node is configured.";
            description
              "Configure EVPN Global load-balancing";
            container flow-label {
              description
                "PBB-EVPN Flow Label load balancing";
              container static {
                presence
                  "Indicates a static node is configured.";
                description
                  "Static configuration of Flow Label";
              }  // container static
            }  // container flow-label
          }  // container load-balancing
    
          container source {
            description
              "Configure EVPN source interface";
            leaf interface {
              type xr:Interface-name;
              description
                "Configure EVPN router-id implicitly through Loopback Interface";
            }
          }  // container source
    
          container cost-out {
            presence
              "Indicates a cost-out node is configured.";
            description
              "Configure global EVPN cost-out";
          }  // container cost-out
    
          leaf startup-cost-in {
            type uint32 {
              range "30..86400";
            }
            description
              "Cost-in after reload timer";
          }
    
          leaf staggered-bringup-timer {
            type uint32 {
              range "0..300000";
            }
            description
              "Staggered bringup timer delay timer";
          }
    
          container logging {
            presence
              "Indicates a logging node is configured.";
            description
              "Configure evpn logging commands";
            container df-election {
              presence
                "Indicates a df-election node is configured.";
              description
                "Enable Designated Forwarder election logging";
            }  // container df-election
          }  // container logging
    
          container ethernet-segment {
            presence
              "Indicates a ethernet-segment node is configured.";
            description
              "Configure global ethernet-segment commands";
            container type {
              description "ESI type";
              container one {
                description
                  "LACP ESI-auto-generation";
                container auto-generation-disable {
                  presence
                    "Indicates a auto-generation-disable node is configured.";
                  description
                    "Disable ESI auto-generation";
                }  // container auto-generation-disable
              }  // container one
            }  // container type
          }  // container ethernet-segment
    
          container groups {
            description "Configure EVPN group";
            list group {
              key "group-name";
              description "Configure EVPN group";
              leaf group-name {
                type uint32 {
                  range "1..4294967295";
                }
                description
                  "Configure EVPN group";
              }
    
              container core {
                description
                  "configure EVPN group core interface";
                list interface {
                  key "interface-name";
                  description
                    "configure EVPN group core interface";
                  leaf interface-name {
                    type xr:Interface-name;
                    description
                      "configure EVPN group core interface";
                  }
                }  // list interface
              }  // container core
            }  // list group
          }  // container groups
    
          container evis {
            description
              "Configure EVPN Instance VPN ID";
            container segment-routing {
              if-feature l2vpn_platform_srv6_supported;
              description
                "Configure Segment Routing EVPN Instance";
              container srv6 {
                description
                  "Configure SRv6 EVPN Instance";
                list evi {
                  key "vpn-id";
                  description
                    "Configure EVPN Instance VPN ID";
                  leaf vpn-id {
                    type uint32 {
                      range "1..65534";
                    }
                    description
                      "Configure EVPN Instance VPN ID";
                  }
    
                  container bgp {
                    presence
                      "Indicates a bgp node is configured.";
                    description "Configure BGP";
                    container rd {
                      description
                        "Set the Route Distinguisher";
                      leaf two-byte-as-number {
                        type uint32 {
                          range "1..65535";
                        }
                        must
                          "not(../four-byte-as-number or ../ipv4-address)";
                        description
                          "Two Byte AS Number";
                      }
    
                      leaf two-byte-as-assigned-number {
                        type uint32 {
                          range "0..4294967295";
                        }
                        must
                          "../two-byte-as-number";
                        description
                          "AS:nn (hex or decimal format)";
                      }
    
                      leaf four-byte-as-number {
                        type uint32 {
                          range
                            "65536..4294967295";
                        }
                        must
                          "not(../two-byte-as-number or ../ipv4-address)";
                        description
                          "Four Byte AS number";
                      }
    
                      leaf four-byte-as-assigned-number {
                        type uint32 {
                          range "0..65535";
                        }
                        must
                          "../four-byte-as-number";
                        description
                          "AS:nn (hex or decimal format)";
                      }
    
                      leaf ipv4-address {
                        type inet:ipv4-address-no-zone;
                        must
                          "not(../two-byte-as-number or ../four-byte-as-number)";
                        description "IP address";
                      }
    
                      leaf ipv4-address-assigned-number {
                        type uint32 {
                          range "0..65535";
                        }
                        must "../ipv4-address";
                        description
                          "IP-address:nn (hex or decimal format)";
                      }
                    }  // container rd
    
                    container route-target {
                      description
                        "Set the Route Target";
                      container two-byte-as-rts {
                        description
                          "Two Byte AS Number Route Target";
                        list two-byte-as-rt {
                          key "two-byte-as-number assigned-number";
                          description
                            "Two Byte AS Number Route Target";
                          leaf two-byte-as-number {
                            type uint32 {
                              range "1..65535";
                            }
                            description
                              "Two Byte AS Number";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "AS:nn (hex or decimal format)";
                          }
                        }  // list two-byte-as-rt
                      }  // container two-byte-as-rts
    
                      container four-byte-as-rts {
                        description
                          "Four Byte AS number Route Target";
                        list four-byte-as-rt {
                          key "four-byte-as-number assigned-number";
                          description
                            "Four Byte AS number Route Target";
                          leaf four-byte-as-number {
                            type uint32 {
                              range
                                "65536..4294967295";
                            }
                            description
                              "Four Byte AS number";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "AS:nn (hex or decimal format)";
                          }
                        }  // list four-byte-as-rt
                      }  // container four-byte-as-rts
    
                      container ipv4-address-rts {
                        description
                          "IP address Route Target";
                        list ipv4-address-rt {
                          key "ipv4-address assigned-number";
                          description
                            "IP address";
                          leaf ipv4-address {
                            type inet:ipv4-address-no-zone;
                            description
                              "IP address";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "IP-address:nn (hex or decimal format)";
                          }
                        }  // list ipv4-address-rt
                      }  // container ipv4-address-rts
    
                      container none {
                        presence
                          "Indicates a none node is configured.";
                        description
                          "Withhold BGP RTs";
                      }  // container none
    
                      container import {
                        description
                          "Import Route Target";
                        container two-byte-as-rts {
                          description
                            "Two Byte AS Number Route Target";
                          list two-byte-as-rt {
                            key "two-byte-as-number assigned-number";
                            description
                              "Two Byte AS Number Route Target";
                            leaf two-byte-as-number {
                              type uint32 {
                                range "1..65535";
                              }
                              description
                                "Two Byte AS Number";
                            }
    
                            leaf assigned-number {
                              type uint32 {
                                range
                                  "0..4294967295";
                              }
                              description
                                "AS:nn (hex or decimal format)";
                            }
                          }  // list two-byte-as-rt
                        }  // container two-byte-as-rts
    
                        container four-byte-as-rts {
                          description
                            "Four Byte AS number Route Target";
                          list four-byte-as-rt {
                            key "four-byte-as-number assigned-number";
                            description
                              "Four Byte AS number Route Target";
                            leaf four-byte-as-number {
                              type uint32 {
                                range
                                  "65536..4294967295";
                              }
                              description
                                "Four Byte AS number";
                            }
    
                            leaf assigned-number {
                              type uint32 {
                                range "0..65535";
                              }
                              description
                                "AS:nn (hex or decimal format)";
                            }
                          }  // list four-byte-as-rt
                        }  // container four-byte-as-rts
    
                        container ipv4-address-rts {
                          description
                            "IP address Route Target";
                          list ipv4-address-rt {
                            key "ipv4-address assigned-number";
                            description
                              "IP address";
                            leaf ipv4-address {
                              type inet:ipv4-address-no-zone;
                              description
                                "IP address";
                            }
    
                            leaf assigned-number {
                              type uint32 {
                                range "0..65535";
                              }
                              description
                                "IP-address:nn (hex or decimal format)";
                            }
                          }  // list ipv4-address-rt
                        }  // container ipv4-address-rts
    
                        container none {
                          presence
                            "Indicates a none node is configured.";
                          description
                            "Withhold BGP RTs";
                        }  // container none
                      }  // container import
    
                      container export {
                        description
                          "Export Route Target";
                        container two-byte-as-rts {
                          description
                            "Two Byte AS Number Route Target";
                          list two-byte-as-rt {
                            key "two-byte-as-number assigned-number";
                            description
                              "Two Byte AS Number Route Target";
                            leaf two-byte-as-number {
                              type uint32 {
                                range "1..65535";
                              }
                              description
                                "Two Byte AS Number";
                            }
    
                            leaf assigned-number {
                              type uint32 {
                                range
                                  "0..4294967295";
                              }
                              description
                                "AS:nn (hex or decimal format)";
                            }
                          }  // list two-byte-as-rt
                        }  // container two-byte-as-rts
    
                        container four-byte-as-rts {
                          description
                            "Four Byte AS number Route Target";
                          list four-byte-as-rt {
                            key "four-byte-as-number assigned-number";
                            description
                              "Four Byte AS number Route Target";
                            leaf four-byte-as-number {
                              type uint32 {
                                range
                                  "65536..4294967295";
                              }
                              description
                                "Four Byte AS number";
                            }
    
                            leaf assigned-number {
                              type uint32 {
                                range "0..65535";
                              }
                              description
                                "AS:nn (hex or decimal format)";
                            }
                          }  // list four-byte-as-rt
                        }  // container four-byte-as-rts
    
                        container ipv4-address-rts {
                          description
                            "IP address Route Target";
                          list ipv4-address-rt {
                            key "ipv4-address assigned-number";
                            description
                              "IP address";
                            leaf ipv4-address {
                              type inet:ipv4-address-no-zone;
                              description
                                "IP address";
                            }
    
                            leaf assigned-number {
                              type uint32 {
                                range "0..65535";
                              }
                              description
                                "IP-address:nn (hex or decimal format)";
                            }
                          }  // list ipv4-address-rt
                        }  // container ipv4-address-rts
    
                        container none {
                          presence
                            "Indicates a none node is configured.";
                          description
                            "Withhold BGP RTs";
                        }  // container none
                      }  // container export
                    }  // container route-target
    
                    leaf table-policy {
                      type xr:Route-policy-name;
                      description
                        "Configure policy for installation of forwarding data to L2FIB";
                    }
    
                    container implicit-import-disable {
                      presence
                        "Indicates a implicit-import-disable node is configured.";
                      description
                        "Disable BGP implicit import";
                    }  // container implicit-import-disable
    
                    container route-policy {
                      description
                        "Apply route policy";
                      leaf export {
                        type xr:Route-policy-name;
                        description
                          "Export route policy";
                      }
    
                      leaf import {
                        type xr:Route-policy-name;
                        description
                          "Import route policy";
                      }
                    }  // container route-policy
                  }  // container bgp
    
                  leaf description {
                    type string {
                      length "1..64";
                    }
                    description
                      "Description for this EVPN Instance";
                  }
    
                  container load-balancing {
                    presence
                      "Indicates a load-balancing node is configured.";
                    description
                      "Configure EVPN Instance load-balancing";
                    container flow-label {
                      description
                        "Flow Label load balancing";
                      container static {
                        presence
                          "Indicates a static node is configured.";
                        description
                          "Static configuration of Flow Label";
                      }  // container static
                    }  // container flow-label
                  }  // container load-balancing
    
                  container ecmp-disable-deprecated {
                    presence
                      "Indicates a ecmp-disable-deprecated node is configured.";
                    description
                      "Deprecated: migrate to <evpn evi N preferrred-nexthop modulo>";
                  }  // container ecmp-disable-deprecated
    
                  container preferred-nexthop {
                    description
                      "Elect unique active path from ECMP candidate list";
                    container lowest-ip {
                      must
                        "not(../highest-ip or ../modulo)";
                      presence
                        "Indicates a lowest-ip node is configured.";
                      description
                        "Lowest nexthop IP is active";
                    }  // container lowest-ip
    
                    container highest-ip {
                      must
                        "not(../lowest-ip or ../modulo)";
                      presence
                        "Indicates a highest-ip node is configured.";
                      description
                        "Highest nexthop IP is active";
                    }  // container highest-ip
    
                    container modulo {
                      must
                        "not(../lowest-ip or ../highest-ip)";
                      presence
                        "Indicates a modulo node is configured.";
                      description
                        "EVI modulo of nexthops cardinality is active";
                    }  // container modulo
                  }  // container preferred-nexthop
    
                  container advertise-mac {
                    presence
                      "Indicates a advertise-mac node is configured.";
                    description
                      "Configure EVPN Instance MAC advertisement";
                    container bvi-mac {
                      presence
                        "Indicates a bvi-mac node is configured.";
                      description
                        "Advertise local MAC and BVI MAC routes";
                    }  // container bvi-mac
                  }  // container advertise-mac
    
                  container unknown-unicast-suppression {
                    presence
                      "Indicates a unknown-unicast-suppression node is configured.";
                    description
                      "Enabling unknown unicast suppression";
                  }  // container unknown-unicast-suppression
    
                  container control-word-disable {
                    presence
                      "Indicates a control-word-disable node is configured.";
                    description
                      "Disabling control-word";
                  }  // container control-word-disable
    
                  container ignore-mtu-mismatch {
                    presence
                      "Indicates a ignore-mtu-mismatch node is configured.";
                    description
                      "Ignore mismatch of local and remote MTUs";
                    container disable {
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Disables ingoring mismatch of local and remote MTUs";
                    }  // container disable
                  }  // container ignore-mtu-mismatch
    
                  container transmit-mtu-zero {
                    presence
                      "Indicates a transmit-mtu-zero node is configured.";
                    description
                      "Transmit MTU zero to remote instead of actual local MTU";
                    container disable {
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Disables transmitting MTU zero to remote instead of actual local MTU";
                    }  // container disable
                  }  // container transmit-mtu-zero
    
                  container re-origination-disable {
                    presence
                      "Indicates a re-origination-disable node is configured.";
                    description
                      "Disable route re-origination";
                  }  // container re-origination-disable
    
                  container vrf {
                    description
                      "Enable EVPN instance for layer-3 route synchronization.";
                    container default {
                      presence
                        "Indicates a default node is configured.";
                      description
                        "EVPN Instance for the default VRF";
                    }  // container default
                  }  // container vrf
    
                  container multicast {
                    presence
                      "Indicates a multicast node is configured.";
                    description
                      "Configure EVPN Instance Multicast";
                    container source-connected {
                      presence
                        "Indicates a source-connected node is configured.";
                      description
                        "Multicast traffic source connected";
                    }  // container source-connected
                  }  // container multicast
    
                  container proxy {
                    presence
                      "Indicates a proxy node is configured.";
                    description
                      "Configure EVPN Instance Proxy";
                    container igmp-snooping {
                      presence
                        "Indicates a igmp-snooping node is configured.";
                      description
                        "Proxy mode for IGMP-Snooping (selective multicast)";
                    }  // container igmp-snooping
                  }  // container proxy
    
                  container etree {
                    presence
                      "Indicates a etree node is configured.";
                    description
                      "Configure EVPN Instance E-Tree";
                    container leaf {
                      presence
                        "Indicates a leaf node is configured.";
                      description
                        "Designate EVPN Instance as EVPN E-Tree Leaf Site";
                    }  // container leaf
    
                    container rt-leaf {
                      presence
                        "Indicates a rt-leaf node is configured.";
                      description
                        "Designate EVPN Instance as EVPN E-Tree Route-Target Leaf Site";
                    }  // container rt-leaf
                  }  // container etree
    
                  leaf locator {
                    type xr:Cisco-ios-xr-string {
                      length "1..58";
                      pattern
                        '[a-z0-9A-Z][a-z0-9A-Z_.:]*';
                    }
                    description
                      "EVI locator to use for EVPN SID allocation";
                  }
    
                  container vpws-single-active-backup-suppression {
                    presence
                      "Indicates a vpws-single-active-backup-suppression node is configured.";
                    description
                      "Disables Non-DF EVI/EAD routes from being advertised in EVPN-VPWS Single-Active. Used for backwards-compatibility.";
                  }  // container vpws-single-active-backup-suppression
    
                  container bvi-coupled-mode {
                    presence
                      "Indicates a bvi-coupled-mode node is configured.";
                    description
                      "Couples BVI state to the core EVPN Instance state";
                  }  // container bvi-coupled-mode
                }  // list evi
              }  // container srv6
            }  // container segment-routing
    
            container segment-routing-srv6-stitching {
              if-feature l2vpn_platform_srv6_supported;
              description
                "Configure Segment Routing EVPN Instance with SRv6 stitching";
              list evi {
                key "vpn-id";
                description
                  "Configure EVPN Instance VPN ID";
                leaf vpn-id {
                  type uint32 {
                    range "1..65534";
                  }
                  description
                    "Configure EVPN Instance VPN ID";
                }
    
                container bgp {
                  presence
                    "Indicates a bgp node is configured.";
                  description "Configure BGP";
                  container rd {
                    description
                      "Set the Route Distinguisher";
                    leaf two-byte-as-number {
                      type uint32 {
                        range "1..65535";
                      }
                      must
                        "not(../four-byte-as-number or ../ipv4-address)";
                      description
                        "Two Byte AS Number";
                    }
    
                    leaf two-byte-as-assigned-number {
                      type uint32 {
                        range "0..4294967295";
                      }
                      must
                        "../two-byte-as-number";
                      description
                        "AS:nn (hex or decimal format)";
                    }
    
                    leaf four-byte-as-number {
                      type uint32 {
                        range
                          "65536..4294967295";
                      }
                      must
                        "not(../two-byte-as-number or ../ipv4-address)";
                      description
                        "Four Byte AS number";
                    }
    
                    leaf four-byte-as-assigned-number {
                      type uint32 {
                        range "0..65535";
                      }
                      must
                        "../four-byte-as-number";
                      description
                        "AS:nn (hex or decimal format)";
                    }
    
                    leaf ipv4-address {
                      type inet:ipv4-address-no-zone;
                      must
                        "not(../two-byte-as-number or ../four-byte-as-number)";
                      description "IP address";
                    }
    
                    leaf ipv4-address-assigned-number {
                      type uint32 {
                        range "0..65535";
                      }
                      must "../ipv4-address";
                      description
                        "IP-address:nn (hex or decimal format)";
                    }
                  }  // container rd
    
                  container route-target {
                    description
                      "Set the Route Target";
                    container two-byte-as-rts {
                      description
                        "Two Byte AS Number Route Target";
                      list two-byte-as-rt {
                        key "two-byte-as-number assigned-number";
                        description
                          "Two Byte AS Number Route Target";
                        leaf two-byte-as-number {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Two Byte AS Number";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "AS:nn (hex or decimal format)";
                        }
                      }  // list two-byte-as-rt
                    }  // container two-byte-as-rts
    
                    container four-byte-as-rts {
                      description
                        "Four Byte AS number Route Target";
                      list four-byte-as-rt {
                        key "four-byte-as-number assigned-number";
                        description
                          "Four Byte AS number Route Target";
                        leaf four-byte-as-number {
                          type uint32 {
                            range
                              "65536..4294967295";
                          }
                          description
                            "Four Byte AS number";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range "0..65535";
                          }
                          description
                            "AS:nn (hex or decimal format)";
                        }
                      }  // list four-byte-as-rt
                    }  // container four-byte-as-rts
    
                    container ipv4-address-rts {
                      description
                        "IP address Route Target";
                      list ipv4-address-rt {
                        key "ipv4-address assigned-number";
                        description "IP address";
                        leaf ipv4-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "IP address";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range "0..65535";
                          }
                          description
                            "IP-address:nn (hex or decimal format)";
                        }
                      }  // list ipv4-address-rt
                    }  // container ipv4-address-rts
    
                    container none {
                      presence
                        "Indicates a none node is configured.";
                      description
                        "Withhold BGP RTs";
                    }  // container none
    
                    container import {
                      description
                        "Import Route Target";
                      container two-byte-as-rts {
                        description
                          "Two Byte AS Number Route Target";
                        list two-byte-as-rt {
                          key "two-byte-as-number assigned-number";
                          description
                            "Two Byte AS Number Route Target";
                          leaf two-byte-as-number {
                            type uint32 {
                              range "1..65535";
                            }
                            description
                              "Two Byte AS Number";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "AS:nn (hex or decimal format)";
                          }
                        }  // list two-byte-as-rt
                      }  // container two-byte-as-rts
    
                      container four-byte-as-rts {
                        description
                          "Four Byte AS number Route Target";
                        list four-byte-as-rt {
                          key "four-byte-as-number assigned-number";
                          description
                            "Four Byte AS number Route Target";
                          leaf four-byte-as-number {
                            type uint32 {
                              range
                                "65536..4294967295";
                            }
                            description
                              "Four Byte AS number";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "AS:nn (hex or decimal format)";
                          }
                        }  // list four-byte-as-rt
                      }  // container four-byte-as-rts
    
                      container ipv4-address-rts {
                        description
                          "IP address Route Target";
                        list ipv4-address-rt {
                          key "ipv4-address assigned-number";
                          description
                            "IP address";
                          leaf ipv4-address {
                            type inet:ipv4-address-no-zone;
                            description
                              "IP address";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "IP-address:nn (hex or decimal format)";
                          }
                        }  // list ipv4-address-rt
                      }  // container ipv4-address-rts
    
                      container none {
                        presence
                          "Indicates a none node is configured.";
                        description
                          "Withhold BGP RTs";
                      }  // container none
                    }  // container import
    
                    container export {
                      description
                        "Export Route Target";
                      container two-byte-as-rts {
                        description
                          "Two Byte AS Number Route Target";
                        list two-byte-as-rt {
                          key "two-byte-as-number assigned-number";
                          description
                            "Two Byte AS Number Route Target";
                          leaf two-byte-as-number {
                            type uint32 {
                              range "1..65535";
                            }
                            description
                              "Two Byte AS Number";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "AS:nn (hex or decimal format)";
                          }
                        }  // list two-byte-as-rt
                      }  // container two-byte-as-rts
    
                      container four-byte-as-rts {
                        description
                          "Four Byte AS number Route Target";
                        list four-byte-as-rt {
                          key "four-byte-as-number assigned-number";
                          description
                            "Four Byte AS number Route Target";
                          leaf four-byte-as-number {
                            type uint32 {
                              range
                                "65536..4294967295";
                            }
                            description
                              "Four Byte AS number";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "AS:nn (hex or decimal format)";
                          }
                        }  // list four-byte-as-rt
                      }  // container four-byte-as-rts
    
                      container ipv4-address-rts {
                        description
                          "IP address Route Target";
                        list ipv4-address-rt {
                          key "ipv4-address assigned-number";
                          description
                            "IP address";
                          leaf ipv4-address {
                            type inet:ipv4-address-no-zone;
                            description
                              "IP address";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "IP-address:nn (hex or decimal format)";
                          }
                        }  // list ipv4-address-rt
                      }  // container ipv4-address-rts
    
                      container none {
                        presence
                          "Indicates a none node is configured.";
                        description
                          "Withhold BGP RTs";
                      }  // container none
                    }  // container export
                  }  // container route-target
    
                  leaf table-policy {
                    type xr:Route-policy-name;
                    description
                      "Configure policy for installation of forwarding data to L2FIB";
                  }
    
                  container implicit-import-disable {
                    presence
                      "Indicates a implicit-import-disable node is configured.";
                    description
                      "Disable BGP implicit import";
                  }  // container implicit-import-disable
    
                  container route-policy {
                    description
                      "Apply route policy";
                    leaf export {
                      type xr:Route-policy-name;
                      description
                        "Export route policy";
                    }
    
                    leaf import {
                      type xr:Route-policy-name;
                      description
                        "Import route policy";
                    }
                  }  // container route-policy
                }  // container bgp
    
                leaf description {
                  type string {
                    length "1..1024";
                  }
                  description
                    "Description for this EVPN Instance";
                }
    
                container preferred-nexthop {
                  description
                    "Elect unique active path from ECMP candidate list";
                  container lowest-ip {
                    must
                      "not(../highest-ip or ../modulo)";
                    presence
                      "Indicates a lowest-ip node is configured.";
                    description
                      "Lowest nexthop IP is active";
                  }  // container lowest-ip
    
                  container highest-ip {
                    must
                      "not(../lowest-ip or ../modulo)";
                    presence
                      "Indicates a highest-ip node is configured.";
                    description
                      "Highest nexthop IP is active";
                  }  // container highest-ip
    
                  container modulo {
                    must
                      "not(../lowest-ip or ../highest-ip)";
                    presence
                      "Indicates a modulo node is configured.";
                    description
                      "EVI modulo of nexthops cardinality is active";
                  }  // container modulo
                }  // container preferred-nexthop
    
                container advertise-mac {
                  presence
                    "Indicates a advertise-mac node is configured.";
                  description
                    "Configure locally-learned MAC advertisement";
                  container bvi-mac {
                    presence
                      "Indicates a bvi-mac node is configured.";
                    description
                      "Advertise local MAC and BVI MAC routes";
                  }  // container bvi-mac
                }  // container advertise-mac
    
                container unknown-unicast-suppression {
                  presence
                    "Indicates a unknown-unicast-suppression node is configured.";
                  description
                    "Enabling unknown unicast suppression";
                }  // container unknown-unicast-suppression
    
                container ignore-mtu-mismatch {
                  presence
                    "Indicates a ignore-mtu-mismatch node is configured.";
                  description
                    "Ignore mismatch of local and remote MTUs";
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disables ingoring mismatch of local and remote MTUs";
                  }  // container disable
                }  // container ignore-mtu-mismatch
    
                container transmit-mtu-zero {
                  presence
                    "Indicates a transmit-mtu-zero node is configured.";
                  description
                    "Transmit MTU zero to remote instead of actual local MTU";
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disables transmitting MTU zero to remote instead of actual local MTU";
                  }  // container disable
                }  // container transmit-mtu-zero
    
                container re-origination-disable {
                  presence
                    "Indicates a re-origination-disable node is configured.";
                  description
                    "Disable route re-origination";
                }  // container re-origination-disable
    
                leaf locator {
                  type xr:Cisco-ios-xr-string {
                    length "1..58";
                    pattern
                      '[a-z0-9A-Z][a-z0-9A-Z_.:]*';
                  }
                  description
                    "EVI locator to use for EVPN SID allocation";
                }
              }  // list evi
            }  // container segment-routing-srv6-stitching
    
            container stitching {
              description
                "Treat EVPN Instance as Stitching side";
              list evi {
                key "vpn-id";
                description
                  "Configure EVPN Instance VPN ID";
                leaf vpn-id {
                  type uint32 {
                    range "1..65534";
                  }
                  description
                    "Configure EVPN Instance VPN ID";
                }
    
                container bgp {
                  presence
                    "Indicates a bgp node is configured.";
                  description "Configure BGP";
                  container rd {
                    description
                      "Set the Route Distinguisher";
                    leaf two-byte-as-number {
                      type uint32 {
                        range "1..65535";
                      }
                      must
                        "not(../four-byte-as-number or ../ipv4-address)";
                      description
                        "Two Byte AS Number";
                    }
    
                    leaf two-byte-as-assigned-number {
                      type uint32 {
                        range "0..4294967295";
                      }
                      must
                        "../two-byte-as-number";
                      description
                        "AS:nn (hex or decimal format)";
                    }
    
                    leaf four-byte-as-number {
                      type uint32 {
                        range
                          "65536..4294967295";
                      }
                      must
                        "not(../two-byte-as-number or ../ipv4-address)";
                      description
                        "Four Byte AS number";
                    }
    
                    leaf four-byte-as-assigned-number {
                      type uint32 {
                        range "0..65535";
                      }
                      must
                        "../four-byte-as-number";
                      description
                        "AS:nn (hex or decimal format)";
                    }
    
                    leaf ipv4-address {
                      type inet:ipv4-address-no-zone;
                      must
                        "not(../two-byte-as-number or ../four-byte-as-number)";
                      description "IP address";
                    }
    
                    leaf ipv4-address-assigned-number {
                      type uint32 {
                        range "0..65535";
                      }
                      must "../ipv4-address";
                      description
                        "IP-address:nn (hex or decimal format)";
                    }
                  }  // container rd
    
                  container route-target {
                    description
                      "Set the Route Target";
                    container two-byte-as-rts {
                      description
                        "Two Byte AS Number Route Target";
                      list two-byte-as-rt {
                        key "two-byte-as-number assigned-number";
                        description
                          "Two Byte AS Number Route Target";
                        leaf two-byte-as-number {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Two Byte AS Number";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "AS:nn (hex or decimal format)";
                        }
                      }  // list two-byte-as-rt
                    }  // container two-byte-as-rts
    
                    container four-byte-as-rts {
                      description
                        "Four Byte AS number Route Target";
                      list four-byte-as-rt {
                        key "four-byte-as-number assigned-number";
                        description
                          "Four Byte AS number Route Target";
                        leaf four-byte-as-number {
                          type uint32 {
                            range
                              "65536..4294967295";
                          }
                          description
                            "Four Byte AS number";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range "0..65535";
                          }
                          description
                            "AS:nn (hex or decimal format)";
                        }
                      }  // list four-byte-as-rt
                    }  // container four-byte-as-rts
    
                    container ipv4-address-rts {
                      description
                        "IP address Route Target";
                      list ipv4-address-rt {
                        key "ipv4-address assigned-number";
                        description "IP address";
                        leaf ipv4-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "IP address";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range "0..65535";
                          }
                          description
                            "IP-address:nn (hex or decimal format)";
                        }
                      }  // list ipv4-address-rt
                    }  // container ipv4-address-rts
    
                    container none {
                      presence
                        "Indicates a none node is configured.";
                      description
                        "Withhold BGP RTs";
                    }  // container none
    
                    container import {
                      description
                        "Import Route Target";
                      container two-byte-as-rts {
                        description
                          "Two Byte AS Number Route Target";
                        list two-byte-as-rt {
                          key "two-byte-as-number assigned-number";
                          description
                            "Two Byte AS Number Route Target";
                          leaf two-byte-as-number {
                            type uint32 {
                              range "1..65535";
                            }
                            description
                              "Two Byte AS Number";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "AS:nn (hex or decimal format)";
                          }
                        }  // list two-byte-as-rt
                      }  // container two-byte-as-rts
    
                      container four-byte-as-rts {
                        description
                          "Four Byte AS number Route Target";
                        list four-byte-as-rt {
                          key "four-byte-as-number assigned-number";
                          description
                            "Four Byte AS number Route Target";
                          leaf four-byte-as-number {
                            type uint32 {
                              range
                                "65536..4294967295";
                            }
                            description
                              "Four Byte AS number";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "AS:nn (hex or decimal format)";
                          }
                        }  // list four-byte-as-rt
                      }  // container four-byte-as-rts
    
                      container ipv4-address-rts {
                        description
                          "IP address Route Target";
                        list ipv4-address-rt {
                          key "ipv4-address assigned-number";
                          description
                            "IP address";
                          leaf ipv4-address {
                            type inet:ipv4-address-no-zone;
                            description
                              "IP address";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "IP-address:nn (hex or decimal format)";
                          }
                        }  // list ipv4-address-rt
                      }  // container ipv4-address-rts
    
                      container none {
                        presence
                          "Indicates a none node is configured.";
                        description
                          "Withhold BGP RTs";
                      }  // container none
                    }  // container import
    
                    container export {
                      description
                        "Export Route Target";
                      container two-byte-as-rts {
                        description
                          "Two Byte AS Number Route Target";
                        list two-byte-as-rt {
                          key "two-byte-as-number assigned-number";
                          description
                            "Two Byte AS Number Route Target";
                          leaf two-byte-as-number {
                            type uint32 {
                              range "1..65535";
                            }
                            description
                              "Two Byte AS Number";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "AS:nn (hex or decimal format)";
                          }
                        }  // list two-byte-as-rt
                      }  // container two-byte-as-rts
    
                      container four-byte-as-rts {
                        description
                          "Four Byte AS number Route Target";
                        list four-byte-as-rt {
                          key "four-byte-as-number assigned-number";
                          description
                            "Four Byte AS number Route Target";
                          leaf four-byte-as-number {
                            type uint32 {
                              range
                                "65536..4294967295";
                            }
                            description
                              "Four Byte AS number";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "AS:nn (hex or decimal format)";
                          }
                        }  // list four-byte-as-rt
                      }  // container four-byte-as-rts
    
                      container ipv4-address-rts {
                        description
                          "IP address Route Target";
                        list ipv4-address-rt {
                          key "ipv4-address assigned-number";
                          description
                            "IP address";
                          leaf ipv4-address {
                            type inet:ipv4-address-no-zone;
                            description
                              "IP address";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "IP-address:nn (hex or decimal format)";
                          }
                        }  // list ipv4-address-rt
                      }  // container ipv4-address-rts
    
                      container none {
                        presence
                          "Indicates a none node is configured.";
                        description
                          "Withhold BGP RTs";
                      }  // container none
                    }  // container export
                  }  // container route-target
    
                  leaf table-policy {
                    type xr:Route-policy-name;
                    description
                      "Configure policy for installation of forwarding data to L2FIB";
                  }
    
                  container implicit-import-disable {
                    presence
                      "Indicates a implicit-import-disable node is configured.";
                    description
                      "Disable BGP implicit import";
                  }  // container implicit-import-disable
    
                  container route-policy {
                    description
                      "Apply route policy";
                    leaf export {
                      type xr:Route-policy-name;
                      description
                        "Export route policy";
                    }
    
                    leaf import {
                      type xr:Route-policy-name;
                      description
                        "Import route policy";
                    }
                  }  // container route-policy
                }  // container bgp
    
                leaf description {
                  type string {
                    length "1..64";
                  }
                  description
                    "Description for this EVPN Instance";
                }
    
                container load-balancing {
                  presence
                    "Indicates a load-balancing node is configured.";
                  description
                    "Configure EVPN Instance load-balancing";
                  container flow-label {
                    description
                      "Flow Label load balancing";
                    container static {
                      presence
                        "Indicates a static node is configured.";
                      description
                        "Static configuration of Flow Label";
                    }  // container static
                  }  // container flow-label
                }  // container load-balancing
    
                container ecmp-disable-deprecated {
                  presence
                    "Indicates a ecmp-disable-deprecated node is configured.";
                  description
                    "Deprecated: migrate to <evpn evi N preferrred-nexthop modulo>";
                }  // container ecmp-disable-deprecated
    
                container preferred-nexthop {
                  description
                    "Elect unique active path from ECMP candidate list";
                  container lowest-ip {
                    must
                      "not(../highest-ip or ../modulo)";
                    presence
                      "Indicates a lowest-ip node is configured.";
                    description
                      "Lowest nexthop IP is active";
                  }  // container lowest-ip
    
                  container highest-ip {
                    must
                      "not(../lowest-ip or ../modulo)";
                    presence
                      "Indicates a highest-ip node is configured.";
                    description
                      "Highest nexthop IP is active";
                  }  // container highest-ip
    
                  container modulo {
                    must
                      "not(../lowest-ip or ../highest-ip)";
                    presence
                      "Indicates a modulo node is configured.";
                    description
                      "EVI modulo of nexthops cardinality is active";
                  }  // container modulo
                }  // container preferred-nexthop
    
                container advertise-mac {
                  presence
                    "Indicates a advertise-mac node is configured.";
                  description
                    "Configure EVPN Instance MAC advertisement";
                  container bvi-mac {
                    presence
                      "Indicates a bvi-mac node is configured.";
                    description
                      "Advertise local MAC and BVI MAC routes";
                  }  // container bvi-mac
                }  // container advertise-mac
    
                container unknown-unicast-suppression {
                  presence
                    "Indicates a unknown-unicast-suppression node is configured.";
                  description
                    "Enabling unknown unicast suppression";
                }  // container unknown-unicast-suppression
    
                container control-word-disable {
                  presence
                    "Indicates a control-word-disable node is configured.";
                  description
                    "Disabling control-word";
                }  // container control-word-disable
    
                container ignore-mtu-mismatch {
                  presence
                    "Indicates a ignore-mtu-mismatch node is configured.";
                  description
                    "Ignore mismatch of local and remote MTUs";
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disables ingoring mismatch of local and remote MTUs";
                  }  // container disable
                }  // container ignore-mtu-mismatch
    
                container transmit-mtu-zero {
                  presence
                    "Indicates a transmit-mtu-zero node is configured.";
                  description
                    "Transmit MTU zero to remote instead of actual local MTU";
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disables transmitting MTU zero to remote instead of actual local MTU";
                  }  // container disable
                }  // container transmit-mtu-zero
    
                container re-origination-disable {
                  presence
                    "Indicates a re-origination-disable node is configured.";
                  description
                    "Disable route re-origination";
                }  // container re-origination-disable
    
                container vrf {
                  description
                    "Enable EVPN instance for layer-3 route synchronization.";
                  container default {
                    presence
                      "Indicates a default node is configured.";
                    description
                      "EVPN Instance for the default VRF";
                  }  // container default
                }  // container vrf
    
                container multicast {
                  presence
                    "Indicates a multicast node is configured.";
                  description
                    "Configure EVPN Instance Multicast";
                  container source-connected {
                    presence
                      "Indicates a source-connected node is configured.";
                    description
                      "Multicast traffic source connected";
                  }  // container source-connected
                }  // container multicast
    
                container proxy {
                  presence
                    "Indicates a proxy node is configured.";
                  description
                    "Configure EVPN Instance Proxy";
                  container igmp-snooping {
                    presence
                      "Indicates a igmp-snooping node is configured.";
                    description
                      "Proxy mode for IGMP-Snooping (selective multicast)";
                  }  // container igmp-snooping
                }  // container proxy
    
                container etree {
                  presence
                    "Indicates a etree node is configured.";
                  description
                    "Configure EVPN Instance E-Tree";
                  container leaf {
                    presence
                      "Indicates a leaf node is configured.";
                    description
                      "Designate EVPN Instance as EVPN E-Tree Leaf Site";
                  }  // container leaf
    
                  container rt-leaf {
                    presence
                      "Indicates a rt-leaf node is configured.";
                    description
                      "Designate EVPN Instance as EVPN E-Tree Route-Target Leaf Site";
                  }  // container rt-leaf
                }  // container etree
    
                leaf locator {
                  type xr:Cisco-ios-xr-string {
                    length "1..58";
                    pattern
                      '[a-z0-9A-Z][a-z0-9A-Z_.:]*';
                  }
                  description
                    "EVI locator to use for EVPN SID allocation";
                }
    
                container vpws-single-active-backup-suppression {
                  presence
                    "Indicates a vpws-single-active-backup-suppression node is configured.";
                  description
                    "Disables Non-DF EVI/EAD routes from being advertised in EVPN-VPWS Single-Active. Used for backwards-compatibility.";
                }  // container vpws-single-active-backup-suppression
    
                container bvi-coupled-mode {
                  presence
                    "Indicates a bvi-coupled-mode node is configured.";
                  description
                    "Couples BVI state to the core EVPN Instance state";
                }  // container bvi-coupled-mode
              }  // list evi
            }  // container stitching
    
            list evi {
              key "vpn-id";
              description
                "Configure EVPN Instance VPN ID";
              leaf vpn-id {
                type uint32 {
                  range "1..65534";
                }
                description
                  "Configure EVPN Instance VPN ID";
              }
    
              container bgp {
                presence
                  "Indicates a bgp node is configured.";
                description "Configure BGP";
                container rd {
                  description
                    "Set the Route Distinguisher";
                  leaf two-byte-as-number {
                    type uint32 {
                      range "1..65535";
                    }
                    must
                      "not(../four-byte-as-number or ../ipv4-address)";
                    description
                      "Two Byte AS Number";
                  }
    
                  leaf two-byte-as-assigned-number {
                    type uint32 {
                      range "0..4294967295";
                    }
                    must "../two-byte-as-number";
                    description
                      "AS:nn (hex or decimal format)";
                  }
    
                  leaf four-byte-as-number {
                    type uint32 {
                      range "65536..4294967295";
                    }
                    must
                      "not(../two-byte-as-number or ../ipv4-address)";
                    description
                      "Four Byte AS number";
                  }
    
                  leaf four-byte-as-assigned-number {
                    type uint32 {
                      range "0..65535";
                    }
                    must
                      "../four-byte-as-number";
                    description
                      "AS:nn (hex or decimal format)";
                  }
    
                  leaf ipv4-address {
                    type inet:ipv4-address-no-zone;
                    must
                      "not(../two-byte-as-number or ../four-byte-as-number)";
                    description "IP address";
                  }
    
                  leaf ipv4-address-assigned-number {
                    type uint32 {
                      range "0..65535";
                    }
                    must "../ipv4-address";
                    description
                      "IP-address:nn (hex or decimal format)";
                  }
                }  // container rd
    
                container route-target {
                  description
                    "Set the Route Target";
                  container two-byte-as-rts {
                    description
                      "Two Byte AS Number Route Target";
                    list two-byte-as-rt {
                      key "two-byte-as-number assigned-number";
                      description
                        "Two Byte AS Number Route Target";
                      leaf two-byte-as-number {
                        type uint32 {
                          range "1..65535";
                        }
                        description
                          "Two Byte AS Number";
                      }
    
                      leaf assigned-number {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "AS:nn (hex or decimal format)";
                      }
                    }  // list two-byte-as-rt
                  }  // container two-byte-as-rts
    
                  container four-byte-as-rts {
                    description
                      "Four Byte AS number Route Target";
                    list four-byte-as-rt {
                      key "four-byte-as-number assigned-number";
                      description
                        "Four Byte AS number Route Target";
                      leaf four-byte-as-number {
                        type uint32 {
                          range
                            "65536..4294967295";
                        }
                        description
                          "Four Byte AS number";
                      }
    
                      leaf assigned-number {
                        type uint32 {
                          range "0..65535";
                        }
                        description
                          "AS:nn (hex or decimal format)";
                      }
                    }  // list four-byte-as-rt
                  }  // container four-byte-as-rts
    
                  container ipv4-address-rts {
                    description
                      "IP address Route Target";
                    list ipv4-address-rt {
                      key "ipv4-address assigned-number";
                      description "IP address";
                      leaf ipv4-address {
                        type inet:ipv4-address-no-zone;
                        description "IP address";
                      }
    
                      leaf assigned-number {
                        type uint32 {
                          range "0..65535";
                        }
                        description
                          "IP-address:nn (hex or decimal format)";
                      }
                    }  // list ipv4-address-rt
                  }  // container ipv4-address-rts
    
                  container none {
                    presence
                      "Indicates a none node is configured.";
                    description
                      "Withhold BGP RTs";
                  }  // container none
    
                  container import {
                    description
                      "Import Route Target";
                    container two-byte-as-rts {
                      description
                        "Two Byte AS Number Route Target";
                      list two-byte-as-rt {
                        key "two-byte-as-number assigned-number";
                        description
                          "Two Byte AS Number Route Target";
                        leaf two-byte-as-number {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Two Byte AS Number";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "AS:nn (hex or decimal format)";
                        }
                      }  // list two-byte-as-rt
                    }  // container two-byte-as-rts
    
                    container four-byte-as-rts {
                      description
                        "Four Byte AS number Route Target";
                      list four-byte-as-rt {
                        key "four-byte-as-number assigned-number";
                        description
                          "Four Byte AS number Route Target";
                        leaf four-byte-as-number {
                          type uint32 {
                            range
                              "65536..4294967295";
                          }
                          description
                            "Four Byte AS number";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range "0..65535";
                          }
                          description
                            "AS:nn (hex or decimal format)";
                        }
                      }  // list four-byte-as-rt
                    }  // container four-byte-as-rts
    
                    container ipv4-address-rts {
                      description
                        "IP address Route Target";
                      list ipv4-address-rt {
                        key "ipv4-address assigned-number";
                        description "IP address";
                        leaf ipv4-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "IP address";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range "0..65535";
                          }
                          description
                            "IP-address:nn (hex or decimal format)";
                        }
                      }  // list ipv4-address-rt
                    }  // container ipv4-address-rts
    
                    container none {
                      presence
                        "Indicates a none node is configured.";
                      description
                        "Withhold BGP RTs";
                    }  // container none
                  }  // container import
    
                  container export {
                    description
                      "Export Route Target";
                    container two-byte-as-rts {
                      description
                        "Two Byte AS Number Route Target";
                      list two-byte-as-rt {
                        key "two-byte-as-number assigned-number";
                        description
                          "Two Byte AS Number Route Target";
                        leaf two-byte-as-number {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Two Byte AS Number";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "AS:nn (hex or decimal format)";
                        }
                      }  // list two-byte-as-rt
                    }  // container two-byte-as-rts
    
                    container four-byte-as-rts {
                      description
                        "Four Byte AS number Route Target";
                      list four-byte-as-rt {
                        key "four-byte-as-number assigned-number";
                        description
                          "Four Byte AS number Route Target";
                        leaf four-byte-as-number {
                          type uint32 {
                            range
                              "65536..4294967295";
                          }
                          description
                            "Four Byte AS number";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range "0..65535";
                          }
                          description
                            "AS:nn (hex or decimal format)";
                        }
                      }  // list four-byte-as-rt
                    }  // container four-byte-as-rts
    
                    container ipv4-address-rts {
                      description
                        "IP address Route Target";
                      list ipv4-address-rt {
                        key "ipv4-address assigned-number";
                        description "IP address";
                        leaf ipv4-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "IP address";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range "0..65535";
                          }
                          description
                            "IP-address:nn (hex or decimal format)";
                        }
                      }  // list ipv4-address-rt
                    }  // container ipv4-address-rts
    
                    container none {
                      presence
                        "Indicates a none node is configured.";
                      description
                        "Withhold BGP RTs";
                    }  // container none
                  }  // container export
                }  // container route-target
    
                leaf table-policy {
                  type xr:Route-policy-name;
                  description
                    "Configure policy for installation of forwarding data to L2FIB";
                }
    
                container implicit-import-disable {
                  presence
                    "Indicates a implicit-import-disable node is configured.";
                  description
                    "Disable BGP implicit import";
                }  // container implicit-import-disable
    
                container route-policy {
                  description
                    "Apply route policy";
                  leaf export {
                    type xr:Route-policy-name;
                    description
                      "Export route policy";
                  }
    
                  leaf import {
                    type xr:Route-policy-name;
                    description
                      "Import route policy";
                  }
                }  // container route-policy
              }  // container bgp
    
              leaf description {
                type string {
                  length "1..64";
                }
                description
                  "Description for this EVPN Instance";
              }
    
              container load-balancing {
                presence
                  "Indicates a load-balancing node is configured.";
                description
                  "Configure EVPN Instance load-balancing";
                container flow-label {
                  description
                    "Flow Label load balancing";
                  container static {
                    presence
                      "Indicates a static node is configured.";
                    description
                      "Static configuration of Flow Label";
                  }  // container static
                }  // container flow-label
              }  // container load-balancing
    
              container ecmp-disable-deprecated {
                presence
                  "Indicates a ecmp-disable-deprecated node is configured.";
                description
                  "Deprecated: migrate to <evpn evi N preferrred-nexthop modulo>";
              }  // container ecmp-disable-deprecated
    
              container preferred-nexthop {
                description
                  "Elect unique active path from ECMP candidate list";
                container lowest-ip {
                  must
                    "not(../highest-ip or ../modulo)";
                  presence
                    "Indicates a lowest-ip node is configured.";
                  description
                    "Lowest nexthop IP is active";
                }  // container lowest-ip
    
                container highest-ip {
                  must
                    "not(../lowest-ip or ../modulo)";
                  presence
                    "Indicates a highest-ip node is configured.";
                  description
                    "Highest nexthop IP is active";
                }  // container highest-ip
    
                container modulo {
                  must
                    "not(../lowest-ip or ../highest-ip)";
                  presence
                    "Indicates a modulo node is configured.";
                  description
                    "EVI modulo of nexthops cardinality is active";
                }  // container modulo
              }  // container preferred-nexthop
    
              container advertise-mac {
                presence
                  "Indicates a advertise-mac node is configured.";
                description
                  "Configure EVPN Instance MAC advertisement";
                container bvi-mac {
                  presence
                    "Indicates a bvi-mac node is configured.";
                  description
                    "Advertise local MAC and BVI MAC routes";
                }  // container bvi-mac
              }  // container advertise-mac
    
              container unknown-unicast-suppression {
                presence
                  "Indicates a unknown-unicast-suppression node is configured.";
                description
                  "Enabling unknown unicast suppression";
              }  // container unknown-unicast-suppression
    
              container control-word-disable {
                presence
                  "Indicates a control-word-disable node is configured.";
                description
                  "Disabling control-word";
              }  // container control-word-disable
    
              container ignore-mtu-mismatch {
                presence
                  "Indicates a ignore-mtu-mismatch node is configured.";
                description
                  "Ignore mismatch of local and remote MTUs";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disables ingoring mismatch of local and remote MTUs";
                }  // container disable
              }  // container ignore-mtu-mismatch
    
              container transmit-mtu-zero {
                presence
                  "Indicates a transmit-mtu-zero node is configured.";
                description
                  "Transmit MTU zero to remote instead of actual local MTU";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disables transmitting MTU zero to remote instead of actual local MTU";
                }  // container disable
              }  // container transmit-mtu-zero
    
              container re-origination-disable {
                presence
                  "Indicates a re-origination-disable node is configured.";
                description
                  "Disable route re-origination";
              }  // container re-origination-disable
    
              container vrf {
                description
                  "Enable EVPN instance for layer-3 route synchronization.";
                container default {
                  presence
                    "Indicates a default node is configured.";
                  description
                    "EVPN Instance for the default VRF";
                }  // container default
              }  // container vrf
    
              container multicast {
                presence
                  "Indicates a multicast node is configured.";
                description
                  "Configure EVPN Instance Multicast";
                container source-connected {
                  presence
                    "Indicates a source-connected node is configured.";
                  description
                    "Multicast traffic source connected";
                }  // container source-connected
              }  // container multicast
    
              container proxy {
                presence
                  "Indicates a proxy node is configured.";
                description
                  "Configure EVPN Instance Proxy";
                container igmp-snooping {
                  presence
                    "Indicates a igmp-snooping node is configured.";
                  description
                    "Proxy mode for IGMP-Snooping (selective multicast)";
                }  // container igmp-snooping
              }  // container proxy
    
              container etree {
                presence
                  "Indicates a etree node is configured.";
                description
                  "Configure EVPN Instance E-Tree";
                container leaf {
                  presence
                    "Indicates a leaf node is configured.";
                  description
                    "Designate EVPN Instance as EVPN E-Tree Leaf Site";
                }  // container leaf
    
                container rt-leaf {
                  presence
                    "Indicates a rt-leaf node is configured.";
                  description
                    "Designate EVPN Instance as EVPN E-Tree Route-Target Leaf Site";
                }  // container rt-leaf
              }  // container etree
    
              leaf locator {
                type xr:Cisco-ios-xr-string {
                  length "1..58";
                  pattern
                    '[a-z0-9A-Z][a-z0-9A-Z_.:]*';
                }
                description
                  "EVI locator to use for EVPN SID allocation";
              }
    
              container vpws-single-active-backup-suppression {
                presence
                  "Indicates a vpws-single-active-backup-suppression node is configured.";
                description
                  "Disables Non-DF EVI/EAD routes from being advertised in EVPN-VPWS Single-Active. Used for backwards-compatibility.";
              }  // container vpws-single-active-backup-suppression
    
              container bvi-coupled-mode {
                presence
                  "Indicates a bvi-coupled-mode node is configured.";
                description
                  "Couples BVI state to the core EVPN Instance state";
              }  // container bvi-coupled-mode
            }  // list evi
          }  // container evis
    
          container route-sync {
            description
              "Configure vrf route-sync EVPN Instance VPN ID";
            container stitching {
              description
                "Treat EVPN Instance as Stitching side";
              list evi {
                key "vpn-id";
                description
                  "Configure EVPN Instance VPN ID";
                leaf vpn-id {
                  type uint32 {
                    range "1..65534";
                  }
                  description
                    "Configure EVPN Instance VPN ID";
                }
    
                container bgp {
                  presence
                    "Indicates a bgp node is configured.";
                  description "Configure BGP";
                  container rd {
                    description
                      "Set the Route Distinguisher";
                    leaf two-byte-as-number {
                      type uint32 {
                        range "1..65535";
                      }
                      must
                        "not(../four-byte-as-number or ../ipv4-address)";
                      description
                        "Two Byte AS Number";
                    }
    
                    leaf two-byte-as-assigned-number {
                      type uint32 {
                        range "0..4294967295";
                      }
                      must
                        "../two-byte-as-number";
                      description
                        "AS:nn (hex or decimal format)";
                    }
    
                    leaf four-byte-as-number {
                      type uint32 {
                        range
                          "65536..4294967295";
                      }
                      must
                        "not(../two-byte-as-number or ../ipv4-address)";
                      description
                        "Four Byte AS number";
                    }
    
                    leaf four-byte-as-assigned-number {
                      type uint32 {
                        range "0..65535";
                      }
                      must
                        "../four-byte-as-number";
                      description
                        "AS:nn (hex or decimal format)";
                    }
    
                    leaf ipv4-address {
                      type inet:ipv4-address-no-zone;
                      must
                        "not(../two-byte-as-number or ../four-byte-as-number)";
                      description "IP address";
                    }
    
                    leaf ipv4-address-assigned-number {
                      type uint32 {
                        range "0..65535";
                      }
                      must "../ipv4-address";
                      description
                        "IP-address:nn (hex or decimal format)";
                    }
                  }  // container rd
    
                  container route-target {
                    description
                      "Set the Route Target";
                    container two-byte-as-rts {
                      description
                        "Two Byte AS Number Route Target";
                      list two-byte-as-rt {
                        key "two-byte-as-number assigned-number";
                        description
                          "Two Byte AS Number Route Target";
                        leaf two-byte-as-number {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Two Byte AS Number";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "AS:nn (hex or decimal format)";
                        }
                      }  // list two-byte-as-rt
                    }  // container two-byte-as-rts
    
                    container four-byte-as-rts {
                      description
                        "Four Byte AS number Route Target";
                      list four-byte-as-rt {
                        key "four-byte-as-number assigned-number";
                        description
                          "Four Byte AS number Route Target";
                        leaf four-byte-as-number {
                          type uint32 {
                            range
                              "65536..4294967295";
                          }
                          description
                            "Four Byte AS number";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range "0..65535";
                          }
                          description
                            "AS:nn (hex or decimal format)";
                        }
                      }  // list four-byte-as-rt
                    }  // container four-byte-as-rts
    
                    container ipv4-address-rts {
                      description
                        "IP address Route Target";
                      list ipv4-address-rt {
                        key "ipv4-address assigned-number";
                        description "IP address";
                        leaf ipv4-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "IP address";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range "0..65535";
                          }
                          description
                            "IP-address:nn (hex or decimal format)";
                        }
                      }  // list ipv4-address-rt
                    }  // container ipv4-address-rts
    
                    container none {
                      presence
                        "Indicates a none node is configured.";
                      description
                        "Withhold BGP RTs";
                    }  // container none
    
                    container import {
                      description
                        "Import Route Target";
                      container two-byte-as-rts {
                        description
                          "Two Byte AS Number Route Target";
                        list two-byte-as-rt {
                          key "two-byte-as-number assigned-number";
                          description
                            "Two Byte AS Number Route Target";
                          leaf two-byte-as-number {
                            type uint32 {
                              range "1..65535";
                            }
                            description
                              "Two Byte AS Number";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "AS:nn (hex or decimal format)";
                          }
                        }  // list two-byte-as-rt
                      }  // container two-byte-as-rts
    
                      container four-byte-as-rts {
                        description
                          "Four Byte AS number Route Target";
                        list four-byte-as-rt {
                          key "four-byte-as-number assigned-number";
                          description
                            "Four Byte AS number Route Target";
                          leaf four-byte-as-number {
                            type uint32 {
                              range
                                "65536..4294967295";
                            }
                            description
                              "Four Byte AS number";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "AS:nn (hex or decimal format)";
                          }
                        }  // list four-byte-as-rt
                      }  // container four-byte-as-rts
    
                      container ipv4-address-rts {
                        description
                          "IP address Route Target";
                        list ipv4-address-rt {
                          key "ipv4-address assigned-number";
                          description
                            "IP address";
                          leaf ipv4-address {
                            type inet:ipv4-address-no-zone;
                            description
                              "IP address";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "IP-address:nn (hex or decimal format)";
                          }
                        }  // list ipv4-address-rt
                      }  // container ipv4-address-rts
    
                      container none {
                        presence
                          "Indicates a none node is configured.";
                        description
                          "Withhold BGP RTs";
                      }  // container none
                    }  // container import
    
                    container export {
                      description
                        "Export Route Target";
                      container two-byte-as-rts {
                        description
                          "Two Byte AS Number Route Target";
                        list two-byte-as-rt {
                          key "two-byte-as-number assigned-number";
                          description
                            "Two Byte AS Number Route Target";
                          leaf two-byte-as-number {
                            type uint32 {
                              range "1..65535";
                            }
                            description
                              "Two Byte AS Number";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "AS:nn (hex or decimal format)";
                          }
                        }  // list two-byte-as-rt
                      }  // container two-byte-as-rts
    
                      container four-byte-as-rts {
                        description
                          "Four Byte AS number Route Target";
                        list four-byte-as-rt {
                          key "four-byte-as-number assigned-number";
                          description
                            "Four Byte AS number Route Target";
                          leaf four-byte-as-number {
                            type uint32 {
                              range
                                "65536..4294967295";
                            }
                            description
                              "Four Byte AS number";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "AS:nn (hex or decimal format)";
                          }
                        }  // list four-byte-as-rt
                      }  // container four-byte-as-rts
    
                      container ipv4-address-rts {
                        description
                          "IP address Route Target";
                        list ipv4-address-rt {
                          key "ipv4-address assigned-number";
                          description
                            "IP address";
                          leaf ipv4-address {
                            type inet:ipv4-address-no-zone;
                            description
                              "IP address";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "IP-address:nn (hex or decimal format)";
                          }
                        }  // list ipv4-address-rt
                      }  // container ipv4-address-rts
    
                      container none {
                        presence
                          "Indicates a none node is configured.";
                        description
                          "Withhold BGP RTs";
                      }  // container none
                    }  // container export
                  }  // container route-target
    
                  leaf table-policy {
                    type xr:Route-policy-name;
                    description
                      "Configure policy for installation of forwarding data to L2FIB";
                  }
    
                  container implicit-import-disable {
                    presence
                      "Indicates a implicit-import-disable node is configured.";
                    description
                      "Disable BGP implicit import";
                  }  // container implicit-import-disable
    
                  container route-policy {
                    description
                      "Apply route policy";
                    leaf export {
                      type xr:Route-policy-name;
                      description
                        "Export route policy";
                    }
    
                    leaf import {
                      type xr:Route-policy-name;
                      description
                        "Import route policy";
                    }
                  }  // container route-policy
                }  // container bgp
    
                leaf description {
                  type string {
                    length "1..64";
                  }
                  description
                    "Description for this EVPN Instance";
                }
    
                container load-balancing {
                  presence
                    "Indicates a load-balancing node is configured.";
                  description
                    "Configure EVPN Instance load-balancing";
                  container flow-label {
                    description
                      "Flow Label load balancing";
                    container static {
                      presence
                        "Indicates a static node is configured.";
                      description
                        "Static configuration of Flow Label";
                    }  // container static
                  }  // container flow-label
                }  // container load-balancing
    
                container ecmp-disable-deprecated {
                  presence
                    "Indicates a ecmp-disable-deprecated node is configured.";
                  description
                    "Deprecated: migrate to <evpn evi N preferrred-nexthop modulo>";
                }  // container ecmp-disable-deprecated
    
                container preferred-nexthop {
                  description
                    "Elect unique active path from ECMP candidate list";
                  container lowest-ip {
                    must
                      "not(../highest-ip or ../modulo)";
                    presence
                      "Indicates a lowest-ip node is configured.";
                    description
                      "Lowest nexthop IP is active";
                  }  // container lowest-ip
    
                  container highest-ip {
                    must
                      "not(../lowest-ip or ../modulo)";
                    presence
                      "Indicates a highest-ip node is configured.";
                    description
                      "Highest nexthop IP is active";
                  }  // container highest-ip
    
                  container modulo {
                    must
                      "not(../lowest-ip or ../highest-ip)";
                    presence
                      "Indicates a modulo node is configured.";
                    description
                      "EVI modulo of nexthops cardinality is active";
                  }  // container modulo
                }  // container preferred-nexthop
    
                container advertise-mac {
                  presence
                    "Indicates a advertise-mac node is configured.";
                  description
                    "Configure EVPN Instance MAC advertisement";
                  container bvi-mac {
                    presence
                      "Indicates a bvi-mac node is configured.";
                    description
                      "Advertise local MAC and BVI MAC routes";
                  }  // container bvi-mac
                }  // container advertise-mac
    
                container unknown-unicast-suppression {
                  presence
                    "Indicates a unknown-unicast-suppression node is configured.";
                  description
                    "Enabling unknown unicast suppression";
                }  // container unknown-unicast-suppression
    
                container control-word-disable {
                  presence
                    "Indicates a control-word-disable node is configured.";
                  description
                    "Disabling control-word";
                }  // container control-word-disable
    
                container ignore-mtu-mismatch {
                  presence
                    "Indicates a ignore-mtu-mismatch node is configured.";
                  description
                    "Ignore mismatch of local and remote MTUs";
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disables ingoring mismatch of local and remote MTUs";
                  }  // container disable
                }  // container ignore-mtu-mismatch
    
                container transmit-mtu-zero {
                  presence
                    "Indicates a transmit-mtu-zero node is configured.";
                  description
                    "Transmit MTU zero to remote instead of actual local MTU";
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disables transmitting MTU zero to remote instead of actual local MTU";
                  }  // container disable
                }  // container transmit-mtu-zero
    
                container re-origination-disable {
                  presence
                    "Indicates a re-origination-disable node is configured.";
                  description
                    "Disable route re-origination";
                }  // container re-origination-disable
    
                container vrf {
                  description
                    "Enable EVPN instance for layer-3 route synchronization.";
                  container default {
                    presence
                      "Indicates a default node is configured.";
                    description
                      "EVPN Instance for the default VRF";
                  }  // container default
                }  // container vrf
    
                container multicast {
                  presence
                    "Indicates a multicast node is configured.";
                  description
                    "Configure EVPN Instance Multicast";
                  container source-connected {
                    presence
                      "Indicates a source-connected node is configured.";
                    description
                      "Multicast traffic source connected";
                  }  // container source-connected
                }  // container multicast
    
                container proxy {
                  presence
                    "Indicates a proxy node is configured.";
                  description
                    "Configure EVPN Instance Proxy";
                  container igmp-snooping {
                    presence
                      "Indicates a igmp-snooping node is configured.";
                    description
                      "Proxy mode for IGMP-Snooping (selective multicast)";
                  }  // container igmp-snooping
                }  // container proxy
    
                container etree {
                  presence
                    "Indicates a etree node is configured.";
                  description
                    "Configure EVPN Instance E-Tree";
                  container leaf {
                    presence
                      "Indicates a leaf node is configured.";
                    description
                      "Designate EVPN Instance as EVPN E-Tree Leaf Site";
                  }  // container leaf
    
                  container rt-leaf {
                    presence
                      "Indicates a rt-leaf node is configured.";
                    description
                      "Designate EVPN Instance as EVPN E-Tree Route-Target Leaf Site";
                  }  // container rt-leaf
                }  // container etree
    
                leaf locator {
                  type xr:Cisco-ios-xr-string {
                    length "1..58";
                    pattern
                      '[a-z0-9A-Z][a-z0-9A-Z_.:]*';
                  }
                  description
                    "EVI locator to use for EVPN SID allocation";
                }
    
                container vpws-single-active-backup-suppression {
                  presence
                    "Indicates a vpws-single-active-backup-suppression node is configured.";
                  description
                    "Disables Non-DF EVI/EAD routes from being advertised in EVPN-VPWS Single-Active. Used for backwards-compatibility.";
                }  // container vpws-single-active-backup-suppression
    
                container bvi-coupled-mode {
                  presence
                    "Indicates a bvi-coupled-mode node is configured.";
                  description
                    "Couples BVI state to the core EVPN Instance state";
                }  // container bvi-coupled-mode
              }  // list evi
            }  // container stitching
    
            list evi {
              key "vpn-id";
              description
                "Configure EVPN Instance VPN ID";
              leaf vpn-id {
                type uint32 {
                  range "1..65534";
                }
                description
                  "Configure EVPN Instance VPN ID";
              }
    
              container bgp {
                presence
                  "Indicates a bgp node is configured.";
                description "Configure BGP";
                container rd {
                  description
                    "Set the Route Distinguisher";
                  leaf two-byte-as-number {
                    type uint32 {
                      range "1..65535";
                    }
                    must
                      "not(../four-byte-as-number or ../ipv4-address)";
                    description
                      "Two Byte AS Number";
                  }
    
                  leaf two-byte-as-assigned-number {
                    type uint32 {
                      range "0..4294967295";
                    }
                    must "../two-byte-as-number";
                    description
                      "AS:nn (hex or decimal format)";
                  }
    
                  leaf four-byte-as-number {
                    type uint32 {
                      range "65536..4294967295";
                    }
                    must
                      "not(../two-byte-as-number or ../ipv4-address)";
                    description
                      "Four Byte AS number";
                  }
    
                  leaf four-byte-as-assigned-number {
                    type uint32 {
                      range "0..65535";
                    }
                    must
                      "../four-byte-as-number";
                    description
                      "AS:nn (hex or decimal format)";
                  }
    
                  leaf ipv4-address {
                    type inet:ipv4-address-no-zone;
                    must
                      "not(../two-byte-as-number or ../four-byte-as-number)";
                    description "IP address";
                  }
    
                  leaf ipv4-address-assigned-number {
                    type uint32 {
                      range "0..65535";
                    }
                    must "../ipv4-address";
                    description
                      "IP-address:nn (hex or decimal format)";
                  }
                }  // container rd
    
                container route-target {
                  description
                    "Set the Route Target";
                  container two-byte-as-rts {
                    description
                      "Two Byte AS Number Route Target";
                    list two-byte-as-rt {
                      key "two-byte-as-number assigned-number";
                      description
                        "Two Byte AS Number Route Target";
                      leaf two-byte-as-number {
                        type uint32 {
                          range "1..65535";
                        }
                        description
                          "Two Byte AS Number";
                      }
    
                      leaf assigned-number {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "AS:nn (hex or decimal format)";
                      }
                    }  // list two-byte-as-rt
                  }  // container two-byte-as-rts
    
                  container four-byte-as-rts {
                    description
                      "Four Byte AS number Route Target";
                    list four-byte-as-rt {
                      key "four-byte-as-number assigned-number";
                      description
                        "Four Byte AS number Route Target";
                      leaf four-byte-as-number {
                        type uint32 {
                          range
                            "65536..4294967295";
                        }
                        description
                          "Four Byte AS number";
                      }
    
                      leaf assigned-number {
                        type uint32 {
                          range "0..65535";
                        }
                        description
                          "AS:nn (hex or decimal format)";
                      }
                    }  // list four-byte-as-rt
                  }  // container four-byte-as-rts
    
                  container ipv4-address-rts {
                    description
                      "IP address Route Target";
                    list ipv4-address-rt {
                      key "ipv4-address assigned-number";
                      description "IP address";
                      leaf ipv4-address {
                        type inet:ipv4-address-no-zone;
                        description "IP address";
                      }
    
                      leaf assigned-number {
                        type uint32 {
                          range "0..65535";
                        }
                        description
                          "IP-address:nn (hex or decimal format)";
                      }
                    }  // list ipv4-address-rt
                  }  // container ipv4-address-rts
    
                  container none {
                    presence
                      "Indicates a none node is configured.";
                    description
                      "Withhold BGP RTs";
                  }  // container none
    
                  container import {
                    description
                      "Import Route Target";
                    container two-byte-as-rts {
                      description
                        "Two Byte AS Number Route Target";
                      list two-byte-as-rt {
                        key "two-byte-as-number assigned-number";
                        description
                          "Two Byte AS Number Route Target";
                        leaf two-byte-as-number {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Two Byte AS Number";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "AS:nn (hex or decimal format)";
                        }
                      }  // list two-byte-as-rt
                    }  // container two-byte-as-rts
    
                    container four-byte-as-rts {
                      description
                        "Four Byte AS number Route Target";
                      list four-byte-as-rt {
                        key "four-byte-as-number assigned-number";
                        description
                          "Four Byte AS number Route Target";
                        leaf four-byte-as-number {
                          type uint32 {
                            range
                              "65536..4294967295";
                          }
                          description
                            "Four Byte AS number";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range "0..65535";
                          }
                          description
                            "AS:nn (hex or decimal format)";
                        }
                      }  // list four-byte-as-rt
                    }  // container four-byte-as-rts
    
                    container ipv4-address-rts {
                      description
                        "IP address Route Target";
                      list ipv4-address-rt {
                        key "ipv4-address assigned-number";
                        description "IP address";
                        leaf ipv4-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "IP address";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range "0..65535";
                          }
                          description
                            "IP-address:nn (hex or decimal format)";
                        }
                      }  // list ipv4-address-rt
                    }  // container ipv4-address-rts
    
                    container none {
                      presence
                        "Indicates a none node is configured.";
                      description
                        "Withhold BGP RTs";
                    }  // container none
                  }  // container import
    
                  container export {
                    description
                      "Export Route Target";
                    container two-byte-as-rts {
                      description
                        "Two Byte AS Number Route Target";
                      list two-byte-as-rt {
                        key "two-byte-as-number assigned-number";
                        description
                          "Two Byte AS Number Route Target";
                        leaf two-byte-as-number {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Two Byte AS Number";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "AS:nn (hex or decimal format)";
                        }
                      }  // list two-byte-as-rt
                    }  // container two-byte-as-rts
    
                    container four-byte-as-rts {
                      description
                        "Four Byte AS number Route Target";
                      list four-byte-as-rt {
                        key "four-byte-as-number assigned-number";
                        description
                          "Four Byte AS number Route Target";
                        leaf four-byte-as-number {
                          type uint32 {
                            range
                              "65536..4294967295";
                          }
                          description
                            "Four Byte AS number";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range "0..65535";
                          }
                          description
                            "AS:nn (hex or decimal format)";
                        }
                      }  // list four-byte-as-rt
                    }  // container four-byte-as-rts
    
                    container ipv4-address-rts {
                      description
                        "IP address Route Target";
                      list ipv4-address-rt {
                        key "ipv4-address assigned-number";
                        description "IP address";
                        leaf ipv4-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "IP address";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range "0..65535";
                          }
                          description
                            "IP-address:nn (hex or decimal format)";
                        }
                      }  // list ipv4-address-rt
                    }  // container ipv4-address-rts
    
                    container none {
                      presence
                        "Indicates a none node is configured.";
                      description
                        "Withhold BGP RTs";
                    }  // container none
                  }  // container export
                }  // container route-target
    
                leaf table-policy {
                  type xr:Route-policy-name;
                  description
                    "Configure policy for installation of forwarding data to L2FIB";
                }
    
                container implicit-import-disable {
                  presence
                    "Indicates a implicit-import-disable node is configured.";
                  description
                    "Disable BGP implicit import";
                }  // container implicit-import-disable
    
                container route-policy {
                  description
                    "Apply route policy";
                  leaf export {
                    type xr:Route-policy-name;
                    description
                      "Export route policy";
                  }
    
                  leaf import {
                    type xr:Route-policy-name;
                    description
                      "Import route policy";
                  }
                }  // container route-policy
              }  // container bgp
    
              leaf description {
                type string {
                  length "1..64";
                }
                description
                  "Description for this EVPN Instance";
              }
    
              container load-balancing {
                presence
                  "Indicates a load-balancing node is configured.";
                description
                  "Configure EVPN Instance load-balancing";
                container flow-label {
                  description
                    "Flow Label load balancing";
                  container static {
                    presence
                      "Indicates a static node is configured.";
                    description
                      "Static configuration of Flow Label";
                  }  // container static
                }  // container flow-label
              }  // container load-balancing
    
              container ecmp-disable-deprecated {
                presence
                  "Indicates a ecmp-disable-deprecated node is configured.";
                description
                  "Deprecated: migrate to <evpn evi N preferrred-nexthop modulo>";
              }  // container ecmp-disable-deprecated
    
              container preferred-nexthop {
                description
                  "Elect unique active path from ECMP candidate list";
                container lowest-ip {
                  must
                    "not(../highest-ip or ../modulo)";
                  presence
                    "Indicates a lowest-ip node is configured.";
                  description
                    "Lowest nexthop IP is active";
                }  // container lowest-ip
    
                container highest-ip {
                  must
                    "not(../lowest-ip or ../modulo)";
                  presence
                    "Indicates a highest-ip node is configured.";
                  description
                    "Highest nexthop IP is active";
                }  // container highest-ip
    
                container modulo {
                  must
                    "not(../lowest-ip or ../highest-ip)";
                  presence
                    "Indicates a modulo node is configured.";
                  description
                    "EVI modulo of nexthops cardinality is active";
                }  // container modulo
              }  // container preferred-nexthop
    
              container advertise-mac {
                presence
                  "Indicates a advertise-mac node is configured.";
                description
                  "Configure EVPN Instance MAC advertisement";
                container bvi-mac {
                  presence
                    "Indicates a bvi-mac node is configured.";
                  description
                    "Advertise local MAC and BVI MAC routes";
                }  // container bvi-mac
              }  // container advertise-mac
    
              container unknown-unicast-suppression {
                presence
                  "Indicates a unknown-unicast-suppression node is configured.";
                description
                  "Enabling unknown unicast suppression";
              }  // container unknown-unicast-suppression
    
              container control-word-disable {
                presence
                  "Indicates a control-word-disable node is configured.";
                description
                  "Disabling control-word";
              }  // container control-word-disable
    
              container ignore-mtu-mismatch {
                presence
                  "Indicates a ignore-mtu-mismatch node is configured.";
                description
                  "Ignore mismatch of local and remote MTUs";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disables ingoring mismatch of local and remote MTUs";
                }  // container disable
              }  // container ignore-mtu-mismatch
    
              container transmit-mtu-zero {
                presence
                  "Indicates a transmit-mtu-zero node is configured.";
                description
                  "Transmit MTU zero to remote instead of actual local MTU";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disables transmitting MTU zero to remote instead of actual local MTU";
                }  // container disable
              }  // container transmit-mtu-zero
    
              container re-origination-disable {
                presence
                  "Indicates a re-origination-disable node is configured.";
                description
                  "Disable route re-origination";
              }  // container re-origination-disable
    
              container vrf {
                description
                  "Enable EVPN instance for layer-3 route synchronization.";
                container default {
                  presence
                    "Indicates a default node is configured.";
                  description
                    "EVPN Instance for the default VRF";
                }  // container default
              }  // container vrf
    
              container multicast {
                presence
                  "Indicates a multicast node is configured.";
                description
                  "Configure EVPN Instance Multicast";
                container source-connected {
                  presence
                    "Indicates a source-connected node is configured.";
                  description
                    "Multicast traffic source connected";
                }  // container source-connected
              }  // container multicast
    
              container proxy {
                presence
                  "Indicates a proxy node is configured.";
                description
                  "Configure EVPN Instance Proxy";
                container igmp-snooping {
                  presence
                    "Indicates a igmp-snooping node is configured.";
                  description
                    "Proxy mode for IGMP-Snooping (selective multicast)";
                }  // container igmp-snooping
              }  // container proxy
    
              container etree {
                presence
                  "Indicates a etree node is configured.";
                description
                  "Configure EVPN Instance E-Tree";
                container leaf {
                  presence
                    "Indicates a leaf node is configured.";
                  description
                    "Designate EVPN Instance as EVPN E-Tree Leaf Site";
                }  // container leaf
    
                container rt-leaf {
                  presence
                    "Indicates a rt-leaf node is configured.";
                  description
                    "Designate EVPN Instance as EVPN E-Tree Route-Target Leaf Site";
                }  // container rt-leaf
              }  // container etree
    
              leaf locator {
                type xr:Cisco-ios-xr-string {
                  length "1..58";
                  pattern
                    '[a-z0-9A-Z][a-z0-9A-Z_.:]*';
                }
                description
                  "EVI locator to use for EVPN SID allocation";
              }
    
              container vpws-single-active-backup-suppression {
                presence
                  "Indicates a vpws-single-active-backup-suppression node is configured.";
                description
                  "Disables Non-DF EVI/EAD routes from being advertised in EVPN-VPWS Single-Active. Used for backwards-compatibility.";
              }  // container vpws-single-active-backup-suppression
    
              container bvi-coupled-mode {
                presence
                  "Indicates a bvi-coupled-mode node is configured.";
                description
                  "Couples BVI state to the core EVPN Instance state";
              }  // container bvi-coupled-mode
            }  // list evi
          }  // container route-sync
    
          container vnis {
            description "Configure EVPN VNI";
            container stitching {
              description
                "Treat EVPN Instance as Stitching side";
              list vni {
                key "vni-id";
                description "Configure EVPN VNI";
                leaf vni-id {
                  type uint32 {
                    range "1..16777215";
                  }
                  description
                    "Configure EVPN VNI";
                }
    
                container bgp {
                  presence
                    "Indicates a bgp node is configured.";
                  description "Configure BGP";
                  container rd {
                    description
                      "Set the Route Distinguisher";
                    leaf two-byte-as-number {
                      type uint32 {
                        range "1..65535";
                      }
                      must
                        "not(../four-byte-as-number or ../ipv4-address)";
                      description
                        "Two Byte AS Number";
                    }
    
                    leaf two-byte-as-assigned-number {
                      type uint32 {
                        range "0..4294967295";
                      }
                      must
                        "../two-byte-as-number";
                      description
                        "AS:nn (hex or decimal format)";
                    }
    
                    leaf four-byte-as-number {
                      type uint32 {
                        range
                          "65536..4294967295";
                      }
                      must
                        "not(../two-byte-as-number or ../ipv4-address)";
                      description
                        "Four Byte AS number";
                    }
    
                    leaf four-byte-as-assigned-number {
                      type uint32 {
                        range "0..65535";
                      }
                      must
                        "../four-byte-as-number";
                      description
                        "AS:nn (hex or decimal format)";
                    }
    
                    leaf ipv4-address {
                      type inet:ipv4-address-no-zone;
                      must
                        "not(../two-byte-as-number or ../four-byte-as-number)";
                      description "IP address";
                    }
    
                    leaf ipv4-address-assigned-number {
                      type uint32 {
                        range "0..65535";
                      }
                      must "../ipv4-address";
                      description
                        "IP-address:nn (hex or decimal format)";
                    }
                  }  // container rd
    
                  container route-target {
                    description
                      "Set the Route Target";
                    container two-byte-as-rts {
                      description
                        "Two Byte AS Number Route Target";
                      list two-byte-as-rt {
                        key "two-byte-as-number assigned-number";
                        description
                          "Two Byte AS Number Route Target";
                        leaf two-byte-as-number {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Two Byte AS Number";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "AS:nn (hex or decimal format)";
                        }
                      }  // list two-byte-as-rt
                    }  // container two-byte-as-rts
    
                    container four-byte-as-rts {
                      description
                        "Four Byte AS number Route Target";
                      list four-byte-as-rt {
                        key "four-byte-as-number assigned-number";
                        description
                          "Four Byte AS number Route Target";
                        leaf four-byte-as-number {
                          type uint32 {
                            range
                              "65536..4294967295";
                          }
                          description
                            "Four Byte AS number";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range "0..65535";
                          }
                          description
                            "AS:nn (hex or decimal format)";
                        }
                      }  // list four-byte-as-rt
                    }  // container four-byte-as-rts
    
                    container ipv4-address-rts {
                      description
                        "IP address Route Target";
                      list ipv4-address-rt {
                        key "ipv4-address assigned-number";
                        description "IP address";
                        leaf ipv4-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "IP address";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range "0..65535";
                          }
                          description
                            "IP-address:nn (hex or decimal format)";
                        }
                      }  // list ipv4-address-rt
                    }  // container ipv4-address-rts
    
                    container none {
                      presence
                        "Indicates a none node is configured.";
                      description
                        "Withhold BGP RTs";
                    }  // container none
    
                    container import {
                      description
                        "Import Route Target";
                      container two-byte-as-rts {
                        description
                          "Two Byte AS Number Route Target";
                        list two-byte-as-rt {
                          key "two-byte-as-number assigned-number";
                          description
                            "Two Byte AS Number Route Target";
                          leaf two-byte-as-number {
                            type uint32 {
                              range "1..65535";
                            }
                            description
                              "Two Byte AS Number";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "AS:nn (hex or decimal format)";
                          }
                        }  // list two-byte-as-rt
                      }  // container two-byte-as-rts
    
                      container four-byte-as-rts {
                        description
                          "Four Byte AS number Route Target";
                        list four-byte-as-rt {
                          key "four-byte-as-number assigned-number";
                          description
                            "Four Byte AS number Route Target";
                          leaf four-byte-as-number {
                            type uint32 {
                              range
                                "65536..4294967295";
                            }
                            description
                              "Four Byte AS number";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "AS:nn (hex or decimal format)";
                          }
                        }  // list four-byte-as-rt
                      }  // container four-byte-as-rts
    
                      container ipv4-address-rts {
                        description
                          "IP address Route Target";
                        list ipv4-address-rt {
                          key "ipv4-address assigned-number";
                          description
                            "IP address";
                          leaf ipv4-address {
                            type inet:ipv4-address-no-zone;
                            description
                              "IP address";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "IP-address:nn (hex or decimal format)";
                          }
                        }  // list ipv4-address-rt
                      }  // container ipv4-address-rts
    
                      container none {
                        presence
                          "Indicates a none node is configured.";
                        description
                          "Withhold BGP RTs";
                      }  // container none
                    }  // container import
    
                    container export {
                      description
                        "Export Route Target";
                      container two-byte-as-rts {
                        description
                          "Two Byte AS Number Route Target";
                        list two-byte-as-rt {
                          key "two-byte-as-number assigned-number";
                          description
                            "Two Byte AS Number Route Target";
                          leaf two-byte-as-number {
                            type uint32 {
                              range "1..65535";
                            }
                            description
                              "Two Byte AS Number";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "AS:nn (hex or decimal format)";
                          }
                        }  // list two-byte-as-rt
                      }  // container two-byte-as-rts
    
                      container four-byte-as-rts {
                        description
                          "Four Byte AS number Route Target";
                        list four-byte-as-rt {
                          key "four-byte-as-number assigned-number";
                          description
                            "Four Byte AS number Route Target";
                          leaf four-byte-as-number {
                            type uint32 {
                              range
                                "65536..4294967295";
                            }
                            description
                              "Four Byte AS number";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "AS:nn (hex or decimal format)";
                          }
                        }  // list four-byte-as-rt
                      }  // container four-byte-as-rts
    
                      container ipv4-address-rts {
                        description
                          "IP address Route Target";
                        list ipv4-address-rt {
                          key "ipv4-address assigned-number";
                          description
                            "IP address";
                          leaf ipv4-address {
                            type inet:ipv4-address-no-zone;
                            description
                              "IP address";
                          }
    
                          leaf assigned-number {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "IP-address:nn (hex or decimal format)";
                          }
                        }  // list ipv4-address-rt
                      }  // container ipv4-address-rts
    
                      container none {
                        presence
                          "Indicates a none node is configured.";
                        description
                          "Withhold BGP RTs";
                      }  // container none
                    }  // container export
                  }  // container route-target
    
                  leaf table-policy {
                    type xr:Route-policy-name;
                    description
                      "Configure policy for installation of forwarding data to L2FIB";
                  }
    
                  container implicit-import-disable {
                    presence
                      "Indicates a implicit-import-disable node is configured.";
                    description
                      "Disable BGP implicit import";
                  }  // container implicit-import-disable
    
                  container route-policy {
                    description
                      "Apply route policy";
                    leaf export {
                      type xr:Route-policy-name;
                      description
                        "Export route policy";
                    }
    
                    leaf import {
                      type xr:Route-policy-name;
                      description
                        "Import route policy";
                    }
                  }  // container route-policy
                }  // container bgp
    
                leaf description {
                  type string {
                    length "1..64";
                  }
                  description
                    "Description for this EVPN Instance";
                }
    
                container ecmp-disable-deprecated {
                  presence
                    "Indicates a ecmp-disable-deprecated node is configured.";
                  description
                    "Deprecated: migrate to <evpn evi N preferrred-nexthop modulo>";
                }  // container ecmp-disable-deprecated
    
                container preferred-nexthop {
                  description
                    "Elect unique active path from ECMP candidate list";
                  container lowest-ip {
                    must
                      "not(../highest-ip or ../modulo)";
                    presence
                      "Indicates a lowest-ip node is configured.";
                    description
                      "Lowest nexthop IP is active";
                  }  // container lowest-ip
    
                  container highest-ip {
                    must
                      "not(../lowest-ip or ../modulo)";
                    presence
                      "Indicates a highest-ip node is configured.";
                    description
                      "Highest nexthop IP is active";
                  }  // container highest-ip
    
                  container modulo {
                    must
                      "not(../lowest-ip or ../highest-ip)";
                    presence
                      "Indicates a modulo node is configured.";
                    description
                      "EVI modulo of nexthops cardinality is active";
                  }  // container modulo
                }  // container preferred-nexthop
    
                container advertise-mac {
                  presence
                    "Indicates a advertise-mac node is configured.";
                  description
                    "Configure EVPN Instance MAC advertisement";
                  container bvi-mac {
                    presence
                      "Indicates a bvi-mac node is configured.";
                    description
                      "Advertise local MAC and BVI MAC routes";
                  }  // container bvi-mac
                }  // container advertise-mac
    
                container unknown-unicast-suppression {
                  presence
                    "Indicates a unknown-unicast-suppression node is configured.";
                  description
                    "Enabling unknown unicast suppression";
                }  // container unknown-unicast-suppression
    
                container ignore-mtu-mismatch {
                  presence
                    "Indicates a ignore-mtu-mismatch node is configured.";
                  description
                    "Ignore mismatch of local and remote MTUs";
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disables ingoring mismatch of local and remote MTUs";
                  }  // container disable
                }  // container ignore-mtu-mismatch
    
                container transmit-mtu-zero {
                  presence
                    "Indicates a transmit-mtu-zero node is configured.";
                  description
                    "Transmit MTU zero to remote instead of actual local MTU";
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disables transmitting MTU zero to remote instead of actual local MTU";
                  }  // container disable
                }  // container transmit-mtu-zero
    
                container re-origination-disable {
                  presence
                    "Indicates a re-origination-disable node is configured.";
                  description
                    "Disable route re-origination";
                }  // container re-origination-disable
    
                container multicast {
                  presence
                    "Indicates a multicast node is configured.";
                  description
                    "Configure EVPN Instance Multicast";
                  container source-connected {
                    presence
                      "Indicates a source-connected node is configured.";
                    description
                      "Multicast traffic source connected";
                  }  // container source-connected
                }  // container multicast
    
                container proxy {
                  presence
                    "Indicates a proxy node is configured.";
                  description
                    "Configure EVPN Instance Proxy";
                  container igmp-snooping {
                    presence
                      "Indicates a igmp-snooping node is configured.";
                    description
                      "Proxy mode for IGMP-Snooping (selective multicast)";
                  }  // container igmp-snooping
                }  // container proxy
    
                container bvi-coupled-mode {
                  presence
                    "Indicates a bvi-coupled-mode node is configured.";
                  description
                    "Couples BVI state to the core EVPN Instance state";
                }  // container bvi-coupled-mode
              }  // list vni
            }  // container stitching
    
            list vni {
              key "vni-id";
              description "Configure EVPN VNI";
              leaf vni-id {
                type uint32 {
                  range "1..16777215";
                }
                description "Configure EVPN VNI";
              }
    
              container bgp {
                presence
                  "Indicates a bgp node is configured.";
                description "Configure BGP";
                container rd {
                  description
                    "Set the Route Distinguisher";
                  leaf two-byte-as-number {
                    type uint32 {
                      range "1..65535";
                    }
                    must
                      "not(../four-byte-as-number or ../ipv4-address)";
                    description
                      "Two Byte AS Number";
                  }
    
                  leaf two-byte-as-assigned-number {
                    type uint32 {
                      range "0..4294967295";
                    }
                    must "../two-byte-as-number";
                    description
                      "AS:nn (hex or decimal format)";
                  }
    
                  leaf four-byte-as-number {
                    type uint32 {
                      range "65536..4294967295";
                    }
                    must
                      "not(../two-byte-as-number or ../ipv4-address)";
                    description
                      "Four Byte AS number";
                  }
    
                  leaf four-byte-as-assigned-number {
                    type uint32 {
                      range "0..65535";
                    }
                    must
                      "../four-byte-as-number";
                    description
                      "AS:nn (hex or decimal format)";
                  }
    
                  leaf ipv4-address {
                    type inet:ipv4-address-no-zone;
                    must
                      "not(../two-byte-as-number or ../four-byte-as-number)";
                    description "IP address";
                  }
    
                  leaf ipv4-address-assigned-number {
                    type uint32 {
                      range "0..65535";
                    }
                    must "../ipv4-address";
                    description
                      "IP-address:nn (hex or decimal format)";
                  }
                }  // container rd
    
                container route-target {
                  description
                    "Set the Route Target";
                  container two-byte-as-rts {
                    description
                      "Two Byte AS Number Route Target";
                    list two-byte-as-rt {
                      key "two-byte-as-number assigned-number";
                      description
                        "Two Byte AS Number Route Target";
                      leaf two-byte-as-number {
                        type uint32 {
                          range "1..65535";
                        }
                        description
                          "Two Byte AS Number";
                      }
    
                      leaf assigned-number {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "AS:nn (hex or decimal format)";
                      }
                    }  // list two-byte-as-rt
                  }  // container two-byte-as-rts
    
                  container four-byte-as-rts {
                    description
                      "Four Byte AS number Route Target";
                    list four-byte-as-rt {
                      key "four-byte-as-number assigned-number";
                      description
                        "Four Byte AS number Route Target";
                      leaf four-byte-as-number {
                        type uint32 {
                          range
                            "65536..4294967295";
                        }
                        description
                          "Four Byte AS number";
                      }
    
                      leaf assigned-number {
                        type uint32 {
                          range "0..65535";
                        }
                        description
                          "AS:nn (hex or decimal format)";
                      }
                    }  // list four-byte-as-rt
                  }  // container four-byte-as-rts
    
                  container ipv4-address-rts {
                    description
                      "IP address Route Target";
                    list ipv4-address-rt {
                      key "ipv4-address assigned-number";
                      description "IP address";
                      leaf ipv4-address {
                        type inet:ipv4-address-no-zone;
                        description "IP address";
                      }
    
                      leaf assigned-number {
                        type uint32 {
                          range "0..65535";
                        }
                        description
                          "IP-address:nn (hex or decimal format)";
                      }
                    }  // list ipv4-address-rt
                  }  // container ipv4-address-rts
    
                  container none {
                    presence
                      "Indicates a none node is configured.";
                    description
                      "Withhold BGP RTs";
                  }  // container none
    
                  container import {
                    description
                      "Import Route Target";
                    container two-byte-as-rts {
                      description
                        "Two Byte AS Number Route Target";
                      list two-byte-as-rt {
                        key "two-byte-as-number assigned-number";
                        description
                          "Two Byte AS Number Route Target";
                        leaf two-byte-as-number {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Two Byte AS Number";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "AS:nn (hex or decimal format)";
                        }
                      }  // list two-byte-as-rt
                    }  // container two-byte-as-rts
    
                    container four-byte-as-rts {
                      description
                        "Four Byte AS number Route Target";
                      list four-byte-as-rt {
                        key "four-byte-as-number assigned-number";
                        description
                          "Four Byte AS number Route Target";
                        leaf four-byte-as-number {
                          type uint32 {
                            range
                              "65536..4294967295";
                          }
                          description
                            "Four Byte AS number";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range "0..65535";
                          }
                          description
                            "AS:nn (hex or decimal format)";
                        }
                      }  // list four-byte-as-rt
                    }  // container four-byte-as-rts
    
                    container ipv4-address-rts {
                      description
                        "IP address Route Target";
                      list ipv4-address-rt {
                        key "ipv4-address assigned-number";
                        description "IP address";
                        leaf ipv4-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "IP address";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range "0..65535";
                          }
                          description
                            "IP-address:nn (hex or decimal format)";
                        }
                      }  // list ipv4-address-rt
                    }  // container ipv4-address-rts
    
                    container none {
                      presence
                        "Indicates a none node is configured.";
                      description
                        "Withhold BGP RTs";
                    }  // container none
                  }  // container import
    
                  container export {
                    description
                      "Export Route Target";
                    container two-byte-as-rts {
                      description
                        "Two Byte AS Number Route Target";
                      list two-byte-as-rt {
                        key "two-byte-as-number assigned-number";
                        description
                          "Two Byte AS Number Route Target";
                        leaf two-byte-as-number {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Two Byte AS Number";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "AS:nn (hex or decimal format)";
                        }
                      }  // list two-byte-as-rt
                    }  // container two-byte-as-rts
    
                    container four-byte-as-rts {
                      description
                        "Four Byte AS number Route Target";
                      list four-byte-as-rt {
                        key "four-byte-as-number assigned-number";
                        description
                          "Four Byte AS number Route Target";
                        leaf four-byte-as-number {
                          type uint32 {
                            range
                              "65536..4294967295";
                          }
                          description
                            "Four Byte AS number";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range "0..65535";
                          }
                          description
                            "AS:nn (hex or decimal format)";
                        }
                      }  // list four-byte-as-rt
                    }  // container four-byte-as-rts
    
                    container ipv4-address-rts {
                      description
                        "IP address Route Target";
                      list ipv4-address-rt {
                        key "ipv4-address assigned-number";
                        description "IP address";
                        leaf ipv4-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "IP address";
                        }
    
                        leaf assigned-number {
                          type uint32 {
                            range "0..65535";
                          }
                          description
                            "IP-address:nn (hex or decimal format)";
                        }
                      }  // list ipv4-address-rt
                    }  // container ipv4-address-rts
    
                    container none {
                      presence
                        "Indicates a none node is configured.";
                      description
                        "Withhold BGP RTs";
                    }  // container none
                  }  // container export
                }  // container route-target
    
                leaf table-policy {
                  type xr:Route-policy-name;
                  description
                    "Configure policy for installation of forwarding data to L2FIB";
                }
    
                container implicit-import-disable {
                  presence
                    "Indicates a implicit-import-disable node is configured.";
                  description
                    "Disable BGP implicit import";
                }  // container implicit-import-disable
    
                container route-policy {
                  description
                    "Apply route policy";
                  leaf export {
                    type xr:Route-policy-name;
                    description
                      "Export route policy";
                  }
    
                  leaf import {
                    type xr:Route-policy-name;
                    description
                      "Import route policy";
                  }
                }  // container route-policy
              }  // container bgp
    
              leaf description {
                type string {
                  length "1..64";
                }
                description
                  "Description for this EVPN Instance";
              }
    
              container ecmp-disable-deprecated {
                presence
                  "Indicates a ecmp-disable-deprecated node is configured.";
                description
                  "Deprecated: migrate to <evpn evi N preferrred-nexthop modulo>";
              }  // container ecmp-disable-deprecated
    
              container preferred-nexthop {
                description
                  "Elect unique active path from ECMP candidate list";
                container lowest-ip {
                  must
                    "not(../highest-ip or ../modulo)";
                  presence
                    "Indicates a lowest-ip node is configured.";
                  description
                    "Lowest nexthop IP is active";
                }  // container lowest-ip
    
                container highest-ip {
                  must
                    "not(../lowest-ip or ../modulo)";
                  presence
                    "Indicates a highest-ip node is configured.";
                  description
                    "Highest nexthop IP is active";
                }  // container highest-ip
    
                container modulo {
                  must
                    "not(../lowest-ip or ../highest-ip)";
                  presence
                    "Indicates a modulo node is configured.";
                  description
                    "EVI modulo of nexthops cardinality is active";
                }  // container modulo
              }  // container preferred-nexthop
    
              container advertise-mac {
                presence
                  "Indicates a advertise-mac node is configured.";
                description
                  "Configure EVPN Instance MAC advertisement";
                container bvi-mac {
                  presence
                    "Indicates a bvi-mac node is configured.";
                  description
                    "Advertise local MAC and BVI MAC routes";
                }  // container bvi-mac
              }  // container advertise-mac
    
              container unknown-unicast-suppression {
                presence
                  "Indicates a unknown-unicast-suppression node is configured.";
                description
                  "Enabling unknown unicast suppression";
              }  // container unknown-unicast-suppression
    
              container ignore-mtu-mismatch {
                presence
                  "Indicates a ignore-mtu-mismatch node is configured.";
                description
                  "Ignore mismatch of local and remote MTUs";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disables ingoring mismatch of local and remote MTUs";
                }  // container disable
              }  // container ignore-mtu-mismatch
    
              container transmit-mtu-zero {
                presence
                  "Indicates a transmit-mtu-zero node is configured.";
                description
                  "Transmit MTU zero to remote instead of actual local MTU";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disables transmitting MTU zero to remote instead of actual local MTU";
                }  // container disable
              }  // container transmit-mtu-zero
    
              container re-origination-disable {
                presence
                  "Indicates a re-origination-disable node is configured.";
                description
                  "Disable route re-origination";
              }  // container re-origination-disable
    
              container multicast {
                presence
                  "Indicates a multicast node is configured.";
                description
                  "Configure EVPN Instance Multicast";
                container source-connected {
                  presence
                    "Indicates a source-connected node is configured.";
                  description
                    "Multicast traffic source connected";
                }  // container source-connected
              }  // container multicast
    
              container proxy {
                presence
                  "Indicates a proxy node is configured.";
                description
                  "Configure EVPN Instance Proxy";
                container igmp-snooping {
                  presence
                    "Indicates a igmp-snooping node is configured.";
                  description
                    "Proxy mode for IGMP-Snooping (selective multicast)";
                }  // container igmp-snooping
              }  // container proxy
    
              container bvi-coupled-mode {
                presence
                  "Indicates a bvi-coupled-mode node is configured.";
                description
                  "Couples BVI state to the core EVPN Instance state";
              }  // container bvi-coupled-mode
            }  // list vni
          }  // container vnis
    
          container segment-routing {
            if-feature l2vpn_platform_srv6_supported;
            description
              "Segment routing configuration for EVPN";
            container srv6 {
              presence
                "Indicates a srv6 node is configured.";
              description
                "SRv6 configuration for EVPN";
              leaf locator {
                type xr:Cisco-ios-xr-string {
                  length "1..58";
                  pattern
                    '[a-z0-9A-Z][a-z0-9A-Z_.:]*';
                }
                description
                  "Default locator to use for EVPN SID allocation";
              }
            }  // container srv6
          }  // container segment-routing
    
          container ignore-mtu-mismatch {
            presence
              "Indicates a ignore-mtu-mismatch node is configured.";
            description
              "Ignore mismatch of local and remote MTUs";
          }  // container ignore-mtu-mismatch
    
          container transmit-mtu-zero {
            presence
              "Indicates a transmit-mtu-zero node is configured.";
            description
              "Transmit MTU zero to remote instead of actual local MTU";
          }  // container transmit-mtu-zero
        }  // container evpn
    
        container generic-interface-lists {
          description "Interface list";
          list generic-interface-list {
            key "generic-interface-list-name";
            description "Interface list";
            leaf generic-interface-list-name {
              type xr:Cisco-ios-xr-string {
                length "1..32";
              }
              description "Interface list";
            }
    
            container interfaces {
              description "Specify an interface";
              list interface {
                if-feature l2vpn_iflist_intf_supported;
                key "interface-name";
                description
                  "Specify interface name";
                leaf interface-name {
                  type xr:Interface-name;
                  description
                    "Specify interface name";
                }
              }  // list interface
            }  // container interfaces
          }  // list generic-interface-list
        }  // container generic-interface-lists
    
        container l2vpn {
          presence
            "Indicates a l2vpn node is configured.";
          description "Configure l2vpn commands";
          container bridge {
            description
              "Configure bridge commands";
            container groups {
              description
                "Specify the group the bridge belongs to";
              list group {
                key "group-name";
                description
                  "Specify the group the bridge belongs to";
                leaf group-name {
                  type xr:Cisco-ios-xr-string {
                    length "1..32";
                  }
                  description
                    "Specify the group the bridge belongs to";
                }
    
                container bridge-domains {
                  description
                    "Configure bridge domain";
                  list bridge-domain {
                    key "bridge-domain-name";
                    description
                      "Configure bridge domain";
                    leaf bridge-domain-name {
                      type xr:Cisco-ios-xr-string {
                        length "1..27";
                      }
                      description
                        "Configure bridge domain";
                    }
    
                    container evis {
                      description
                        "Ethernet VPN identifier";
                      list evi {
                        key "vpn-id";
                        description
                          "Ethernet VPN identifier";
                        leaf vpn-id {
                          type uint32 {
                            range "1..65534";
                          }
                          description
                            "Ethernet VPN identifier";
                        }
                      }  // list evi
                    }  // container evis
    
                    container vnis {
                      description
                        "VxLAN VPN identifier";
                      list vni {
                        key "vni-id";
                        description
                          "VxLAN VPN identifier";
                        leaf vni-id {
                          type uint32 {
                            range "1..16777215";
                          }
                          description
                            "VxLAN VPN identifier";
                        }
                      }  // list vni
                    }  // container vnis
    
                    leaf mtu {
                      type uint32 {
                        range "46..65535";
                      }
                      description
                        "Maximum transmission unit (payload) for this Bridge Domain";
                    }
    
                    container coupled-mode {
                      if-feature l2vpn_is_cli_supported;
                      presence
                        "Indicates a coupled-mode node is configured.";
                      description
                        "Enable coupled mode for the Bridge Domain";
                    }  // container coupled-mode
    
                    container transport-mode {
                      description
                        "Bridge domain transport mode";
                      container vlan {
                        description
                          "Vlan tagged mode";
                        container passthrough {
                          presence
                            "Indicates a passthrough node is configured.";
                          description
                            "passthrough incoming tags";
                        }  // container passthrough
                      }  // container vlan
                    }  // container transport-mode
    
                    container flooding {
                      description
                        "Traffic flooding";
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable flooding";
                      }  // container disable
    
                      container unknown-unicast {
                        description
                          "Traffic flooding unknown unicast";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable Unknown Unicast flooding";
                        }  // container disable
                      }  // container unknown-unicast
                    }  // container flooding
    
                    container dynamic-arp-inspection {
                      presence
                        "Indicates a dynamic-arp-inspection node is configured.";
                      description
                        "Dynamic ARP Inspection";
                      container logging {
                        presence
                          "Indicates a logging node is configured.";
                        description
                          "Enable Logging";
                      }  // container logging
    
                      container address-validation {
                        presence
                          "Indicates a address-validation node is configured.";
                        description
                          "Address Validation Configurations";
                        container src-mac {
                          presence
                            "Indicates a src-mac node is configured.";
                          description
                            "Match Source MAC Address";
                        }  // container src-mac
    
                        container dst-mac {
                          presence
                            "Indicates a dst-mac node is configured.";
                          description
                            "Match Destination MAC Address";
                        }  // container dst-mac
    
                        container ipv4 {
                          presence
                            "Indicates a ipv4 node is configured.";
                          description
                            "Match IPv4 Address";
                        }  // container ipv4
                      }  // container address-validation
                    }  // container dynamic-arp-inspection
    
                    container ip-source-guard {
                      presence
                        "Indicates a ip-source-guard node is configured.";
                      description
                        "IP Source Guard";
                      container logging {
                        presence
                          "Indicates a logging node is configured.";
                        description
                          "Enable Logging";
                      }  // container logging
                    }  // container ip-source-guard
    
                    container dhcp {
                      description
                        "DHCP protocol";
                      container ipv4 {
                        description
                          "IP Version 4";
                        container snoop {
                          description
                            "Set the snooping profile";
                          leaf profile {
                            type xr:Cisco-ios-xr-string {
                              length "1..32";
                            }
                            description
                              "Attach a DHCP profile";
                          }
                        }  // container snoop
                      }  // container ipv4
                    }  // container dhcp
    
                    container igmp {
                      description
                        "IGMP protocol";
                      container snooping {
                        description
                          "Set the snooping profile";
                        leaf profile {
                          type xr:Cisco-ios-xr-string {
                            length "1..32";
                          }
                          description
                            "Attach an IGMP profile";
                        }
    
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "disable IGMP snooping for the current bridge domain";
                        }  // container disable
                      }  // container snooping
                    }  // container igmp
    
                    container mld {
                      description "MLD protocol";
                      container snooping {
                        description
                          "Set the snooping profile";
                        leaf profile {
                          type xr:Cisco-ios-xr-string {
                            length "1..32";
                          }
                          description
                            "Attach a MLD profile";
                        }
                      }  // container snooping
                    }  // container mld
    
                    container storm-control {
                      description
                        "Storm Control";
                      container broadcast {
                        description
                          "Broadcast Storm Control";
                        leaf pps {
                          type uint32 {
                            range "1..160000";
                          }
                          description
                            "Set the storm control pps";
                        }
    
                        leaf kbps {
                          type uint32 {
                            range "64..1280000";
                          }
                          description
                            "Set the storm control kbps";
                        }
                      }  // container broadcast
    
                      container multicast {
                        description
                          "Multicast Storm Control";
                        leaf pps {
                          type uint32 {
                            range "1..160000";
                          }
                          description
                            "Set the storm control pps";
                        }
    
                        leaf kbps {
                          type uint32 {
                            range "64..1280000";
                          }
                          description
                            "Set the storm control kbps";
                        }
                      }  // container multicast
    
                      container unknown-unicast {
                        description
                          "Unknown-unicast Storm Control";
                        leaf pps {
                          type uint32 {
                            range "1..160000";
                          }
                          description
                            "Set the storm control pps";
                        }
    
                        leaf kbps {
                          type uint32 {
                            range "64..1280000";
                          }
                          description
                            "Set the storm control kbps";
                        }
                      }  // container unknown-unicast
                    }  // container storm-control
    
                    container multicast-source {
                      description
                        "Multicast Source Traffic";
                      container ipv4 {
                        must
                          "not(../ipv6 or ../ipv4-ipv6)";
                        presence
                          "Indicates a ipv4 node is configured.";
                        description
                          "Traffic Type IPv4";
                      }  // container ipv4
    
                      container ipv6 {
                        must
                          "not(../ipv4 or ../ipv4-ipv6)";
                        presence
                          "Indicates a ipv6 node is configured.";
                        description
                          "Traffic Type IPv6";
                      }  // container ipv6
    
                      container ipv4-ipv6 {
                        must
                          "not(../ipv4 or ../ipv6)";
                        presence
                          "Indicates a ipv4-ipv6 node is configured.";
                        description
                          "Traffic Type IPv4 and IPv6";
                      }  // container ipv4-ipv6
                    }  // container multicast-source
    
                    container interfaces {
                      description
                        "Assign interface to bridge domain";
                      list interface {
                        if-feature l2vpn_iflist_intf_supported;
                        key "interface-name";
                        description
                          "Specify interface name";
                        leaf interface-name {
                          type xr:Interface-name;
                          description
                            "Specify interface name";
                        }
    
                        container dhcp {
                          description
                            "DHCP protocol";
                          container ipv4 {
                            description
                              "IP Version 4";
                            container none {
                              presence
                                "Indicates a none node is configured.";
                              description
                                "Disable DHCP snooping";
                            }  // container none
    
                            container snoop {
                              presence
                                "Indicates a snoop node is configured.";
                              description
                                "Set the snooping profile";
                              leaf profile {
                                type xr:Cisco-ios-xr-string {
                                  length "1..32";
                                }
                                description
                                  "Attach a DHCP profile";
                              }
                            }  // container snoop
                          }  // container ipv4
                        }  // container dhcp
    
                        container dynamic-arp-inspection {
                          presence
                            "Indicates a dynamic-arp-inspection node is configured.";
                          description
                            "Dynamic ARP Inspection";
                          container logging {
                            presence
                              "Indicates a logging node is configured.";
                            description
                              "Enable Logging";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "disable logging";
                            }  // container disable
                          }  // container logging
    
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable Dynamic Arp Inspection";
                          }  // container disable
    
                          container address-validation {
                            presence
                              "Indicates a address-validation node is configured.";
                            description
                              "Address Validation Configurations";
                            container src-mac {
                              presence
                                "Indicates a src-mac node is configured.";
                              description
                                "Match Source MAC Address";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "disable Source MAC Address check";
                              }  // container disable
                            }  // container src-mac
    
                            container dst-mac {
                              presence
                                "Indicates a dst-mac node is configured.";
                              description
                                "Match Destination MAC Address";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "disable Destimation MAC Address check";
                              }  // container disable
                            }  // container dst-mac
    
                            container ipv4 {
                              presence
                                "Indicates a ipv4 node is configured.";
                              description
                                "Match IPv4 Address";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "disable IPV4 Address check";
                              }  // container disable
                            }  // container ipv4
                          }  // container address-validation
                        }  // container dynamic-arp-inspection
    
                        container flooding {
                          description
                            "Traffic flooding";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable flooding";
                          }  // container disable
    
                          container unknown-unicast {
                            description
                              "Traffic flooding unknown unicast";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable Unknown Unicast flooding";
                            }  // container disable
                          }  // container unknown-unicast
                        }  // container flooding
    
                        container igmp {
                          description
                            "IGMP protocol";
                          container snooping {
                            description
                              "Set the snooping profile";
                            leaf profile {
                              type xr:Cisco-ios-xr-string {
                                length "1..32";
                              }
                              description
                                "Attach an IGMP profile";
                            }
                          }  // container snooping
                        }  // container igmp
    
                        container ip-source-guard {
                          presence
                            "Indicates a ip-source-guard node is configured.";
                          description
                            "IP Source Guard";
                          container logging {
                            presence
                              "Indicates a logging node is configured.";
                            description
                              "Enable Logging";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "disable logging";
                            }  // container disable
                          }  // container logging
    
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable IP Source Guard";
                          }  // container disable
                        }  // container ip-source-guard
    
                        container mac {
                          description
                            "MAC configuration commands";
                          container aging {
                            if-feature l2vpn_is_cli_supported;
                            description
                              "MAC-Aging configuration commands";
                            leaf time {
                              type uint32 {
                                range
                                  "300..30000";
                              }
                              description
                                "Mac aging";
                            }
    
                            container type {
                              description
                                "MAC address aging type";
                              container absolute {
                                presence
                                  "Indicates a absolute node is configured.";
                                description
                                  "Absolute aging type";
                              }  // container absolute
    
                              container inactivity {
                                must
                                  "not(../absolute)";
                                presence
                                  "Indicates a inactivity node is configured.";
                                description
                                  "Inactivity aging type";
                              }  // container inactivity
                            }  // container type
                          }  // container aging
    
                          container learning {
                            presence
                              "Indicates a learning node is configured.";
                            description
                              "MAC learning";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable MAC learning";
                            }  // container disable
                          }  // container learning
    
                          container limit {
                            description
                              "MAC-Limit configuration commands";
                            leaf maximum {
                              type uint32 {
                                range
                                  "0..4294967295";
                              }
                              description
                                "Number of MAC addresses after which MAC limit action is taken";
                            }
    
                            container action {
                              description
                                "MAC address limit enforcement action";
                              container flood {
                                must
                                  "not(../no-flood or ../shutdown or ../none)";
                                presence
                                  "Indicates a flood node is configured.";
                                description
                                  "Stop learning but continue flooding";
                              }  // container flood
    
                              container no-flood {
                                must
                                  "not(../flood or ../shutdown or ../none)";
                                presence
                                  "Indicates a no-flood node is configured.";
                                description
                                  "Stop learning and stop flooding";
                              }  // container no-flood
    
                              container shutdown {
                                must
                                  "not(../flood or ../no-flood or ../none)";
                                presence
                                  "Indicates a shutdown node is configured.";
                                description
                                  "Stop forwarding";
                              }  // container shutdown
    
                              container none {
                                must
                                  "not(../flood or ../no-flood or ../shutdown)";
                                presence
                                  "Indicates a none node is configured.";
                                description
                                  "No action";
                              }  // container none
                            }  // container action
    
                            container notification {
                              description
                                "MAC address limit notification action";
                              container trap {
                                must
                                  "not(../both or ../none or ../syslog)";
                                presence
                                  "Indicates a trap node is configured.";
                                description
                                  "Generate SNMP trap";
                              }  // container trap
    
                              container both {
                                must
                                  "not(../trap or ../none or ../syslog)";
                                presence
                                  "Indicates a both node is configured.";
                                description
                                  "Generate syslog message and SNMP trap";
                              }  // container both
    
                              container none {
                                must
                                  "not(../trap or ../both or ../syslog)";
                                presence
                                  "Indicates a none node is configured.";
                                description
                                  "No notification";
                              }  // container none
    
                              container syslog {
                                must
                                  "not(../trap or ../both or ../none)";
                                presence
                                  "Indicates a syslog node is configured.";
                                description
                                  "Generate syslog message";
                              }  // container syslog
                            }  // container notification
                          }  // container limit
    
                          container port-down {
                            description
                              "Configure action when port goes down";
                            container flush {
                              description
                                "Configure MAC flush when port goes down";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable MAC flush when port goes down";
                              }  // container disable
                            }  // container flush
                          }  // container port-down
    
                          container secure {
                            presence
                              "Indicates a secure node is configured.";
                            description
                              "MAC Secure configuration commands";
                            container logging {
                              presence
                                "Indicates a logging node is configured.";
                              description
                                "Enable Logging";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "disable logging";
                              }  // container disable
                            }  // container logging
    
                            container action {
                              description
                                "MAC secure enforcement action";
                              container none {
                                must
                                  "not(../shutdown)";
                                presence
                                  "Indicates a none node is configured.";
                                description
                                  "Forward the violating packet and allow the MAC to be relearned";
                              }  // container none
    
                              container shutdown {
                                must
                                  "not(../none)";
                                presence
                                  "Indicates a shutdown node is configured.";
                                description
                                  "Shutdown the violating bridge port";
                              }  // container shutdown
    
                              container restrict {
                                must
                                  "not(../none or ../shutdown)";
                                presence
                                  "Indicates a restrict node is configured.";
                                description
                                  "Drop the violating packet and not allow the MAC to be relearned";
                              }  // container restrict
                            }  // container action
    
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable MAC Secure";
                            }  // container disable
    
                            container shutdown-recovery-timeout {
                              description
                                "Recovery-timer to automatically revert shutdown action";
                              container disable {
                                must
                                  "not(../recovery-timer-in-second)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable shutdown recovery timer";
                              }  // container disable
    
                              leaf recovery-timer-in-second {
                                type uint32 {
                                  range
                                    "10..3600";
                                }
                                must
                                  "not(../disable)";
                                description
                                  "Recovery timer in second";
                              }
                            }  // container shutdown-recovery-timeout
                          }  // container secure
                        }  // container mac
    
                        container mld {
                          description
                            "MLD protocol";
                          container snooping {
                            description
                              "Set the snooping profile";
                            leaf profile {
                              type xr:Cisco-ios-xr-string {
                                length "1..32";
                              }
                              description
                                "Attach a MLD profile";
                            }
                          }  // container snooping
                        }  // container mld
    
                        container storm-control {
                          description
                            "Storm Control";
                          container broadcast {
                            description
                              "Broadcast Storm Control";
                            leaf pps {
                              type uint32 {
                                range
                                  "1..160000";
                              }
                              description
                                "Set the storm control pps";
                            }
    
                            leaf kbps {
                              type uint32 {
                                range
                                  "64..1280000";
                              }
                              description
                                "Set the storm control kbps";
                            }
                          }  // container broadcast
    
                          container multicast {
                            description
                              "Multicast Storm Control";
                            leaf pps {
                              type uint32 {
                                range
                                  "1..160000";
                              }
                              description
                                "Set the storm control pps";
                            }
    
                            leaf kbps {
                              type uint32 {
                                range
                                  "64..1280000";
                              }
                              description
                                "Set the storm control kbps";
                            }
                          }  // container multicast
    
                          container unknown-unicast {
                            description
                              "Unknown-unicast Storm Control";
                            leaf pps {
                              type uint32 {
                                range
                                  "1..160000";
                              }
                              description
                                "Set the storm control pps";
                            }
    
                            leaf kbps {
                              type uint32 {
                                range
                                  "64..1280000";
                              }
                              description
                                "Set the storm control kbps";
                            }
                          }  // container unknown-unicast
                        }  // container storm-control
    
                        container split-horizon {
                          description
                            "Configure split-horizon group";
                          container group {
                            description
                              "Configure split-horizon group";
                          }  // container group
                        }  // container split-horizon
    
                        container static-mac-addresses {
                          description
                            "Static MAC address";
                          list static-mac-address {
                            key "mac-address";
                            description
                              "Static MAC address";
                            leaf mac-address {
                              type yang:mac-address;
                              description
                                "Static MAC address";
                            }
                          }  // list static-mac-address
                        }  // container static-mac-addresses
                      }  // list interface
                    }  // container interfaces
    
                    container routed {
                      description
                        "Bridge domain L3 interface";
                      list interface {
                        key "interface-name";
                        description
                          "Assign interface to bridge domain";
                        leaf interface-name {
                          type xr:Interface-name;
                          description
                            "Assign interface to bridge domain";
                        }
    
                        container split-horizon {
                          description
                            "Configure split-horizon group";
                          container group {
                            description
                              "Configure split-horizon group";
                            container core {
                              presence
                                "Indicates a core node is configured.";
                              description
                                "Configure BVI under SHG 1";
                            }  // container core
                          }  // container group
                        }  // container split-horizon
                      }  // list interface
                    }  // container routed
    
                    container shutdown {
                      presence
                        "Indicates a shutdown node is configured.";
                      description
                        "shutdown the Bridge Domain";
                    }  // container shutdown
    
                    container vfis {
                      description
                        "Specify the virtual forwarding interface name";
                      list vfi {
                        key "vfi-name";
                        description
                          "Specify the virtual forwarding interface name";
                        leaf vfi-name {
                          type xr:Cisco-ios-xr-string {
                            length "1..32";
                          }
                          description
                            "Specify the virtual forwarding interface name";
                        }
    
                        leaf vpn-id {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          description
                            "VPN Identifier (VPN ID)";
                        }
    
                        container shutdown {
                          presence
                            "Indicates a shutdown node is configured.";
                          description
                            "shutdown the Virtual Forwarding Interface";
                        }  // container shutdown
    
                        container autodiscovery {
                          description
                            "Enable auto-discovery in this VFI";
                          container bgp {
                            presence
                              "Indicates a bgp node is configured.";
                            description
                              "Enable BGP auto-discovery in this VFI";
                            container rd {
                              description
                                "route distinguisher";
                              container auto {
                                must
                                  "not(../two-byte-as-number or ../four-byte-as-number or ../ipv4-address)";
                                presence
                                  "Indicates a auto node is configured.";
                                description
                                  "Automatic route distinguisher";
                              }  // container auto
    
                              leaf two-byte-as-number {
                                type uint32 {
                                  range
                                    "1..65535";
                                }
                                must
                                  "not(../four-byte-as-number or ../ipv4-address)";
                                description
                                  "Two Byte AS number";
                              }
    
                              leaf two-byte-as-assigned-number {
                                type uint32 {
                                  range
                                    "0..4294967295";
                                }
                                must
                                  "../two-byte-as-number";
                                description
                                  "AS:nn (hex or decimal format)";
                              }
    
                              leaf four-byte-as-number {
                                type uint32 {
                                  range
                                    "65536..4294967295";
                                }
                                must
                                  "not(../two-byte-as-number or ../ipv4-address)";
                                description
                                  "Four Byte AS number";
                              }
    
                              leaf four-byte-as-assigned-number {
                                type uint32 {
                                  range
                                    "0..65535";
                                }
                                must
                                  "../four-byte-as-number";
                                description
                                  "AS:nn (hex or decimal format)";
                              }
    
                              leaf ipv4-address {
                                type inet:ipv4-address-no-zone;
                                must
                                  "not(../two-byte-as-number or ../four-byte-as-number)";
                                description
                                  "IP address";
                              }
    
                              leaf ipv4-address-assigned-number {
                                type uint32 {
                                  range
                                    "0..65535";
                                }
                                must
                                  "../ipv4-address";
                                description
                                  "IP-address:nn (hex or decimal format)";
                              }
                            }  // container rd
    
                            container route-target {
                              description
                                "Route Target";
                              container import {
                                description
                                  "Import Route Target";
                                container two-byte-as-rts {
                                  description
                                    "Two Byte AS Number Route Target";
                                  list two-byte-as-rt {
                                    key "two-byte-as-number assigned-number";
                                    description
                                      "Two Byte AS Number Route Target";
                                    leaf two-byte-as-number {
                                      type uint32 {
                                        range
                                          "1..65535";
                                      }
                                      description
                                        "Two Byte AS Number";
                                    }
    
                                    leaf assigned-number {
                                      type uint32 {
                                        range
                                          "0..4294967295";
                                      }
                                      description
                                        "AS:nn (hex or decimal format)";
                                    }
                                  }  // list two-byte-as-rt
                                }  // container two-byte-as-rts
    
                                container four-byte-as-rts {
                                  description
                                    "Four Byte AS number Route Target";
                                  list four-byte-as-rt {
                                    key "four-byte-as-number assigned-number";
                                    description
                                      "Four Byte AS number Route Target";
                                    leaf four-byte-as-number {
                                      type uint32 {
                                        range
                                          "65536..4294967295";
                                      }
                                      description
                                        "Four Byte AS number";
                                    }
    
                                    leaf assigned-number {
                                      type uint32 {
                                        range
                                          "0..65535";
                                      }
                                      description
                                        "AS:nn (hex or decimal format)";
                                    }
                                  }  // list four-byte-as-rt
                                }  // container four-byte-as-rts
    
                                container ipv4-address-rts {
                                  description
                                    "IP address Route Target";
                                  list ipv4-address-rt {
                                    key "ipv4-address assigned-number";
                                    description
                                      "IP address";
                                    leaf ipv4-address {
                                      type inet:ipv4-address-no-zone;
                                      description
                                        "IP address";
                                    }
    
                                    leaf assigned-number {
                                      type uint32 {
                                        range
                                          "0..65535";
                                      }
                                      description
                                        "IP-address:nn (hex or decimal format)";
                                    }
                                  }  // list ipv4-address-rt
                                }  // container ipv4-address-rts
                              }  // container import
    
                              container export {
                                description
                                  "Export Route Target";
                                container two-byte-as-rts {
                                  description
                                    "Two Byte AS Number Route Target";
                                  list two-byte-as-rt {
                                    key "two-byte-as-number assigned-number";
                                    description
                                      "Two Byte AS Number Route Target";
                                    leaf two-byte-as-number {
                                      type uint32 {
                                        range
                                          "1..65535";
                                      }
                                      description
                                        "Two Byte AS Number";
                                    }
    
                                    leaf assigned-number {
                                      type uint32 {
                                        range
                                          "0..4294967295";
                                      }
                                      description
                                        "AS:nn (hex or decimal format)";
                                    }
                                  }  // list two-byte-as-rt
                                }  // container two-byte-as-rts
    
                                container four-byte-as-rts {
                                  description
                                    "Four Byte AS number Route Target";
                                  list four-byte-as-rt {
                                    key "four-byte-as-number assigned-number";
                                    description
                                      "Four Byte AS number Route Target";
                                    leaf four-byte-as-number {
                                      type uint32 {
                                        range
                                          "65536..4294967295";
                                      }
                                      description
                                        "Four Byte AS number";
                                    }
    
                                    leaf assigned-number {
                                      type uint32 {
                                        range
                                          "0..65535";
                                      }
                                      description
                                        "AS:nn (hex or decimal format)";
                                    }
                                  }  // list four-byte-as-rt
                                }  // container four-byte-as-rts
    
                                container ipv4-address-rts {
                                  description
                                    "IP address Route Target";
                                  list ipv4-address-rt {
                                    key "ipv4-address assigned-number";
                                    description
                                      "IP address";
                                    leaf ipv4-address {
                                      type inet:ipv4-address-no-zone;
                                      description
                                        "IP address";
                                    }
    
                                    leaf assigned-number {
                                      type uint32 {
                                        range
                                          "0..65535";
                                      }
                                      description
                                        "IP-address:nn (hex or decimal format)";
                                    }
                                  }  // list ipv4-address-rt
                                }  // container ipv4-address-rts
                              }  // container export
    
                              container two-byte-as-rts {
                                description
                                  "Two Byte AS Number Route Target";
                                list two-byte-as-rt {
                                  key "two-byte-as-number assigned-number";
                                  description
                                    "Two Byte AS Number Route Target";
                                  leaf two-byte-as-number {
                                    type uint32 {
                                      range
                                        "1..65535";
                                    }
                                    description
                                      "Two Byte AS Number";
                                  }
    
                                  leaf assigned-number {
                                    type uint32 {
                                      range
                                        "0..4294967295";
                                    }
                                    description
                                      "AS:nn (hex or decimal format)";
                                  }
                                }  // list two-byte-as-rt
                              }  // container two-byte-as-rts
    
                              container four-byte-as-rts {
                                description
                                  "Four Byte AS number Route Target";
                                list four-byte-as-rt {
                                  key "four-byte-as-number assigned-number";
                                  description
                                    "Four Byte AS number Route Target";
                                  leaf four-byte-as-number {
                                    type uint32 {
                                      range
                                        "65536..4294967295";
                                    }
                                    description
                                      "Four Byte AS number";
                                  }
    
                                  leaf assigned-number {
                                    type uint32 {
                                      range
                                        "0..65535";
                                    }
                                    description
                                      "AS:nn (hex or decimal format)";
                                  }
                                }  // list four-byte-as-rt
                              }  // container four-byte-as-rts
    
                              container ipv4-address-rts {
                                description
                                  "IP address Route Target";
                                list ipv4-address-rt {
                                  key "ipv4-address assigned-number";
                                  description
                                    "IP address";
                                  leaf ipv4-address {
                                    type inet:ipv4-address-no-zone;
                                    description
                                      "IP address";
                                  }
    
                                  leaf assigned-number {
                                    type uint32 {
                                      range
                                        "0..65535";
                                    }
                                    description
                                      "IP-address:nn (hex or decimal format)";
                                  }
                                }  // list ipv4-address-rt
                              }  // container ipv4-address-rts
                            }  // container route-target
    
                            container control-word {
                              presence
                                "Indicates a control-word node is configured.";
                              description
                                "Enable control-word for BGP-Autodiscovered PWs for this VFI";
                            }  // container control-word
    
                            container signaling-protocol {
                              description
                                "Enable signaling protocol for this VFI";
                              container bgp {
                                presence
                                  "Indicates a bgp node is configured.";
                                description
                                  "Enable BGP signaling protocol for this VFI";
                                leaf ve-id {
                                  type uint32 {
                                    range
                                      "1..16384";
                                  }
                                  description
                                    "Local Virtual Edge Identifier (VE ID)";
                                }
    
                                leaf ve-range {
                                  if-feature l2vpn_is_cli_supported;
                                  type uint32 {
                                    range
                                      "11..100";
                                  }
                                  description
                                    "Local Virtual Edge Block Configurable Range";
                                }
    
                                container load-balancing {
                                  description
                                    "Load Balancing";
                                  container flow-label {
                                    description
                                      "Flow label based load balancing setting";
                                    container transmit {
                                      must
                                        "not(../receive or ../both)";
                                      presence
                                        "Indicates a transmit node is configured.";
                                      description
                                        "Insert Flow label when transmit ";
                                    }  // container transmit
    
                                    container receive {
                                      must
                                        "not(../transmit or ../both)";
                                      presence
                                        "Indicates a receive node is configured.";
                                      description
                                        "Discard Flow label when receive";
                                    }  // container receive
    
                                    container both {
                                      must
                                        "not(../transmit or ../receive)";
                                      presence
                                        "Indicates a both node is configured.";
                                      description
                                        "Insert/Discard Flow label when transmit/recceive";
                                    }  // container both
    
                                    container static {
                                      must
                                        "../transmit or ../receive or ../both";
                                      presence
                                        "Indicates a static node is configured.";
                                      description
                                        "Set Flow label parameters statically";
                                    }  // container static
                                  }  // container flow-label
                                }  // container load-balancing
                              }  // container bgp
    
                              container ldp {
                                presence
                                  "Indicates a ldp node is configured.";
                                description
                                  "Enable LDP signaling protocol for this VFI";
                                container vpls-id {
                                  if-feature l2vpn_is_cli_supported;
                                  description
                                    "VPLS ID";
                                  leaf two-byte-as-number {
                                    type uint32 {
                                      range
                                        "1..65535";
                                    }
                                    must
                                      "not(../ipv4-address)";
                                    description
                                      "Two Byte AS number";
                                  }
    
                                  leaf two-byte-as-assigned-number {
                                    type uint32 {
                                      range
                                        "0..4294967295";
                                    }
                                    must
                                      "../two-byte-as-number";
                                    description
                                      "AS:nn (hex or decimal format)";
                                  }
    
                                  leaf ipv4-address {
                                    type inet:ipv4-address-no-zone;
                                    must
                                      "not(../two-byte-as-number)";
                                    description
                                      "IP address";
                                  }
    
                                  leaf ipv4-address-assigned-number {
                                    type uint32 {
                                      range
                                        "0..32767";
                                    }
                                    must
                                      "../ipv4-address";
                                    description
                                      "IP-address:nn (hex or decimal format)";
                                  }
    
                                  container load-balancing {
                                    description
                                      "Load Balancing";
                                    container flow-label {
                                      description
                                        "Flow label based load balancing setting";
                                      container transmit {
                                        must
                                          "not(../receive or ../both)";
                                        presence
                                          "Indicates a transmit node is configured.";
                                        description
                                          "Insert Flow label when transmit ";
                                      }  // container transmit
    
                                      container receive {
                                        must
                                          "not(../transmit or ../both)";
                                        presence
                                          "Indicates a receive node is configured.";
                                        description
                                          "Discard Flow label when receive";
                                      }  // container receive
    
                                      container both {
                                        must
                                          "not(../transmit or ../receive)";
                                        presence
                                          "Indicates a both node is configured.";
                                        description
                                          "Insert/Discard Flow label when transmit/recceive";
                                      }  // container both
    
                                      container static {
                                        must
                                          "../transmit or ../receive or ../both";
                                        presence
                                          "Indicates a static node is configured.";
                                        description
                                          "Set Flow label parameters statically";
                                      }  // container static
                                    }  // container flow-label
                                  }  // container load-balancing
                                }  // container vpls-id
                              }  // container ldp
                            }  // container signaling-protocol
    
                            leaf table-policy {
                              type xr:Route-policy-name;
                              description
                                "Configure policy for installation of forwarding data to L2FIB";
                            }
    
                            container route-policy {
                              description
                                "Apply route policy";
                              leaf export {
                                type xr:Route-policy-name;
                                description
                                  "Export route policy";
                              }
                            }  // container route-policy
                          }  // container bgp
                        }  // container autodiscovery
    
                        container multicast {
                          if-feature l2vpn_pw_p2mp_supported;
                          description
                            "Point to multi-point pseudowire";
                          container p2mp {
                            presence
                              "Indicates a p2mp node is configured.";
                            description
                              "Enable point to multi-point pseudowire in this VFI";
                            container transport {
                              description
                                "Transport type selection";
                              container rsvp-te {
                                presence
                                  "Indicates a rsvp-te node is configured.";
                                description
                                  "Use RSVP-TE as transport";
                                container attribute-set {
                                  description
                                    "TE attribute set parameters";
                                  leaf p2mp-te {
                                    type xr:Cisco-ios-xr-string {
                                      length
                                        "1..64";
                                    }
                                    description
                                      "TE tunnel attribute set name";
                                  }
                                }  // container attribute-set
                              }  // container rsvp-te
                            }  // container transport
    
                            container signaling-protocol {
                              description
                                "Signaling protocol selection";
                              container bgp {
                                presence
                                  "Indicates a bgp node is configured.";
                                description
                                  "Use BGP for signaling";
                              }  // container bgp
                            }  // container signaling-protocol
                          }  // container p2mp
                        }  // container multicast
    
                        container neighbors {
                          description
                            "Specify the peer to cross connect";
                          list neighbor {
                            key "address pw-id";
                            description
                              "Specify the peer to cross connect";
                            leaf address {
                              type inet:ipv4-address-no-zone;
                              description
                                "IPv4 address of the peer";
                            }
    
                            leaf pw-id {
                              type uint32 {
                                range
                                  "1..4294967295";
                              }
                              description
                                "Specify the pseudowire id";
                            }
    
                            container static-mac-addresses {
                              description
                                "Static MAC address";
                              list static-mac-address {
                                key "mac-address";
                                description
                                  "Static MAC address";
                                leaf mac-address {
                                  type yang:mac-address;
                                  description
                                    "Static MAC address";
                                }
                              }  // list static-mac-address
                            }  // container static-mac-addresses
    
                            container mpls {
                              description
                                "MPLS L2VPN PW command";
                              container static {
                                description
                                  "MPLS L2VPN static settings";
                                container label {
                                  description
                                    "MPLS L2VPN static labels";
                                  leaf local {
                                    type uint32 {
                                      range
                                        "16..1048575";
                                    }
                                    must
                                      "../remote";
                                    description
                                      "Local pseudowire label";
                                  }
    
                                  leaf remote {
                                    type uint32 {
                                      range
                                        "16..1048575";
                                    }
                                    must
                                      "../local";
                                    description
                                      "Remote pseudowire label";
                                  }
                                }  // container label
                              }  // container static
                            }  // container mpls
    
                            leaf pw-class {
                              type xr:Cisco-ios-xr-string {
                                length "1..32";
                              }
                              description
                                "PW class template name to use for this pseudowire";
                            }
    
                            container dhcp {
                              presence
                                "Indicates a dhcp node is configured.";
                              description
                                "DHCP protocol";
                              container ipv4 {
                                description
                                  "IP Version 4";
                                container snoop {
                                  presence
                                    "Indicates a snoop node is configured.";
                                  description
                                    "Set the snooping profile";
                                  leaf profile {
                                    type xr:Cisco-ios-xr-string {
                                      length
                                        "1..32";
                                    }
                                    description
                                      "Attach a DHCP profile";
                                  }
                                }  // container snoop
    
                                container none {
                                  presence
                                    "Indicates a none node is configured.";
                                  description
                                    "Disable DHCP snooping";
                                }  // container none
                              }  // container ipv4
                            }  // container dhcp
    
                            container igmp {
                              description
                                "IGMP protocol";
                              container snooping {
                                description
                                  "Set the snooping profile";
                                leaf profile {
                                  type xr:Cisco-ios-xr-string {
                                    length
                                      "1..32";
                                  }
                                  description
                                    "Attach an IGMP profile";
                                }
                              }  // container snooping
                            }  // container igmp
    
                            container mld {
                              description
                                "MLD protocol";
                              container snooping {
                                description
                                  "Set the snooping profile";
                                leaf profile {
                                  type xr:Cisco-ios-xr-string {
                                    length
                                      "1..32";
                                  }
                                  description
                                    "Attach a MLD profile";
                                }
                              }  // container snooping
                            }  // container mld
                          }  // list neighbor
                        }  // container neighbors
                      }  // list vfi
                    }  // container vfis
    
                    container access-vfis {
                      description
                        "Specify the access virtual forwarding interface name";
                      list access-vfi {
                        key "access-vfi-name";
                        description
                          "Specify the access virtual forwarding interface name";
                        leaf access-vfi-name {
                          type xr:Cisco-ios-xr-string {
                            length "1..32";
                          }
                          description
                            "Specify the access virtual forwarding interface name";
                        }
    
                        container shutdown {
                          presence
                            "Indicates a shutdown node is configured.";
                          description
                            "shutdown the Access Virtual Forwarding Interface";
                        }  // container shutdown
    
                        container neighbors {
                          description
                            "Specify the peer to cross connect";
                          list neighbor {
                            key "address pw-id";
                            description
                              "Specify the peer to cross connect";
                            leaf address {
                              type inet:ipv4-address-no-zone;
                              description
                                "IPv4 address of the peer";
                            }
    
                            leaf pw-id {
                              type uint32 {
                                range
                                  "1..4294967295";
                              }
                              description
                                "Specify the pseudowire id";
                            }
    
                            container static-mac-addresses {
                              description
                                "Static MAC address";
                              list static-mac-address {
                                key "mac-address";
                                description
                                  "Static MAC address";
                                leaf mac-address {
                                  type yang:mac-address;
                                  description
                                    "Static MAC address";
                                }
                              }  // list static-mac-address
                            }  // container static-mac-addresses
    
                            leaf pw-class {
                              type xr:Cisco-ios-xr-string {
                                length "1..32";
                              }
                              description
                                "PW class template name to use for this pseudowire";
                            }
                          }  // list neighbor
                        }  // container neighbors
                      }  // list access-vfi
                    }  // container access-vfis
    
                    container mac {
                      description
                        "MAC configuration commands";
                      container aging {
                        if-feature l2vpn_is_cli_supported;
                        description
                          "MAC-Aging configuration commands";
                        leaf time {
                          type uint32 {
                            range "300..30000";
                          }
                          description
                            "Mac aging";
                        }
    
                        container type {
                          description
                            "MAC address aging type";
                          container absolute {
                            presence
                              "Indicates a absolute node is configured.";
                            description
                              "Absolute aging type";
                          }  // container absolute
                        }  // container type
    
                        container static-addresses {
                          description
                            "Static MAC address for filtering";
                          list static-address {
                            must "drop";
                            key "mac-address";
                            description
                              "Static MAC address for filtering";
                            leaf mac-address {
                              type yang:mac-address;
                              description
                                "Static MAC address for filtering";
                            }
    
                            container drop {
                              presence
                                "Indicates a drop node is configured.";
                              description
                                "Drop matching packets";
                            }  // container drop
                          }  // list static-address
                        }  // container static-addresses
    
                        container learning {
                          description
                            "MAC learning";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable MAC learning";
                          }  // container disable
                        }  // container learning
    
                        container withdraw {
                          description
                            "MAC withdraw";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable MAC withdraw";
                          }  // container disable
    
                          container access-pw {
                            description
                              "MAC withdraw sent to Access PWs ";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable MAC withdraw on Access PW";
                            }  // container disable
                          }  // container access-pw
    
                          container relay {
                            presence
                              "Indicates a relay node is configured.";
                            description
                              "MAC withdraw relayed to Access PWs ";
                          }  // container relay
    
                          container state-down {
                            must
                              "not(../optimize)";
                            presence
                              "Indicates a state-down node is configured.";
                            description
                              "MAC withdraw sent on bridge port down";
                          }  // container state-down
    
                          container optimize {
                            must
                              "not(../state-down)";
                            presence
                              "Indicates a optimize node is configured.";
                            description
                              "Optimized LDP MAC withdraw (when port goes down)";
                          }  // container optimize
                        }  // container withdraw
    
                        container limit {
                          description
                            "MAC-Limit configuration commands";
                          leaf maximum {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Number of MAC addresses after which MAC limit action is taken";
                          }
    
                          container action {
                            description
                              "MAC address limit enforcement action";
                            container flood {
                              must
                                "not(../no-flood or ../shutdown)";
                              presence
                                "Indicates a flood node is configured.";
                              description
                                "Stop learning but continue flooding";
                            }  // container flood
    
                            container no-flood {
                              must
                                "not(../flood or ../shutdown)";
                              presence
                                "Indicates a no-flood node is configured.";
                              description
                                "Stop learning and stop flooding";
                            }  // container no-flood
    
                            container shutdown {
                              must
                                "not(../flood or ../no-flood)";
                              presence
                                "Indicates a shutdown node is configured.";
                              description
                                "Stop forwarding";
                            }  // container shutdown
                          }  // container action
    
                          container notification {
                            description
                              "MAC address limit notification action";
                            container trap {
                              must
                                "not(../both or ../none)";
                              presence
                                "Indicates a trap node is configured.";
                              description
                                "Generate SNMP trap";
                            }  // container trap
    
                            container both {
                              must
                                "not(../trap or ../none)";
                              presence
                                "Indicates a both node is configured.";
                              description
                                "Generate syslog message and SNMP trap";
                            }  // container both
    
                            container none {
                              must
                                "not(../trap or ../both)";
                              presence
                                "Indicates a none node is configured.";
                              description
                                "No notification";
                            }  // container none
                          }  // container notification
                        }  // container limit
    
                        container port-down {
                          description
                            "Configure action when port goes down";
                          container flush {
                            description
                              "Configure MAC flush when port goes down";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable MAC flush when port goes down";
                            }  // container disable
                          }  // container flush
                        }  // container port-down
    
                        container secure {
                          presence
                            "Indicates a secure node is configured.";
                          description
                            "MAC Secure configuration commands";
                          container logging {
                            presence
                              "Indicates a logging node is configured.";
                            description
                              "Enable Logging";
                          }  // container logging
    
                          container threshold {
                            presence
                              "Indicates a threshold node is configured.";
                            description
                              "Threshold based mac secure";
                          }  // container threshold
    
                          container action {
                            description
                              "MAC secure enforcement action";
                            container none {
                              must
                                "not(../shutdown)";
                              presence
                                "Indicates a none node is configured.";
                              description
                                "Forward the violating packet and allow the MAC to be relearned";
                            }  // container none
    
                            container shutdown {
                              must
                                "not(../none)";
                              presence
                                "Indicates a shutdown node is configured.";
                              description
                                "Shutdown the violating bridge port";
                            }  // container shutdown
                          }  // container action
    
                          leaf shutdown-recovery-timeout {
                            type uint32 {
                              range "10..3600";
                            }
                            description
                              "Recovery-timer to automatically revert shutdown action";
                          }
                        }  // container secure
                      }  // container aging
                    }  // container mac
    
                    container access-evis {
                      description
                        "Specify the virtual access EVI";
                      list access-evi {
                        key "access-evi-id";
                        description
                          "Specify the virtual access EVI";
                        leaf access-evi-id {
                          type uint32 {
                            range "1..65534";
                          }
                          description
                            "Specify the virtual access EVI";
                        }
                      }  // list access-evi
                    }  // container access-evis
    
                    container neighbors {
                      description
                        "Specify the peer to cross connect";
                      list neighbor {
                        key "address pw-id";
                        description
                          "Specify the peer to cross connect";
                        leaf address {
                          type inet:ipv4-address-no-zone;
                          description
                            "IPv4 address of the peer";
                        }
    
                        leaf pw-id {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          description
                            "Specify the pseudowire id";
                        }
    
                        container flooding {
                          if-feature l2vpn_is_cli_supported;
                          presence
                            "Indicates a flooding node is configured.";
                          description
                            "Traffic flooding";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable flooding";
                          }  // container disable
    
                          container unknown-unicast {
                            presence
                              "Indicates a unknown-unicast node is configured.";
                            description
                              "Traffic flooding unknown unicast";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable Unknow Unicast flooding";
                            }  // container disable
                          }  // container unknown-unicast
    
                          container static-mac-addresses {
                            description
                              "Static MAC address";
                            list static-mac-address {
                              key "mac-address";
                              description
                                "Static MAC address";
                              leaf mac-address {
                                type yang:mac-address;
                                description
                                  "Static MAC address";
                              }
                            }  // list static-mac-address
                          }  // container static-mac-addresses
    
                          container mpls {
                            description
                              "MPLS L2VPN PW command";
                            container static {
                              description
                                "MPLS L2VPN static settings";
                              container label {
                                description
                                  "MPLS L2VPN static labels";
                                leaf local {
                                  type uint32 {
                                    range
                                      "16..1048575";
                                  }
                                  must
                                    "../remote";
                                  description
                                    "Local pseudowire label";
                                }
    
                                leaf remote {
                                  type uint32 {
                                    range
                                      "16..1048575";
                                  }
                                  must
                                    "../local";
                                  description
                                    "Remote pseudowire label";
                                }
                              }  // container label
                            }  // container static
                          }  // container mpls
    
                          leaf pw-class {
                            type xr:Cisco-ios-xr-string {
                              length "1..32";
                            }
                            description
                              "PW class template name to use for this pseudowire";
                          }
    
                          container split-horizon {
                            description
                              "Configure split horizon group";
                            container group {
                              presence
                                "Indicates a group node is configured.";
                              description
                                "Configure split horizon group";
                            }  // container group
                          }  // container split-horizon
    
                          container storm-control {
                            description
                              "Storm Control";
                            container broadcast {
                              description
                                "Broadcast Storm Control";
                              leaf pps {
                                type uint32 {
                                  range
                                    "1..160000";
                                }
                                description
                                  "Set the storm control pps";
                              }
    
                              leaf kbps {
                                type uint32 {
                                  range
                                    "64..1280000";
                                }
                                description
                                  "Set the storm control kbps";
                              }
                            }  // container broadcast
    
                            container multicast {
                              description
                                "Multicast Storm Control";
                              leaf pps {
                                type uint32 {
                                  range
                                    "1..160000";
                                }
                                description
                                  "Set the storm control pps";
                              }
    
                              leaf kbps {
                                type uint32 {
                                  range
                                    "64..1280000";
                                }
                                description
                                  "Set the storm control kbps";
                              }
                            }  // container multicast
    
                            container unknown-unicast {
                              description
                                "Unknown-unicast Storm Control";
                              leaf pps {
                                type uint32 {
                                  range
                                    "1..160000";
                                }
                                description
                                  "Set the storm control pps";
                              }
    
                              leaf kbps {
                                type uint32 {
                                  range
                                    "64..1280000";
                                }
                                description
                                  "Set the storm control kbps";
                              }
                            }  // container unknown-unicast
                          }  // container storm-control
    
                          container mac {
                            description
                              "MAC configuration commands";
                            container aging {
                              description
                                "MAC-Aging configuration commands";
                              leaf time {
                                type uint32 {
                                  range
                                    "300..30000";
                                }
                                description
                                  "Mac aging";
                              }
    
                              container type {
                                description
                                  "MAC address aging type";
                                container absolute {
                                  must
                                    "not(../inactivity)";
                                  presence
                                    "Indicates a absolute node is configured.";
                                  description
                                    "Absolute aging type";
                                }  // container absolute
    
                                container inactivity {
                                  must
                                    "not(../absolute)";
                                  presence
                                    "Indicates a inactivity node is configured.";
                                  description
                                    "Inactivity aging type";
                                }  // container inactivity
                              }  // container type
                            }  // container aging
    
                            container learning {
                              presence
                                "Indicates a learning node is configured.";
                              description
                                "MAC learning";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable MAC learning";
                              }  // container disable
                            }  // container learning
    
                            container limit {
                              description
                                "MAC-Limit configuration commands";
                              leaf maximum {
                                type uint32 {
                                  range
                                    "0..4294967295";
                                }
                                description
                                  "Number of MAC addresses after which MAC limit action is taken";
                              }
    
                              container action {
                                description
                                  "MAC address limit enforcement action";
                                container flood {
                                  must
                                    "not(../no-flood or ../shutdown
    or ../none)";
                                  presence
                                    "Indicates a flood node is configured.";
                                  description
                                    "Stop learning but continue flooding";
                                }  // container flood
    
                                container no-flood {
                                  must
                                    "not(../flood or ../shutdown
    or ../none)";
                                  presence
                                    "Indicates a no-flood node is configured.";
                                  description
                                    "Stop learning and stop flooding";
                                }  // container no-flood
    
                                container shutdown {
                                  must
                                    "not(../flood or ../no-flood
    or ../none)";
                                  presence
                                    "Indicates a shutdown node is configured.";
                                  description
                                    "Stop forwarding";
                                }  // container shutdown
    
                                container none {
                                  must
                                    "not(../flood or ../no-flood
    or ../shutdown)";
                                  presence
                                    "Indicates a none node is configured.";
                                  description
                                    "No action";
                                }  // container none
                              }  // container action
    
                              container notification {
                                description
                                  "MAC address limit notification action";
                                container trap {
                                  must
                                    "not(../both or ../none
    or ../syslog)";
                                  presence
                                    "Indicates a trap node is configured.";
                                  description
                                    "Generate SNMP trap";
                                }  // container trap
    
                                container both {
                                  must
                                    "not(../trap or ../none
    or ../syslog)";
                                  presence
                                    "Indicates a both node is configured.";
                                  description
                                    "Generate syslog message and SNMP trap";
                                }  // container both
    
                                container none {
                                  must
                                    "not(../trap or ../both
    or ../syslog)";
                                  presence
                                    "Indicates a none node is configured.";
                                  description
                                    "No notification";
                                }  // container none
    
                                container syslog {
                                  must
                                    "not(../trap or ../both
    or ../none)";
                                  presence
                                    "Indicates a syslog node is configured.";
                                  description
                                    "Generate syslog message";
                                }  // container syslog
                              }  // container notification
                            }  // container limit
    
                            container port-down {
                              description
                                "Configure action when port goes down";
                              container flush {
                                presence
                                  "Indicates a flush node is configured.";
                                description
                                  "Configure MAC flush when port goes down";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable MAC flush when port goes down";
                                }  // container disable
                              }  // container flush
                            }  // container port-down
    
                            container secure {
                              presence
                                "Indicates a secure node is configured.";
                              description
                                "MAC Secure configuration commands";
                              container logging {
                                presence
                                  "Indicates a logging node is configured.";
                                description
                                  "Logging";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "disable logging";
                                }  // container disable
                              }  // container logging
    
                              container action {
                                description
                                  "MAC secure enforcement action";
                                container none {
                                  must
                                    "not(../shutdown or ../restrict)";
                                  presence
                                    "Indicates a none node is configured.";
                                  description
                                    "Forward the violating packet and allow the MAC to be relearned";
                                }  // container none
    
                                container shutdown {
                                  must
                                    "not(../none or ../restrict)";
                                  presence
                                    "Indicates a shutdown node is configured.";
                                  description
                                    "Shutdown the violating bridge port";
                                }  // container shutdown
    
                                container restrict {
                                  must
                                    "not(../none or ../shutdown)";
                                  presence
                                    "Indicates a restrict node is configured.";
                                  description
                                    "Drop the violating packet and not allow the MAC to be relearned";
                                }  // container restrict
                              }  // container action
    
                              container shutdown-recovery-timeout {
                                description
                                  "Recovery-timer to automatically revert shutdown action";
                                container disable {
                                  must
                                    "not(../recovery-timer-in-second)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable shutdown recovery timer";
                                }  // container disable
    
                                leaf recovery-timer-in-second {
                                  type uint32 {
                                    range
                                      "10..3600";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Recovery timer in second";
                                }
                              }  // container shutdown-recovery-timeout
    
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable MAC Secure";
                              }  // container disable
                            }  // container secure
                          }  // container mac
    
                          container dhcp {
                            presence
                              "Indicates a dhcp node is configured.";
                            description
                              "DHCP protocol";
                            container ipv4 {
                              description
                                "IP Version 4";
                              container snoop {
                                presence
                                  "Indicates a snoop node is configured.";
                                description
                                  "Set the snooping profile";
                                leaf profile {
                                  type xr:Cisco-ios-xr-string {
                                    length
                                      "1..32";
                                  }
                                  description
                                    "Attach a DHCP profile";
                                }
                              }  // container snoop
    
                              container none {
                                presence
                                  "Indicates a none node is configured.";
                                description
                                  "Disable DHCP snooping";
                              }  // container none
                            }  // container ipv4
                          }  // container dhcp
    
                          container igmp {
                            description
                              "IGMP protocol";
                            container snooping {
                              description
                                "Set the snooping profile";
                              leaf profile {
                                type xr:Cisco-ios-xr-string {
                                  length "1..32";
                                }
                                description
                                  "Attach an IGMP profile";
                              }
                            }  // container snooping
                          }  // container igmp
    
                          container mld {
                            description
                              "MLD protocol";
                            container snooping {
                              description
                                "Set the snooping profile";
                              leaf profile {
                                type xr:Cisco-ios-xr-string {
                                  length "1..32";
                                }
                                description
                                  "Attach a MLD profile";
                              }
                            }  // container snooping
                          }  // container mld
                        }  // container flooding
    
                        container backup {
                          description
                            "Backup pseudowire for the access pseudowire";
                          container neighbors {
                            description
                              "Specify the peer to cross connect";
                            list neighbor {
                              key "address pw-id";
                              description
                                "Specify the peer to cross connect";
                              leaf address {
                                type inet:ipv4-address-no-zone;
                                description
                                  "IPv4 address of the peer";
                              }
    
                              leaf pw-id {
                                type uint32 {
                                  range
                                    "1..4294967295";
                                }
                                description
                                  "Specify the pseudowire id";
                              }
    
                              leaf pw-class {
                                type xr:Cisco-ios-xr-string {
                                  length "1..32";
                                }
                                description
                                  "PW class template name to use for this pseudowire";
                              }
                            }  // list neighbor
                          }  // container neighbors
                        }  // container backup
                      }  // list neighbor
    
                      container evpn {
                        description
                          "Specify the Ethernet VPN";
                        list evi {
                          key "vpn-id target";
                          description
                            "Ethernet VPN Identifier";
                          leaf vpn-id {
                            type uint32 {
                              range "1..65534";
                            }
                            description
                              "Configure EVPN Instance VPN ID";
                          }
    
                          leaf target {
                            type uint32 {
                              range
                                "1..16777215";
                            }
                            description
                              "Specify remote attachment circuit identifier";
                          }
                        }  // list evi
                      }  // container evpn
                    }  // container neighbors
    
                    leaf description {
                      if-feature l2vpn_is_cli_supported;
                      type string {
                        length "1..64";
                      }
                      description
                        "Description for Bridge-Domain";
                    }
    
                    container efp-visibility {
                      presence
                        "Indicates a efp-visibility node is configured.";
                      description
                        "Enable multicast for multiple VLANs in the bridge of a BVI";
                    }  // container efp-visibility
    
                    container etree {
                      presence
                        "Indicates a etree node is configured.";
                      description
                        "Configure Bridge Domain  EVPN E-Tree";
                      container leaf {
                        presence
                          "Indicates a leaf node is configured.";
                        description
                          "Designate Bridge Domain as EVPN E-Tree Leaf";
                      }  // container leaf
                    }  // container etree
    
                    container member {
                      description
                        "Bridge domain member";
                      container vnis {
                        description
                          "Assign VxLAN Network Identifier to bridge domain";
                        list vni {
                          key "vni-id";
                          description
                            "Assign VxLAN Network Identifier to bridge domain";
                          leaf vni-id {
                            type uint32 {
                              range
                                "1..16777215";
                            }
                            description
                              "Assign VxLAN Network Identifier to bridge domain";
                          }
    
                          container static-mac-addresses {
                            description
                              "Static MAC address";
                            list static-mac-address {
                              key "mac-address";
                              description
                                "Static MAC address";
                              leaf mac-address {
                                type yang:mac-address;
                                description
                                  "Static MAC address";
                              }
    
                              leaf next-hop {
                                type inet:ipv4-address-no-zone;
                                description
                                  "Specify the next hop IP address";
                              }
                            }  // list static-mac-address
                          }  // container static-mac-addresses
                        }  // list vni
                      }  // container vnis
                    }  // container member
    
                    container pbb {
                      description
                        "Configure Provider Backbone Bridge";
                      container core {
                        presence
                          "Indicates a core node is configured.";
                        description
                          "PBB core bridge domain";
                        container rewrite {
                          description
                            "Set the tag rewriting policy";
                          container ingress {
                            description
                              "Set the tag rewriting policy";
                            container tag {
                              description
                                "Set the tag rewriting policy";
                              container push {
                                description
                                  "Push one or more tags";
                                leaf dot1ad {
                                  type uint32 {
                                    range
                                      "1..4094";
                                  }
                                  description
                                    "Push a Dot1ad tag";
                                }
                              }  // container push
                            }  // container tag
                          }  // container ingress
                        }  // container rewrite
    
                        container mac {
                          description
                            "MAC configuration commands";
                          container aging {
                            description
                              "MAC-Aging configuration commands";
                            leaf time {
                              type uint32 {
                                range
                                  "300..30000";
                              }
                              description
                                "Mac aging";
                            }
    
                            container type {
                              description
                                "MAC address aging type";
                              container absolute {
                                must
                                  "not(../inactivity)";
                                presence
                                  "Indicates a absolute node is configured.";
                                description
                                  "Absolute aging type";
                              }  // container absolute
    
                              container inactivity {
                                must
                                  "not(../absolute)";
                                presence
                                  "Indicates a inactivity node is configured.";
                                description
                                  "Inactivity aging type";
                              }  // container inactivity
                            }  // container type
                          }  // container aging
    
                          container learning {
                            presence
                              "Indicates a learning node is configured.";
                            description
                              "MAC learning";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable MAC learning";
                            }  // container disable
                          }  // container learning
                        }  // container mac
    
                        container mmrp-flood-optimization {
                          presence
                            "Indicates a mmrp-flood-optimization node is configured.";
                          description
                            "Enable flood optimization for MMRP";
                        }  // container mmrp-flood-optimization
    
                        container evis {
                          description
                            "Ethernet VPN identifier";
                          list evi {
                            key "vpn-id";
                            description
                              "Ethernet VPN identifier";
                            leaf vpn-id {
                              type uint32 {
                                range "1..65534";
                              }
                              description
                                "Ethernet VPN identifier";
                            }
                          }  // list evi
                        }  // container evis
                      }  // container core
    
                      container edge {
                        description
                          "PBB edge bridge domain";
                        list i-sid {
                          key "instance-id core-bridge-name";
                          description
                            "Configure Service Instance Identifier";
                          leaf instance-id {
                            type uint32 {
                              range
                                "256..16777214";
                            }
                            description
                              "Configure Service Instance Identifier";
                          }
    
                          leaf core-bridge-name {
                            type xr:Cisco-ios-xr-string {
                              length "1..27";
                            }
                            description
                              "Specifiy PBB core bridge domain to associate with";
                          }
    
                          container static-mac-addresses {
                            description
                              "Static customer MAC address";
                            list static-mac-address {
                              key "mac-address";
                              description
                                "Static customer MAC address";
                              leaf mac-address {
                                type yang:mac-address;
                                description
                                  "Static customer MAC address";
                              }
    
                              leaf bmac {
                                type yang:mac-address;
                                mandatory true;
                                description
                                  "Static backbone MAC address to map with";
                              }
                            }  // list static-mac-address
                          }  // container static-mac-addresses
    
                          leaf unknown-unicast-bmac {
                            type yang:mac-address;
                            description
                              "Unknown Unicast backbone MAC address";
                          }
    
                          container split-horizon {
                            description
                              "Configure split horizon option";
                            container group {
                              description
                                "Configure split horizon group option";
                              container vfi {
                                description
                                  "Configure split horizon group vfi option";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Configure split horizon group vfi disable";
                                }  // container disable
                              }  // container vfi
                            }  // container group
                          }  // container split-horizon
    
                          container mac {
                            description
                              "MAC configuration commands";
                            container aging {
                              description
                                "MAC-Aging configuration commands";
                              leaf time {
                                type uint32 {
                                  range
                                    "300..30000";
                                }
                                description
                                  "Mac aging";
                              }
    
                              container type {
                                description
                                  "MAC address aging type";
                                container absolute {
                                  must
                                    "not(../inactivity)";
                                  presence
                                    "Indicates a absolute node is configured.";
                                  description
                                    "Absolute aging type";
                                }  // container absolute
    
                                container inactivity {
                                  must
                                    "not(../absolute)";
                                  presence
                                    "Indicates a inactivity node is configured.";
                                  description
                                    "Inactivity aging type";
                                }  // container inactivity
                              }  // container type
                            }  // container aging
    
                            container learning {
                              presence
                                "Indicates a learning node is configured.";
                              description
                                "MAC learning";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable MAC learning";
                              }  // container disable
                            }  // container learning
    
                            container limit {
                              description
                                "MAC-Limit configuration commands";
                              leaf maximum {
                                type uint32 {
                                  range
                                    "0..4294967295";
                                }
                                description
                                  "Number of MAC addresses after which MAC limit action is taken";
                              }
    
                              container action {
                                description
                                  "MAC address limit enforcement action";
                                container flood {
                                  must
                                    "not(../no-flood or ../shutdown
    or ../none)";
                                  presence
                                    "Indicates a flood node is configured.";
                                  description
                                    "Stop learning but continue flooding";
                                }  // container flood
    
                                container no-flood {
                                  must
                                    "not(../flood or ../shutdown
    or ../none)";
                                  presence
                                    "Indicates a no-flood node is configured.";
                                  description
                                    "Stop learning and stop flooding";
                                }  // container no-flood
    
                                container shutdown {
                                  must
                                    "not(../flood or ../no-flood
    or ../none)";
                                  presence
                                    "Indicates a shutdown node is configured.";
                                  description
                                    "Stop forwarding";
                                }  // container shutdown
    
                                container none {
                                  must
                                    "not(../flood or ../no-flood
    or ../shutdown)";
                                  presence
                                    "Indicates a none node is configured.";
                                  description
                                    "No action";
                                }  // container none
                              }  // container action
    
                              container notification {
                                description
                                  "MAC address limit notification action";
                                container trap {
                                  must
                                    "not(../both or ../none
    or ../syslog)";
                                  presence
                                    "Indicates a trap node is configured.";
                                  description
                                    "Generate SNMP trap";
                                }  // container trap
    
                                container both {
                                  must
                                    "not(../trap or ../none
    or ../syslog)";
                                  presence
                                    "Indicates a both node is configured.";
                                  description
                                    "Generate syslog message and SNMP trap";
                                }  // container both
    
                                container none {
                                  must
                                    "not(../trap or ../both
    or ../syslog)";
                                  presence
                                    "Indicates a none node is configured.";
                                  description
                                    "No notification";
                                }  // container none
    
                                container syslog {
                                  must
                                    "not(../trap or ../both
    or ../none)";
                                  presence
                                    "Indicates a syslog node is configured.";
                                  description
                                    "Generate syslog message";
                                }  // container syslog
                              }  // container notification
                            }  // container limit
    
                            container secure {
                              presence
                                "Indicates a secure node is configured.";
                              description
                                "MAC Secure configuration commands";
                              container logging {
                                presence
                                  "Indicates a logging node is configured.";
                                description
                                  "Logging";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "disable logging";
                                }  // container disable
                              }  // container logging
    
                              container action {
                                description
                                  "MAC secure enforcement action";
                                container none {
                                  must
                                    "not(../shutdown or ../restrict)";
                                  presence
                                    "Indicates a none node is configured.";
                                  description
                                    "Forward the violating packet and allow the MAC to be relearned";
                                }  // container none
    
                                container shutdown {
                                  must
                                    "not(../none or ../restrict)";
                                  presence
                                    "Indicates a shutdown node is configured.";
                                  description
                                    "Shutdown the violating bridge port";
                                }  // container shutdown
    
                                container restrict {
                                  must
                                    "not(../none or ../shutdown)";
                                  presence
                                    "Indicates a restrict node is configured.";
                                  description
                                    "Drop the violating packet and not allow the MAC to be relearned";
                                }  // container restrict
                              }  // container action
    
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable MAC Secure";
                              }  // container disable
    
                              container accept-shutdown {
                                presence
                                  "Indicates a accept-shutdown node is configured.";
                                description
                                  "Accept shutdown action to be taken due to MAC violation";
                              }  // container accept-shutdown
                            }  // container secure
                          }  // container mac
    
                          container dhcp {
                            presence
                              "Indicates a dhcp node is configured.";
                            description
                              "DHCP protocol";
                            container ipv4 {
                              description
                                "IP Version 4";
                              container snoop {
                                presence
                                  "Indicates a snoop node is configured.";
                                description
                                  "Set the snooping profile";
                                leaf profile {
                                  type xr:Cisco-ios-xr-string {
                                    length
                                      "1..32";
                                  }
                                  description
                                    "Attach a DHCP profile";
                                }
                              }  // container snoop
    
                              container none {
                                presence
                                  "Indicates a none node is configured.";
                                description
                                  "Disable DHCP snooping";
                              }  // container none
                            }  // container ipv4
                          }  // container dhcp
    
                          container igmp {
                            description
                              "IGMP protocol";
                            container snooping {
                              description
                                "Set the snooping profile";
                              leaf profile {
                                type xr:Cisco-ios-xr-string {
                                  length "1..32";
                                }
                                description
                                  "Attach an IGMP profile";
                              }
                            }  // container snooping
                          }  // container igmp
                        }  // list i-sid
                      }  // container edge
                    }  // container pbb
    
                    container nv {
                      description
                        "Configure nV Satellite Settings";
                      container satellite {
                        presence
                          "Indicates a satellite node is configured.";
                        description
                          "Configure nV Satellite Settings";
                        container offload {
                          description
                            "Hardware offloading";
                          container ipv4 {
                            description "IPv4";
                            container multicast {
                              description
                                "Multicast";
                              container enable {
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Enable IPv4 Multicast Offloading";
                              }  // container enable
                            }  // container multicast
                          }  // container ipv4
                        }  // container offload
                      }  // container satellite
                    }  // container nv
    
                    container flood {
                      description
                        "Flooding Capability";
                      container mode {
                        description
                          "Choose Flooding Mode";
                        container ac-ingress-replication {
                          presence
                            "Indicates a ac-ingress-replication node is configured.";
                          description
                            "Ingress replication of Atachment circuits";
                        }  // container ac-ingress-replication
                      }  // container mode
                    }  // container flood
                  }  // list bridge-domain
                }  // container bridge-domains
              }  // list group
            }  // container groups
          }  // container bridge
    
          container pbb {
            description
              "PBB configuration commands";
            leaf backbone-source-mac {
              type yang:mac-address;
              description "Backbone Source MAC";
            }
          }  // container pbb
    
          container redundancy {
            presence
              "Indicates a redundancy node is configured.";
            description "Redundancy";
            container iccp {
              description
                "Inter-Chassis Communication Protocol";
              container groups {
                description
                  "Group configuration";
                list group {
                  key "group-number";
                  description
                    "Group configuration";
                  leaf group-number {
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "Group configuration";
                  }
    
                  list interface {
                    key "interface-name";
                    description "Interface name";
                    leaf interface-name {
                      type xr:Interface-name;
                      description
                        "Interface name";
                    }
    
                    container primary {
                      description
                        "Primary VLAN configuration";
                      leaf vlan {
                        type xr:Cisco-ios-xr-string {
                          length "1..800";
                        }
                        description
                          "Assign primary VLANs";
                      }
                    }  // container primary
    
                    container secondary {
                      description
                        "Secondary VLAN configuration";
                      leaf vlan {
                        type xr:Cisco-ios-xr-string {
                          length "1..800";
                        }
                        description
                          "Assign secondary VLANs";
                      }
                    }  // container secondary
    
                    container mac-flush {
                      description
                        "Enable STP TCN MAC flushing. Default is MVRP";
                      container stp-tcn {
                        presence
                          "Indicates a stp-tcn node is configured.";
                        description
                          "STP topology change notification";
                      }  // container stp-tcn
                    }  // container mac-flush
    
                    container recovery {
                      description
                        "Failure recovery reversion delay timer.  Default is revertive after 180 seconds.";
                      leaf delay {
                        type uint32 {
                          range "30..3600";
                        }
                        description
                          "Specify delay before recovery reversion after failure clears";
                      }
                    }  // container recovery
                  }  // list interface
    
                  container multi-homing {
                    description
                      "ICCP-based service multi-homing";
                    leaf node-id {
                      type uint32 {
                        range "0..254";
                      }
                      description
                        "Enter multi-homing node ID";
                    }
                  }  // container multi-homing
                }  // list group
              }  // container groups
            }  // container iccp
          }  // container redundancy
    
          container ethernet {
            description "Ethernet";
            container ring {
              description "Ring";
              list g8032 {
                key "ethernet-ring-name";
                description
                  "Specify the g.8032 ethernet ring";
                leaf ethernet-ring-name {
                  type xr:Cisco-ios-xr-string {
                    length "1..32";
                  }
                  description
                    "Specify the g.8032 ethernet ring";
                }
    
                container port0 {
                  description
                    "Port0 of the local node connected to G.8032 ring";
                  list interface {
                    key "interface-name";
                    description
                      "Assign interface as port0";
                    leaf interface-name {
                      type xr:Interface-name;
                      description
                        "Assign interface as port0";
                    }
    
                    container monitor {
                      description
                        "Assign the monitor interface for g.8032 ring port0";
                      leaf interface {
                        type xr:Interface-name;
                        description
                          "Assign the monitor interface";
                      }
                    }  // container monitor
                  }  // list interface
                }  // container port0
    
                container port1 {
                  description
                    "Port1 of the local node connected to G.8032 ring";
                  list interface {
                    key "interface-name";
                    description
                      "Assign port1 interface";
                    leaf interface-name {
                      type xr:Interface-name;
                      description
                        "Assign port1 interface";
                    }
    
                    container monitor {
                      description
                        "Assign the monitor interface for g.8032 ring port1";
                      leaf interface {
                        type xr:Interface-name;
                        description
                          "Assign the monitor interface";
                      }
                    }  // container monitor
                  }  // list interface
    
                  container none {
                    presence
                      "Indicates a none node is configured.";
                    description
                      "Assign port1 as none to enable g.8032 open-ring";
                  }  // container none
    
                  container virtual {
                    presence
                      "Indicates a virtual node is configured.";
                    description
                      "Assign port1 as virtual to enable g.8032 sub-ring";
                  }  // container virtual
                }  // container port1
    
                container open-ring {
                  presence
                    "Indicates a open-ring node is configured.";
                  description
                    "Specify the g.8032 ring as open ring";
                }  // container open-ring
    
                container exclusion-list {
                  description
                    "Specifiy exclusion list not protected by ERP";
                  leaf vlan-ids {
                    type xr:Cisco-ios-xr-string {
                      length "1..800";
                    }
                    description
                      "Assign list of VLANs to the exclusion list";
                  }
                }  // container exclusion-list
    
                container instances {
                  description
                    "Configure the g.8032 ethernet ring instance";
                  list instance {
                    key "instance-id";
                    description
                      "Configure the g.8032 ethernet ring instance";
                    leaf instance-id {
                      type uint32 {
                        range "1..2";
                      }
                      description
                        "Configure the g.8032 ethernet ring instance";
                    }
    
                    leaf description {
                      type string {
                        length "1..32";
                      }
                      description
                        "Description for g.8032 ethernet ring instance";
                    }
    
                    leaf profile {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Specify associated g.8032 ethernet ring profile";
                    }
    
                    container rpl {
                      description
                        "Specify RPL owner, neighbor or next-neighbor";
                      container port0 {
                        presence
                          "Indicates a port0 node is configured.";
                        description
                          "Assign port0 as RPL owner, neighbor or next-neighbor";
                        container owner {
                          must
                            "not(../neighbor or ../next-neighbor)";
                          presence
                            "Indicates a owner node is configured.";
                          description
                            "RPL owner";
                        }  // container owner
    
                        container neighbor {
                          must
                            "not(../owner or ../next-neighbor)";
                          presence
                            "Indicates a neighbor node is configured.";
                          description
                            "RPL neighbor";
                        }  // container neighbor
    
                        container next-neighbor {
                          must
                            "not(../owner or ../neighbor)";
                          presence
                            "Indicates a next-neighbor node is configured.";
                          description
                            "RPL next neighbor";
                        }  // container next-neighbor
                      }  // container port0
    
                      container port1 {
                        presence
                          "Indicates a port1 node is configured.";
                        description
                          "Assign port1 as RPL owner, neighbor or next-neighbor";
                        container owner {
                          must
                            "not(../neighbor or ../next-neighbor)";
                          presence
                            "Indicates a owner node is configured.";
                          description
                            "RPL owner";
                        }  // container owner
    
                        container neighbor {
                          must
                            "not(../owner or ../next-neighbor)";
                          presence
                            "Indicates a neighbor node is configured.";
                          description
                            "RPL neighbor";
                        }  // container neighbor
    
                        container next-neighbor {
                          must
                            "not(../owner or ../neighbor)";
                          presence
                            "Indicates a next-neighbor node is configured.";
                          description
                            "RPL next neighbor";
                        }  // container next-neighbor
                      }  // container port1
                    }  // container rpl
    
                    container inclusion-list {
                      description
                        "Specifiy inclusion list protected by ERP";
                      leaf vlan-ids {
                        type string {
                          length "1..800";
                        }
                        description
                          "Associates a set of VLAN IDs with the current instance";
                      }
                    }  // container inclusion-list
    
                    container aps-channel {
                      presence
                        "Indicates a aps-channel node is configured.";
                      description
                        "Configure g.8032 instance aps-channel";
                      leaf level {
                        type uint32 {
                          range "0..7";
                        }
                        description
                          "Specify the aps message level";
                      }
    
                      container port0 {
                        description
                          "Config g.8032 aps-channel info associated to port0";
                        leaf interface {
                          type xr:Interface-name;
                          description
                            "Assign interface associated to port0";
                        }
                      }  // container port0
    
                      container port1 {
                        description
                          "Config g.8032 aps-channel info associated to port1";
                        leaf interface {
                          type xr:Interface-name;
                          must
                            "not(../bridge-domain or ../xconnect
    or ../none)";
                          description
                            "Assign interface associated to port1";
                        }
    
                        leaf bridge-domain {
                          type xr:Cisco-ios-xr-string {
                            length "1..27";
                          }
                          must
                            "not(../interface or ../xconnect
    or ../none)";
                          description
                            "Specify VPLS domain where virtual channel is connected";
                        }
    
                        leaf xconnect {
                          type xr:Cisco-ios-xr-string {
                            length "1..38";
                          }
                          must
                            "not(../interface or ../bridge-domain
    or ../none)";
                          description
                            "Specify VPWS xconnect where virtual channel is connected";
                        }
    
                        container none {
                          must
                            "not(../interface or ../bridge-domain
    or ../xconnect)";
                          presence
                            "Indicates a none node is configured.";
                          description
                            "Specify APS channel port1 as none";
                        }  // container none
                      }  // container port1
                    }  // container aps-channel
                  }  // list instance
                }  // container instances
              }  // list g8032
            }  // container ring
          }  // container ethernet
    
          container flexible-xconnect-service {
            description
              "Configure flexible-xconnect-service";
            container vlan-unawares {
              description
                "Configure in vlan-unaware mode";
              list vlan-unaware {
                key "service-name";
                description
                  "Configure in vlan-unaware mode";
                leaf service-name {
                  type xr:Cisco-ios-xr-string {
                    length "1..23";
                  }
                  description
                    "Configure in vlan-unaware mode";
                }
    
                container interfaces {
                  description
                    "Specify the attachment circuit ";
                  list interface {
                    key "interface-name";
                    description
                      "Specify sub-interface name to attach to flexible xconnect service";
                    leaf interface-name {
                      type xr:Interface-name;
                      description
                        "Specify sub-interface name to attach to flexible xconnect service";
                    }
                  }  // list interface
                }  // container interfaces
    
                container neighbor {
                  description
                    "Specify the peer to cross connect";
                  container evpn {
                    description
                      "Specify the Ethernet VPN";
                    container evis {
                      description
                        "Ethernet VPN Identifier";
                      list evi {
                        key "vpn-id remote-ac-id";
                        description
                          "Ethernet VPN Identifier";
                        leaf vpn-id {
                          type uint32 {
                            range "1..65534";
                          }
                          description
                            "Ethernet VPN Identifier";
                        }
    
                        leaf remote-ac-id {
                          type uint32 {
                            range "1..16777215";
                          }
                          description
                            "Specify remote attachment circuit identifier";
                        }
                      }  // list evi
                    }  // container evis
                  }  // container evpn
                }  // container neighbor
              }  // list vlan-unaware
            }  // container vlan-unawares
    
            container vlan-aware {
              description
                "Configure in vlan-aware mode";
              container evis {
                description
                  "Ethernet VPN Identifier";
                list evi {
                  key "vpn-id";
                  description
                    "Ethernet VPN Identifier";
                  leaf vpn-id {
                    type uint32 {
                      range "1..65534";
                    }
                    description
                      "Ethernet VPN Identifier";
                  }
    
                  container interfaces {
                    description
                      "Specify the attachment circuit ";
                    list interface {
                      key "interface-name";
                      description
                        "Specify sub-interface name to attach to flexible xconnect service";
                      leaf interface-name {
                        type xr:Interface-name;
                        description
                          "Specify sub-interface name to attach to flexible xconnect service";
                      }
                    }  // list interface
                  }  // container interfaces
                }  // list evi
              }  // container evis
            }  // container vlan-aware
          }  // container flexible-xconnect-service
    
          container vlan-switches {
            description
              "Configure a VLAN Switch";
            list vlan-switch {
              key "vlan-switch-name";
              description
                "Configure a VLAN Switch";
              leaf vlan-switch-name {
                type xr:Cisco-ios-xr-string {
                  length "1..32";
                }
                description
                  "Configure a VLAN Switch";
              }
    
              container vlan {
                description "Configure VLAN IDs";
                leaf vlan-id-range1-start {
                  type uint32 {
                    range "1..4094";
                  }
                  description
                    "Start of VLAN ID range";
                }
    
                leaf vlan-id-range1-end {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-range1-start";
                  description
                    "End of VLAN ID range";
                }
    
                leaf vlan-id-range2-start {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-range1-start";
                  description
                    "Start of VLAN ID range";
                }
    
                leaf vlan-id-range2-end {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-range2-start";
                  description
                    "End of VLAN ID range";
                }
    
                leaf vlan-id-range3-start {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-range2-start";
                  description
                    "Start of VLAN ID range";
                }
    
                leaf vlan-id-range3-end {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-range3-start";
                  description
                    "End of VLAN ID range";
                }
    
                leaf vlan-id-range4-start {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-range3-start";
                  description
                    "Start of VLAN ID range";
                }
    
                leaf vlan-id-range4-end {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-range4-start";
                  description
                    "End of VLAN ID range";
                }
    
                leaf vlan-id-range5-start {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-range4-start";
                  description
                    "Start of VLAN ID range";
                }
    
                leaf vlan-id-range5-end {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-range5-start";
                  description
                    "End of VLAN ID range";
                }
    
                leaf vlan-id-range6-start {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-range5-start";
                  description
                    "Start of VLAN ID range";
                }
    
                leaf vlan-id-range6-end {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-range6-start";
                  description
                    "End of VLAN ID range";
                }
    
                leaf vlan-id-range7-start {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-range6-start";
                  description
                    "Start of VLAN ID range";
                }
    
                leaf vlan-id-range7-end {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-range7-start";
                  description
                    "End of VLAN ID range";
                }
    
                leaf vlan-id-range8-start {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-range7-start";
                  description
                    "Start of VLAN ID range";
                }
    
                leaf vlan-id-range8-end {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-range8-start";
                  description
                    "End of VLAN ID range";
                }
    
                leaf vlan-id-range9-start {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-range8-start";
                  description
                    "Start of VLAN ID range";
                }
    
                leaf vlan-id-range9-end {
                  type uint32 {
                    range "1..4094";
                  }
                  must "../vlan-id-range9-start";
                  description
                    "End of VLAN ID range";
                }
              }  // container vlan
    
              container interfaces {
                description
                  "Assign VSP interface to VLAN Switch";
                list interface {
                  key "interface-name";
                  description
                    "Specify interface name";
                  leaf interface-name {
                    type xr:Interface-name;
                    description
                      "Specify interface name";
                  }
                }  // list interface
              }  // container interfaces
    
              container routed {
                description
                  "VLAN Switch L3 interfaces";
                container interface {
                  description
                    "Assign L3 interfaces to VLAN Switch";
                  container bvi {
                    description
                      "Assign BVI interfaces to VLAN Switch";
                    leaf interface-number-range1-start {
                      type uint32 {
                        range "1..4294967295";
                      }
                      description
                        "Start of interface number range";
                    }
    
                    leaf interface-number-range1-end {
                      type uint32 {
                        range "1..4294967295";
                      }
                      must
                        "../interface-number-range1-start";
                      description
                        "End of interface number range";
                    }
    
                    leaf interface-number-range2-start {
                      type uint32 {
                        range "1..4294967295";
                      }
                      must
                        "../interface-number-range1-start";
                      description
                        "Start of interface number range";
                    }
    
                    leaf interface-number-range2-end {
                      type uint32 {
                        range "1..4294967295";
                      }
                      must
                        "../interface-number-range2-start";
                      description
                        "End of interface number range";
                    }
    
                    leaf interface-number-range3-start {
                      type uint32 {
                        range "1..4294967295";
                      }
                      must
                        "../interface-number-range2-start";
                      description
                        "Start of interface number range";
                    }
    
                    leaf interface-number-range3-end {
                      type uint32 {
                        range "1..4294967295";
                      }
                      must
                        "../interface-number-range3-start";
                      description
                        "End of interface number range";
                    }
    
                    leaf interface-number-range4-start {
                      type uint32 {
                        range "1..4294967295";
                      }
                      must
                        "../interface-number-range3-start";
                      description
                        "Start of interface number range";
                    }
    
                    leaf interface-number-range4-end {
                      type uint32 {
                        range "1..4294967295";
                      }
                      must
                        "../interface-number-range4-start";
                      description
                        "End of interface number range";
                    }
    
                    leaf interface-number-range5-start {
                      type uint32 {
                        range "1..4294967295";
                      }
                      must
                        "../interface-number-range4-start";
                      description
                        "Start of interface number range";
                    }
    
                    leaf interface-number-range5-end {
                      type uint32 {
                        range "1..4294967295";
                      }
                      must
                        "../interface-number-range4-start";
                      description
                        "End of interface number range";
                    }
    
                    leaf interface-number-range6-start {
                      type uint32 {
                        range "1..4294967295";
                      }
                      must
                        "../interface-number-range5-start";
                      description
                        "Start of interface number range";
                    }
    
                    leaf interface-number-range6-end {
                      type uint32 {
                        range "1..4294967295";
                      }
                      must
                        "../interface-number-range6-start";
                      description
                        "End of interface number range";
                    }
    
                    leaf interface-number-range7-start {
                      type uint32 {
                        range "1..4294967295";
                      }
                      must
                        "../interface-number-range6-start";
                      description
                        "Start of interface number range";
                    }
    
                    leaf interface-number-range7-end {
                      type uint32 {
                        range "1..4294967295";
                      }
                      must
                        "../interface-number-range7-start";
                      description
                        "End of interface number range";
                    }
    
                    leaf interface-number-range8-start {
                      type uint32 {
                        range "1..4294967295";
                      }
                      must
                        "../interface-number-range7-start";
                      description
                        "Start of interface number range";
                    }
    
                    leaf interface-number-range8-end {
                      type uint32 {
                        range "1..4294967295";
                      }
                      must
                        "../interface-number-range8-start";
                      description
                        "End of interface number range";
                    }
    
                    leaf interface-number-range9-start {
                      type uint32 {
                        range "1..4294967295";
                      }
                      must
                        "../interface-number-range8-start";
                      description
                        "Start of interface number range";
                    }
    
                    leaf interface-number-range9-end {
                      type uint32 {
                        range "1..4294967295";
                      }
                      must
                        "../interface-number-range9-start";
                      description
                        "End of interface number range";
                    }
                  }  // container bvi
                }  // container interface
              }  // container routed
    
              container vni {
                description
                  "Assign VxLAN Network Identifiers to VLAN Switch";
                leaf vni-range1-start {
                  type uint32 {
                    range "1..16777215";
                  }
                  description
                    "Start of VNI range";
                }
    
                leaf vni-range1-end {
                  type uint32 {
                    range "1..16777215";
                  }
                  must "../vni-range1-start";
                  description "End of VNI range";
                }
    
                leaf vni-range2-start {
                  type uint32 {
                    range "1..16777215";
                  }
                  must "../vni-range1-start";
                  description
                    "Start of VNI range";
                }
    
                leaf vni-range2-end {
                  type uint32 {
                    range "1..16777215";
                  }
                  must "../vni-range2-start";
                  description "End of VNI range";
                }
    
                leaf vni-range3-start {
                  type uint32 {
                    range "1..16777215";
                  }
                  must "../vni-range2-start";
                  description
                    "Start of VNI range";
                }
    
                leaf vni-range3-end {
                  type uint32 {
                    range "1..16777215";
                  }
                  must "../vni-range3-start";
                  description "End of VNI range";
                }
    
                leaf vni-range4-start {
                  type uint32 {
                    range "1..16777215";
                  }
                  must "../vni-range3-start";
                  description
                    "Start of VNI range";
                }
    
                leaf vni-range4-end {
                  type uint32 {
                    range "1..16777215";
                  }
                  must "../vni-range4-start";
                  description "End of VNI range";
                }
    
                leaf vni-range5-start {
                  type uint32 {
                    range "1..16777215";
                  }
                  must "../vni-range4-start";
                  description
                    "Start of VNI range";
                }
    
                leaf vni-range5-end {
                  type uint32 {
                    range "1..16777215";
                  }
                  must "../vni-range5-start";
                  description "End of VNI range";
                }
    
                leaf vni-range6-start {
                  type uint32 {
                    range "1..16777215";
                  }
                  must "../vni-range5-start";
                  description
                    "Start of VNI range";
                }
    
                leaf vni-range6-end {
                  type uint32 {
                    range "1..16777215";
                  }
                  must "../vni-range6-start";
                  description "End of VNI range";
                }
    
                leaf vni-range7-start {
                  type uint32 {
                    range "1..16777215";
                  }
                  must "../vni-range6-start";
                  description
                    "Start of VNI range";
                }
    
                leaf vni-range7-end {
                  type uint32 {
                    range "1..16777215";
                  }
                  must "../vni-range7-start";
                  description "End of VNI range";
                }
    
                leaf vni-range8-start {
                  type uint32 {
                    range "1..16777215";
                  }
                  must "../vni-range7-start";
                  description
                    "Start of VNI range";
                }
    
                leaf vni-range8-end {
                  type uint32 {
                    range "1..16777215";
                  }
                  must "../vni-range8-start";
                  description "End of VNI range";
                }
    
                leaf vni-range9-start {
                  type uint32 {
                    range "1..16777215";
                  }
                  must "../vni-range8-start";
                  description
                    "Start of VNI range";
                }
    
                leaf vni-range9-end {
                  type uint32 {
                    range "1..16777215";
                  }
                  must "../vni-range9-start";
                  description "End of VNI range";
                }
              }  // container vni
    
              container bridge-domains {
                description
                  "Configure bridge domain";
                list bridge-domain {
                  key "bridge-domain-name";
                  description
                    "Configure bridge domain";
                  leaf bridge-domain-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..27";
                      pattern 'vlan[0-9]+';
                    }
                    description
                      "Configure bridge domain";
                  }
    
                  container evis {
                    description
                      "Ethernet VPN identifier";
                    list evi {
                      key "vpn-id";
                      description
                        "Ethernet VPN identifier";
                      leaf vpn-id {
                        type uint32 {
                          range "1..65534";
                        }
                        description
                          "Ethernet VPN identifier";
                      }
                    }  // list evi
                  }  // container evis
    
                  container vnis {
                    description
                      "VxLAN VPN identifier";
                    list vni {
                      key "vni-id";
                      description
                        "VxLAN VPN identifier";
                      leaf vni-id {
                        type uint32 {
                          range "1..16777215";
                        }
                        description
                          "VxLAN VPN identifier";
                      }
                    }  // list vni
                  }  // container vnis
    
                  container nv {
                    description
                      "Configure nV Satellite Settings";
                    container satellite {
                      presence
                        "Indicates a satellite node is configured.";
                      description
                        "Configure nV Satellite Settings";
                      container offload {
                        description
                          "Hardware offloading";
                        container ipv4 {
                          description "IPv4";
                          container multicast {
                            description
                              "Multicast";
                            container enable {
                              presence
                                "Indicates a enable node is configured.";
                              description
                                "Enable IPv4 Multicast Offloading";
                            }  // container enable
                          }  // container multicast
                        }  // container ipv4
                      }  // container offload
                    }  // container satellite
                  }  // container nv
    
                  container pbb {
                    description
                      "Configure Provider Backbone Bridge";
                    container core {
                      presence
                        "Indicates a core node is configured.";
                      description
                        "PBB core bridge domain";
                      container evis {
                        description
                          "Ethernet VPN identifier";
                        list evi {
                          key "vpn-id";
                          description
                            "Ethernet VPN identifier";
                          leaf vpn-id {
                            type uint32 {
                              range "1..65534";
                            }
                            description
                              "Ethernet VPN identifier";
                          }
                        }  // list evi
                      }  // container evis
    
                      container rewrite {
                        description
                          "Set the tag rewriting policy";
                        container ingress {
                          description
                            "Set the tag rewriting policy";
                          container tag {
                            description
                              "Set the tag rewriting policy";
                            container push {
                              description
                                "Push one or more tags";
                              leaf dot1ad {
                                type uint32 {
                                  range
                                    "1..4094";
                                }
                                description
                                  "Push a Dot1ad tag";
                              }
                            }  // container push
                          }  // container tag
                        }  // container ingress
                      }  // container rewrite
    
                      container mac {
                        description
                          "MAC configuration commands";
                        container aging {
                          description
                            "MAC-Aging configuration commands";
                          leaf time {
                            type uint32 {
                              range "300..30000";
                            }
                            description
                              "Mac aging";
                          }
    
                          container type {
                            description
                              "MAC address aging type";
                            container absolute {
                              must
                                "not(../inactivity)";
                              presence
                                "Indicates a absolute node is configured.";
                              description
                                "Absolute aging type";
                            }  // container absolute
    
                            container inactivity {
                              must
                                "not(../absolute)";
                              presence
                                "Indicates a inactivity node is configured.";
                              description
                                "Inactivity aging type";
                            }  // container inactivity
                          }  // container type
                        }  // container aging
    
                        container learning {
                          presence
                            "Indicates a learning node is configured.";
                          description
                            "MAC learning";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable MAC learning";
                          }  // container disable
                        }  // container learning
                      }  // container mac
    
                      container mmrp-flood-optimization {
                        presence
                          "Indicates a mmrp-flood-optimization node is configured.";
                        description
                          "Enable flood optimization for MMRP";
                      }  // container mmrp-flood-optimization
                    }  // container core
    
                    container edge {
                      description
                        "PBB edge bridge domain";
                      list i-sid {
                        key "instance-id core-bridge-name";
                        description
                          "Configure Service Instance Identifier";
                        leaf instance-id {
                          type uint32 {
                            range
                              "256..16777214";
                          }
                          description
                            "Configure Service Instance Identifier";
                        }
    
                        leaf core-bridge-name {
                          type xr:Cisco-ios-xr-string {
                            length "1..27";
                          }
                          description
                            "Specifiy PBB core bridge domain to associate with";
                        }
    
                        container static-mac-addresses {
                          description
                            "Static customer MAC address";
                          list static-mac-address {
                            key "mac-address";
                            description
                              "Static customer MAC address";
                            leaf mac-address {
                              type yang:mac-address;
                              description
                                "Static customer MAC address";
                            }
    
                            leaf bmac {
                              type yang:mac-address;
                              mandatory true;
                              description
                                "Static backbone MAC address to map with";
                            }
                          }  // list static-mac-address
                        }  // container static-mac-addresses
    
                        leaf unknown-unicast-bmac {
                          type yang:mac-address;
                          description
                            "Unknown Unicast backbone MAC address";
                        }
    
                        container split-horizon {
                          description
                            "Configure split horizon option";
                          container group {
                            description
                              "Configure split horizon group option";
                            container vfi {
                              description
                                "Configure split horizon group vfi option";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Configure split horizon group vfi disable";
                              }  // container disable
                            }  // container vfi
                          }  // container group
                        }  // container split-horizon
    
                        container mac {
                          description
                            "MAC configuration commands";
                          container aging {
                            description
                              "MAC-Aging configuration commands";
                            leaf time {
                              type uint32 {
                                range
                                  "300..30000";
                              }
                              description
                                "Mac aging";
                            }
    
                            container type {
                              description
                                "MAC address aging type";
                              container absolute {
                                must
                                  "not(../inactivity)";
                                presence
                                  "Indicates a absolute node is configured.";
                                description
                                  "Absolute aging type";
                              }  // container absolute
    
                              container inactivity {
                                must
                                  "not(../absolute)";
                                presence
                                  "Indicates a inactivity node is configured.";
                                description
                                  "Inactivity aging type";
                              }  // container inactivity
                            }  // container type
                          }  // container aging
    
                          container learning {
                            presence
                              "Indicates a learning node is configured.";
                            description
                              "MAC learning";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable MAC learning";
                            }  // container disable
                          }  // container learning
    
                          container limit {
                            description
                              "MAC-Limit configuration commands";
                            leaf maximum {
                              type uint32 {
                                range
                                  "0..4294967295";
                              }
                              description
                                "Number of MAC addresses after which MAC limit action is taken";
                            }
    
                            container action {
                              description
                                "MAC address limit enforcement action";
                              container flood {
                                must
                                  "not(../no-flood or ../shutdown
    or ../none)";
                                presence
                                  "Indicates a flood node is configured.";
                                description
                                  "Stop learning but continue flooding";
                              }  // container flood
    
                              container no-flood {
                                must
                                  "not(../flood or ../shutdown
    or ../none)";
                                presence
                                  "Indicates a no-flood node is configured.";
                                description
                                  "Stop learning and stop flooding";
                              }  // container no-flood
    
                              container shutdown {
                                must
                                  "not(../flood or ../no-flood
    or ../none)";
                                presence
                                  "Indicates a shutdown node is configured.";
                                description
                                  "Stop forwarding";
                              }  // container shutdown
    
                              container none {
                                must
                                  "not(../flood or ../no-flood
    or ../shutdown)";
                                presence
                                  "Indicates a none node is configured.";
                                description
                                  "No action";
                              }  // container none
                            }  // container action
    
                            container notification {
                              description
                                "MAC address limit notification action";
                              container trap {
                                must
                                  "not(../both or ../none
    or ../syslog)";
                                presence
                                  "Indicates a trap node is configured.";
                                description
                                  "Generate SNMP trap";
                              }  // container trap
    
                              container both {
                                must
                                  "not(../trap or ../none
    or ../syslog)";
                                presence
                                  "Indicates a both node is configured.";
                                description
                                  "Generate syslog message and SNMP trap";
                              }  // container both
    
                              container none {
                                must
                                  "not(../trap or ../both
    or ../syslog)";
                                presence
                                  "Indicates a none node is configured.";
                                description
                                  "No notification";
                              }  // container none
    
                              container syslog {
                                must
                                  "not(../trap or ../both
    or ../none)";
                                presence
                                  "Indicates a syslog node is configured.";
                                description
                                  "Generate syslog message";
                              }  // container syslog
                            }  // container notification
                          }  // container limit
    
                          container secure {
                            presence
                              "Indicates a secure node is configured.";
                            description
                              "MAC Secure configuration commands";
                            container logging {
                              presence
                                "Indicates a logging node is configured.";
                              description
                                "Logging";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "disable logging";
                              }  // container disable
                            }  // container logging
    
                            container action {
                              description
                                "MAC secure enforcement action";
                              container none {
                                must
                                  "not(../shutdown or ../restrict)";
                                presence
                                  "Indicates a none node is configured.";
                                description
                                  "Forward the violating packet and allow the MAC to be relearned";
                              }  // container none
    
                              container shutdown {
                                must
                                  "not(../none or ../restrict)";
                                presence
                                  "Indicates a shutdown node is configured.";
                                description
                                  "Shutdown the violating bridge port";
                              }  // container shutdown
    
                              container restrict {
                                must
                                  "not(../none or ../shutdown)";
                                presence
                                  "Indicates a restrict node is configured.";
                                description
                                  "Drop the violating packet and not allow the MAC to be relearned";
                              }  // container restrict
                            }  // container action
    
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable MAC Secure";
                            }  // container disable
    
                            container accept-shutdown {
                              presence
                                "Indicates a accept-shutdown node is configured.";
                              description
                                "Accept shutdown action to be taken due to MAC violation";
                            }  // container accept-shutdown
                          }  // container secure
                        }  // container mac
    
                        container dhcp {
                          presence
                            "Indicates a dhcp node is configured.";
                          description
                            "DHCP protocol";
                          container ipv4 {
                            description
                              "IP Version 4";
                            container snoop {
                              presence
                                "Indicates a snoop node is configured.";
                              description
                                "Set the snooping profile";
                              leaf profile {
                                type xr:Cisco-ios-xr-string {
                                  length "1..32";
                                }
                                description
                                  "Attach a DHCP profile";
                              }
                            }  // container snoop
    
                            container none {
                              presence
                                "Indicates a none node is configured.";
                              description
                                "Disable DHCP snooping";
                            }  // container none
                          }  // container ipv4
                        }  // container dhcp
    
                        container igmp {
                          description
                            "IGMP protocol";
                          container snooping {
                            description
                              "Set the snooping profile";
                            leaf profile {
                              type xr:Cisco-ios-xr-string {
                                length "1..32";
                              }
                              description
                                "Attach an IGMP profile";
                            }
                          }  // container snooping
                        }  // container igmp
                      }  // list i-sid
                    }  // container edge
                  }  // container pbb
    
                  leaf mtu {
                    type uint32 {
                      range "46..65535";
                    }
                    description
                      "Maximum transmission unit (payload) for this Bridge Domain";
                  }
    
                  container coupled-mode {
                    if-feature l2vpn_is_cli_supported;
                    presence
                      "Indicates a coupled-mode node is configured.";
                    description
                      "Enable coupled mode for the Bridge Domain";
                  }  // container coupled-mode
    
                  container transport-mode {
                    description
                      "Bridge domain transport mode";
                    container vlan {
                      description
                        "Vlan tagged mode";
                      container passthrough {
                        presence
                          "Indicates a passthrough node is configured.";
                        description
                          "passthrough incoming tags";
                      }  // container passthrough
                    }  // container vlan
                  }  // container transport-mode
    
                  container flooding {
                    description
                      "Traffic flooding";
                    container disable {
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Disable flooding";
                    }  // container disable
    
                    container unknown-unicast {
                      description
                        "Traffic flooding unknown unicast";
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable Unknown Unicast flooding";
                      }  // container disable
                    }  // container unknown-unicast
                  }  // container flooding
    
                  container dynamic-arp-inspection {
                    presence
                      "Indicates a dynamic-arp-inspection node is configured.";
                    description
                      "Dynamic ARP Inspection";
                    container logging {
                      presence
                        "Indicates a logging node is configured.";
                      description
                        "Enable Logging";
                    }  // container logging
    
                    container address-validation {
                      presence
                        "Indicates a address-validation node is configured.";
                      description
                        "Address Validation Configurations";
                      container src-mac {
                        presence
                          "Indicates a src-mac node is configured.";
                        description
                          "Match Source MAC Address";
                      }  // container src-mac
    
                      container dst-mac {
                        presence
                          "Indicates a dst-mac node is configured.";
                        description
                          "Match Destination MAC Address";
                      }  // container dst-mac
    
                      container ipv4 {
                        presence
                          "Indicates a ipv4 node is configured.";
                        description
                          "Match IPv4 Address";
                      }  // container ipv4
                    }  // container address-validation
                  }  // container dynamic-arp-inspection
    
                  container ip-source-guard {
                    presence
                      "Indicates a ip-source-guard node is configured.";
                    description
                      "IP Source Guard";
                    container logging {
                      presence
                        "Indicates a logging node is configured.";
                      description
                        "Enable Logging";
                    }  // container logging
                  }  // container ip-source-guard
    
                  container dhcp {
                    description "DHCP protocol";
                    container ipv4 {
                      description "IP Version 4";
                      container snoop {
                        description
                          "Set the snooping profile";
                        leaf profile {
                          type xr:Cisco-ios-xr-string {
                            length "1..32";
                          }
                          description
                            "Attach a DHCP profile";
                        }
                      }  // container snoop
                    }  // container ipv4
                  }  // container dhcp
    
                  container igmp {
                    description "IGMP protocol";
                    container snooping {
                      description
                        "Set the snooping profile";
                      leaf profile {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Attach an IGMP profile";
                      }
    
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "disable IGMP snooping for the current bridge domain";
                      }  // container disable
                    }  // container snooping
                  }  // container igmp
    
                  container mld {
                    description "MLD protocol";
                    container snooping {
                      description
                        "Set the snooping profile";
                      leaf profile {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Attach a MLD profile";
                      }
                    }  // container snooping
                  }  // container mld
    
                  container storm-control {
                    description "Storm Control";
                    container broadcast {
                      description
                        "Broadcast Storm Control";
                      leaf pps {
                        type uint32 {
                          range "1..160000";
                        }
                        description
                          "Set the storm control pps";
                      }
    
                      leaf kbps {
                        type uint32 {
                          range "64..1280000";
                        }
                        description
                          "Set the storm control kbps";
                      }
                    }  // container broadcast
    
                    container multicast {
                      description
                        "Multicast Storm Control";
                      leaf pps {
                        type uint32 {
                          range "1..160000";
                        }
                        description
                          "Set the storm control pps";
                      }
    
                      leaf kbps {
                        type uint32 {
                          range "64..1280000";
                        }
                        description
                          "Set the storm control kbps";
                      }
                    }  // container multicast
    
                    container unknown-unicast {
                      description
                        "Unknown-unicast Storm Control";
                      leaf pps {
                        type uint32 {
                          range "1..160000";
                        }
                        description
                          "Set the storm control pps";
                      }
    
                      leaf kbps {
                        type uint32 {
                          range "64..1280000";
                        }
                        description
                          "Set the storm control kbps";
                      }
                    }  // container unknown-unicast
                  }  // container storm-control
    
                  container interface {
                    description
                      "Assign interface to bridge domain";
                  }  // container interface
    
                  container routed {
                    description
                      "Bridge domain L3 interface";
                    list interface {
                      key "interface-name";
                      description
                        "Assign interface to bridge domain";
                      leaf interface-name {
                        type xr:Interface-name;
                        description
                          "Assign interface to bridge domain";
                      }
    
                      container split-horizon {
                        description
                          "Configure split-horizon group";
                        container group {
                          description
                            "Configure split-horizon group";
                          container core {
                            presence
                              "Indicates a core node is configured.";
                            description
                              "Configure BVI under SHG 1";
                          }  // container core
                        }  // container group
                      }  // container split-horizon
                    }  // list interface
                  }  // container routed
    
                  container shutdown {
                    presence
                      "Indicates a shutdown node is configured.";
                    description
                      "shutdown the Bridge Domain";
                  }  // container shutdown
    
                  container mac {
                    description
                      "MAC configuration commands";
                    container aging {
                      if-feature l2vpn_is_cli_supported;
                      description
                        "MAC-Aging configuration commands";
                      leaf time {
                        type uint32 {
                          range "300..30000";
                        }
                        description "Mac aging";
                      }
    
                      container type {
                        description
                          "MAC address aging type";
                        container absolute {
                          presence
                            "Indicates a absolute node is configured.";
                          description
                            "Absolute aging type";
                        }  // container absolute
                      }  // container type
    
                      container static-addresses {
                        description
                          "Static MAC address for filtering";
                        list static-address {
                          must "drop";
                          key "mac-address";
                          description
                            "Static MAC address for filtering";
                          leaf mac-address {
                            type yang:mac-address;
                            description
                              "Static MAC address for filtering";
                          }
    
                          container drop {
                            presence
                              "Indicates a drop node is configured.";
                            description
                              "Drop matching packets";
                          }  // container drop
                        }  // list static-address
                      }  // container static-addresses
    
                      container learning {
                        description
                          "MAC learning";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable MAC learning";
                        }  // container disable
                      }  // container learning
    
                      container withdraw {
                        description
                          "MAC withdraw";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable MAC withdraw";
                        }  // container disable
    
                        container access-pw {
                          description
                            "MAC withdraw sent to Access PWs ";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable MAC withdraw on Access PW";
                          }  // container disable
                        }  // container access-pw
    
                        container relay {
                          presence
                            "Indicates a relay node is configured.";
                          description
                            "MAC withdraw relayed to Access PWs ";
                        }  // container relay
    
                        container state-down {
                          must
                            "not(../optimize)";
                          presence
                            "Indicates a state-down node is configured.";
                          description
                            "MAC withdraw sent on bridge port down";
                        }  // container state-down
    
                        container optimize {
                          must
                            "not(../state-down)";
                          presence
                            "Indicates a optimize node is configured.";
                          description
                            "Optimized LDP MAC withdraw (when port goes down)";
                        }  // container optimize
                      }  // container withdraw
    
                      container limit {
                        description
                          "MAC-Limit configuration commands";
                        leaf maximum {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "Number of MAC addresses after which MAC limit action is taken";
                        }
    
                        container action {
                          description
                            "MAC address limit enforcement action";
                          container flood {
                            must
                              "not(../no-flood or ../shutdown)";
                            presence
                              "Indicates a flood node is configured.";
                            description
                              "Stop learning but continue flooding";
                          }  // container flood
    
                          container no-flood {
                            must
                              "not(../flood or ../shutdown)";
                            presence
                              "Indicates a no-flood node is configured.";
                            description
                              "Stop learning and stop flooding";
                          }  // container no-flood
    
                          container shutdown {
                            must
                              "not(../flood or ../no-flood)";
                            presence
                              "Indicates a shutdown node is configured.";
                            description
                              "Stop forwarding";
                          }  // container shutdown
                        }  // container action
    
                        container notification {
                          description
                            "MAC address limit notification action";
                          container trap {
                            must
                              "not(../both or ../none)";
                            presence
                              "Indicates a trap node is configured.";
                            description
                              "Generate SNMP trap";
                          }  // container trap
    
                          container both {
                            must
                              "not(../trap or ../none)";
                            presence
                              "Indicates a both node is configured.";
                            description
                              "Generate syslog message and SNMP trap";
                          }  // container both
    
                          container none {
                            must
                              "not(../trap or ../both)";
                            presence
                              "Indicates a none node is configured.";
                            description
                              "No notification";
                          }  // container none
                        }  // container notification
                      }  // container limit
    
                      container port-down {
                        description
                          "Configure action when port goes down";
                        container flush {
                          description
                            "Configure MAC flush when port goes down";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable MAC flush when port goes down";
                          }  // container disable
                        }  // container flush
                      }  // container port-down
    
                      container secure {
                        presence
                          "Indicates a secure node is configured.";
                        description
                          "MAC Secure configuration commands";
                        container logging {
                          presence
                            "Indicates a logging node is configured.";
                          description
                            "Enable Logging";
                        }  // container logging
    
                        container threshold {
                          presence
                            "Indicates a threshold node is configured.";
                          description
                            "Threshold based mac secure";
                        }  // container threshold
    
                        container action {
                          description
                            "MAC secure enforcement action";
                          container none {
                            must
                              "not(../shutdown)";
                            presence
                              "Indicates a none node is configured.";
                            description
                              "Forward the violating packet and allow the MAC to be relearned";
                          }  // container none
    
                          container shutdown {
                            must "not(../none)";
                            presence
                              "Indicates a shutdown node is configured.";
                            description
                              "Shutdown the violating bridge port";
                          }  // container shutdown
                        }  // container action
                      }  // container secure
                    }  // container aging
                  }  // container mac
    
                  leaf description {
                    type string {
                      length "1..64";
                    }
                    description
                      "Description for Bridge-Domain";
                  }
    
                  container member {
                    description
                      "Bridge domain member";
                    container vnis {
                      description
                        "Assign VxLAN Network Identifier to bridge domain";
                      list vni {
                        key "vni-id";
                        description
                          "Assign VxLAN Network Identifier to bridge domain";
                        leaf vni-id {
                          type uint32 {
                            range "1..16777215";
                          }
                          description
                            "Assign VxLAN Network Identifier to bridge domain";
                        }
    
                        container static-mac-addresses {
                          description
                            "Static MAC address";
                          list static-mac-address {
                            key "mac-address";
                            description
                              "Static MAC address";
                            leaf mac-address {
                              type yang:mac-address;
                              description
                                "Static MAC address";
                            }
    
                            leaf next-hop {
                              type inet:ipv4-address-no-zone;
                              description
                                "Specify the next hop IP address";
                            }
                          }  // list static-mac-address
                        }  // container static-mac-addresses
                      }  // list vni
                    }  // container vnis
                  }  // container member
                }  // list bridge-domain
              }  // container bridge-domains
            }  // list vlan-switch
          }  // container vlan-switches
    
          container pw-classes {
            description
              "Pseudowire class template";
            list pw-class {
              key "pw-class-name";
              description
                "Pseudowire class template";
              leaf pw-class-name {
                type xr:Cisco-ios-xr-string {
                  length "1..32";
                }
                description
                  "Pseudowire class template";
              }
    
              container encapsulation {
                description
                  "Pseudowire encapsulation";
                container mpls {
                  presence
                    "Indicates a mpls node is configured.";
                  description
                    "Set pseudowire encapsulation to MPLS";
                  container protocol {
                    description
                      "Set the dynamic pseudowire signaling protocol";
                    container ldp {
                      presence
                        "Indicates a ldp node is configured.";
                      description
                        "Set LDP as the signaling protocol for this pseudowire class";
                    }  // container ldp
                  }  // container protocol
    
                  container control-word {
                    presence
                      "Indicates a control-word node is configured.";
                    description
                      "Enable Control word";
                  }  // container control-word
    
                  container transport-mode {
                    if-feature l2vpn_is_cli_supported;
                    description
                      "Remote transport mode";
                    container ethernet {
                      must
                        "not(../vlan or ../passthrough)";
                      presence
                        "Indicates a ethernet node is configured.";
                      description
                        "Ethernet port mode";
                    }  // container ethernet
    
                    container vlan {
                      must
                        "not(../ethernet or ../passthrough)";
                      presence
                        "Indicates a vlan node is configured.";
                      description
                        "Vlan tagged mode";
                    }  // container vlan
    
                    container passthrough {
                      must
                        "not(../ethernet or ../vlan)";
                      presence
                        "Indicates a passthrough node is configured.";
                      description
                        "passthrough incoming tags";
                    }  // container passthrough
                  }  // container transport-mode
    
                  container vccv {
                    description "VCCV settings";
                    container verification-type {
                      description
                        "Enable or disable VCCV verification type";
                      container none {
                        presence
                          "Indicates a none node is configured.";
                        description
                          "No VCCV verification";
                      }  // container none
                    }  // container verification-type
                  }  // container vccv
    
                  container sequencing {
                    description "Sequencing";
                    container transmit {
                      must
                        "not(../receive or ../both)";
                      presence
                        "Indicates a transmit node is configured.";
                      description
                        "Sequencing on transmit side";
                      leaf resync {
                        type uint32 {
                          range "5..65535";
                        }
                        description
                          "Set the threshold for out-of-sequence packets before resync";
                      }
                    }  // container transmit
    
                    container receive {
                      must
                        "not(../transmit or ../both)";
                      presence
                        "Indicates a receive node is configured.";
                      description
                        "Sequencing on receive side";
                      leaf resync {
                        type uint32 {
                          range "5..65535";
                        }
                        description
                          "Set the threshold for out-of-sequence packets before resync";
                      }
                    }  // container receive
    
                    container both {
                      must
                        "not(../transmit or ../receive)";
                      presence
                        "Indicates a both node is configured.";
                      description
                        "Sequencing on both transmit and receive side";
                      leaf resync {
                        type uint32 {
                          range "5..65535";
                        }
                        description
                          "Set the threshold for out-of-sequence packets before resync";
                      }
                    }  // container both
                  }  // container sequencing
    
                  container preferred-path {
                    description
                      "Preferred path tunnel settings";
                    container interface {
                      description
                        "Use tunnel interface for preferred path";
                      container tunnel-te {
                        description
                          "Specify TE tunnel interface name for preferred path";
                        leaf tunnel-number {
                          type uint32 {
                            range "0..65535";
                          }
                          must
                            "not(../tunnel-name or ../../tunnel-ip or
        ../../tunnel-tp or ../../../sr-te/policy)";
                          description
                            "Specify tunnel number for preferred path";
                        }
    
                        leaf tunnel-name {
                          type xr:Cisco-ios-xr-string {
                            length "1..60";
                          }
                          must
                            "not(../tunnel-number or ../../tunnel-ip or
        ../../tunnel-tp or ../../../sr-te/policy)";
                          description
                            "Specify named tunnel for preferred path";
                        }
                      }  // container tunnel-te
    
                      leaf tunnel-ip {
                        type uint32 {
                          range "0..65535";
                        }
                        must
                          "not(../tunnel-te/tunnel-number or ../tunnel-te/tunnel-name or
        ../tunnel-tp or ../../sr-te/policy)";
                        description
                          "Specify IP tunnel interface name for preferred path";
                      }
    
                      leaf tunnel-tp {
                        type uint32 {
                          range "0..65535";
                        }
                        must
                          "not(../tunnel-te/tunnel-number or ../tunnel-te/tunnel-name or
        ../tunnel-ip or ../../sr-te/policy)";
                        description
                          "Specify TP tunnel interface name for preferred path";
                      }
                    }  // container interface
    
                    container sr-te {
                      description
                        "Use segment-routing traffic-engineering for preferred path";
                      leaf policy {
                        type xr:Cisco-ios-xr-string {
                          length "1..60";
                        }
                        must
                          "not(../../interface/tunnel-te/tunnel-number or
        ../../interface/tunnel-te/tunnel-name or
        ../../interface/tunnel-ip or
        ../../interface/tunnel-tp)";
                        description
                          "Specify SR TE policy for preferred path";
                      }
                    }  // container sr-te
    
                    container fallback {
                      description
                        "Fallback option for preferred path";
                      container disable {
                        must
                          "../../interface/tunnel-te/tunnel-number or
    ../../interface/tunnel-te/tunnel-name or
    ../../interface/tunnel-ip or
    ../../interface/tunnel-tp or
    ../../sr-te/policy";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable fallback for preferred path";
                      }  // container disable
                    }  // container fallback
                  }  // container preferred-path
    
                  container switching-tlv {
                    description
                      "PW switching point TLV";
                    container hide {
                      presence
                        "Indicates a hide node is configured.";
                      description "Hide TLV";
                    }  // container hide
                  }  // container switching-tlv
    
                  container tag-rewrite {
                    description
                      "tag rewrite mode";
                    container ingress {
                      description
                        "configuring ingress mode";
                      leaf vlan {
                        type uint32 {
                          range "1..4094";
                        }
                        description
                          "vlan tagged mode";
                      }
                    }  // container ingress
                  }  // container tag-rewrite
    
                  container redundancy {
                    if-feature l2vpn_is_cli_supported;
                    description
                      "PW redundancy settings";
                    container one-way {
                      presence
                        "Indicates a one-way node is configured.";
                      description
                        "Force one-way PW redundancy behavior in Redundancy Group";
                    }  // container one-way
    
                    leaf initial-delay {
                      type uint32 {
                        range "0..120";
                      }
                      description
                        "Initial delay before activating the redundant PW";
                    }
    
                    container load-balancing {
                      description
                        "PW class Load Balancing";
                      container pw-label {
                        presence
                          "Indicates a pw-label node is configured.";
                        description
                          "Enable PW VC label based load balancing";
                      }  // container pw-label
    
                      container flow-label {
                        description
                          "Flow label based load balancing setting";
                        container transmit {
                          must
                            "not(../receive or ../both)";
                          presence
                            "Indicates a transmit node is configured.";
                          description
                            "Insert Flow label on transmit ";
                          container static {
                            presence
                              "Indicates a static node is configured.";
                            description
                              "Set Flow label parameters statically";
                          }  // container static
                        }  // container transmit
    
                        container receive {
                          must
                            "not(../transmit or ../both)";
                          presence
                            "Indicates a receive node is configured.";
                          description
                            "Discard Flow label on receive";
                          container static {
                            presence
                              "Indicates a static node is configured.";
                            description
                              "Set Flow label parameters statically";
                          }  // container static
                        }  // container receive
    
                        container both {
                          must
                            "not(../transmit or ../receive)";
                          presence
                            "Indicates a both node is configured.";
                          description
                            "Insert/Discard Flow label on transmit/recceive";
                          container static {
                            presence
                              "Indicates a static node is configured.";
                            description
                              "Set Flow label parameters statically";
                          }  // container static
                        }  // container both
    
                        container code {
                          description
                            "Flow label TLV code";
                          container one7 {
                            presence
                              "Indicates a one7 node is configured.";
                            description
                              "Legacy code value";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disables sending code 17 TLV";
                            }  // container disable
                          }  // container one7
                        }  // container code
                      }  // container flow-label
                    }  // container load-balancing
    
                    container ipv4 {
                      description
                        "Set the local source IPv4 address";
                      leaf source {
                        type inet:ipv4-address-no-zone;
                        description
                          "The local source IPv4 address";
                      }
                    }  // container ipv4
                  }  // container redundancy
                }  // container mpls
    
                container l2tpv3 {
                  presence
                    "Indicates a l2tpv3 node is configured.";
                  description
                    "Set pseudowire encapsulation to L2TPV3";
                  container protocol {
                    description
                      "Set the dynamic pseudowire signaling protocol";
                    container l2tpv3 {
                      presence
                        "Indicates a l2tpv3 node is configured.";
                      description
                        "Set L2TPv3 as the signaling protocol for this pseudowire class";
                      leaf class {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                          pattern
                            '[a-zA-Z][-_.a-z0-9A-Z]*';
                        }
                        description
                          "L2TPv3 class";
                      }
                    }  // container l2tpv3
                  }  // container protocol
    
                  container dfbit {
                    description
                      "Settings of the Don't Fragment Bit (DFBIT)";
                    container set {
                      presence
                        "Indicates a set node is configured.";
                      description
                        "Set the DFBIT to 1";
                    }  // container set
                  }  // container dfbit
    
                  container tos {
                    description
                      "Setting of Type of Service (ToS)";
                    leaf value {
                      type uint32 {
                        range "0..255";
                      }
                      must "../reflect";
                      description
                        "Set the value of the ToS";
                    }
    
                    container reflect {
                      must "../value";
                      presence
                        "Indicates a reflect node is configured.";
                      description
                        "Reflect the TOS";
                    }  // container reflect
                  }  // container tos
    
                  leaf ttl {
                    type uint32 {
                      range "1..255";
                    }
                    description
                      "Set the Time To Live (TTL)";
                  }
    
                  container pmtu {
                    presence
                      "Indicates a pmtu node is configured.";
                    description
                      "Path Maximum Transmission Unit (PMTU)";
                    leaf max {
                      type uint32 {
                        range "68..65535";
                      }
                      description
                        "Set the Maximum allowable session MTU";
                    }
                  }  // container pmtu
    
                  container ipv4 {
                    description
                      "Set the local source IPv4 address";
                    leaf source {
                      type inet:ipv4-address-no-zone;
                      description
                        "The local source IPv4 address";
                    }
                  }  // container ipv4
    
                  container cookie {
                    description
                      "L2TPv3 cookie setting";
                    container size {
                      description
                        "L2TPv3 cookie size";
                      container zero {
                        must
                          "not(../four or ../eight)";
                        presence
                          "Indicates a zero node is configured.";
                        description
                          "The cookie size is zero bytes";
                      }  // container zero
    
                      container four {
                        must
                          "not(../zero or ../eight)";
                        presence
                          "Indicates a four node is configured.";
                        description
                          "The cookie size is four bytes";
                      }  // container four
    
                      container eight {
                        must
                          "not(../zero or ../four)";
                        presence
                          "Indicates a eight node is configured.";
                        description
                          "The cookie size is eight bytes";
                      }  // container eight
                    }  // container size
                  }  // container cookie
    
                  container sequencing {
                    description "Sequencing";
                    container both {
                      presence
                        "Indicates a both node is configured.";
                      description
                        "Sequencing on both transmit and receive side";
                      leaf resync {
                        type uint32 {
                          range "5..65535";
                        }
                        description
                          "Set the threshold for out-of-sequence packets before resync";
                      }
                    }  // container both
                  }  // container sequencing
    
                  container transport-mode {
                    description
                      "Remote transport mode";
                    container ethernet {
                      must "not(../vlan)";
                      presence
                        "Indicates a ethernet node is configured.";
                      description
                        "Ethernet port mode";
                    }  // container ethernet
    
                    container vlan {
                      must "not(../ethernet)";
                      presence
                        "Indicates a vlan node is configured.";
                      description
                        "Vlan tagged mode";
                    }  // container vlan
                  }  // container transport-mode
                }  // container l2tpv3
              }  // container encapsulation
    
              container backup {
                description "Pseudowire backup";
                container disable {
                  description
                    "Disable backup when primary comes back up";
                  leaf delay {
                    type uint32 {
                      range "0..180";
                    }
                    must "not(../never)";
                    description
                      "Disable backup after a specified delay";
                  }
    
                  container never {
                    must "not(../delay)";
                    presence
                      "Indicates a never node is configured.";
                    description
                      "Never disable backup";
                  }  // container never
                }  // container disable
              }  // container backup
    
              container mac-withdraw {
                presence
                  "Indicates a mac-withdraw node is configured.";
                description
                  "Send MAC withdraw message when PW becomes active";
              }  // container mac-withdraw
            }  // list pw-class
          }  // container pw-classes
    
          container ignore-mtu-mismatch-ad {
            presence
              "Indicates a ignore-mtu-mismatch-ad node is configured.";
            description
              "Ignore MTU mismatch for auto-discovered PWs";
          }  // container ignore-mtu-mismatch-ad
    
          container ignore-mtu-mismatch {
            presence
              "Indicates a ignore-mtu-mismatch node is configured.";
            description
              "Ignore MTU mismatch for all L2VPN";
          }  // container ignore-mtu-mismatch
    
          leaf description {
            type string {
              length "1..64";
            }
            description
              "Multi segment psedowire global description";
          }
    
          container pw-status {
            description "Configure PW status";
            container disable {
              presence
                "Indicates a disable node is configured.";
              description "Disable PW status";
            }  // container disable
          }  // container pw-status
    
          leaf router-id {
            if-feature l2vpn_is_cli_supported;
            type inet:ipv4-address-no-zone;
            description "Global L2VPN Router ID";
          }
    
          container load-balancing {
            description
              "Global L2VPN Load Balancing";
            container flow {
              description
                "Enable Flow based load balancing";
              container src-dst-mac {
                must "not(../src-dst-ip)";
                presence
                  "Indicates a src-dst-mac node is configured.";
                description
                  "Use source and destination MAC addresses for hashing";
              }  // container src-dst-mac
    
              container src-dst-ip {
                must "not(../src-dst-mac)";
                presence
                  "Indicates a src-dst-ip node is configured.";
                description
                  "Use source and destination IP addresses for hashing";
              }  // container src-dst-ip
            }  // container flow
          }  // container load-balancing
    
          container capability {
            description "Global capability mode";
            container single-mode {
              must "not(../high-mode)";
              presence
                "Indicates a single-mode node is configured.";
              description
                "Disable global capability re-computation";
            }  // container single-mode
    
            container high-mode {
              must "not(../single-mode)";
              presence
                "Indicates a high-mode node is configured.";
              description
                "Compute global capability as the highest node capability";
            }  // container high-mode
          }  // container capability
    
          container pw-oam {
            description "PW OAM";
            container refresh {
              description "Refresh interval";
              leaf transmit {
                type uint32 {
                  range "1..4095";
                }
                description "Transmit";
              }
            }  // container refresh
          }  // container pw-oam
    
          container tcn-propagation {
            presence
              "Indicates a tcn-propagation node is configured.";
            description
              "Enable topology change notification propagation";
          }  // container tcn-propagation
    
          container pw-grouping {
            presence
              "Indicates a pw-grouping node is configured.";
            description "Enable PW-Grouping";
          }  // container pw-grouping
    
          container neighbors {
            description "neighbor submode";
            container all {
              description "all neighbors";
              container ldp {
                description "LDP protocol";
                container flap {
                  presence
                    "Indicates a flap node is configured.";
                  description
                    "Forcing targetted-sesion flapping";
                }  // container flap
              }  // container ldp
            }  // container all
          }  // container neighbors
    
          container mac {
            description "Global MAC commands";
            container limit {
              description
                "Global MAC limit commands";
              leaf threshold {
                type uint32 {
                  range "1..100";
                }
                description
                  "Global MAC limit threshold";
              }
            }  // container limit
          }  // container mac
    
          container xconnect {
            description
              "Configure cross connect commands";
            container groups {
              description
                "Specify the group the cross connects belong to";
              list group {
                key "group-name";
                description
                  "Specify the group the cross connects belong to";
                leaf group-name {
                  type xr:Cisco-ios-xr-string {
                    length "1..32";
                  }
                  description
                    "Specify the group the cross connects belong to";
                }
    
                container p2ps {
                  description
                    "Configure point to point cross connect commands";
                  list p2p {
                    key "p2p-xconnect-name";
                    description
                      "Configure point to point cross connect commands";
                    leaf p2p-xconnect-name {
                      type xr:Cisco-ios-xr-string {
                        length "1..38";
                      }
                      description
                        "Configure point to point cross connect commands";
                    }
    
                    container interfaces {
                      description
                        "Specify the attachment circuit ";
                      list interface {
                        key "interface-name";
                        description
                          "Specify (sub-)interface name to cross connect";
                        leaf interface-name {
                          type xr:Interface-name;
                          description
                            "Specify (sub-)interface name to cross connect";
                        }
                      }  // list interface
                    }  // container interfaces
    
                    leaf description {
                      type string {
                        length "1..64";
                      }
                      description
                        "Description for cross connect";
                    }
    
                    container vpws-seamless-integration {
                      if-feature l2vpn_platform_vpws_seamless_integration_supported;
                      presence
                        "Indicates a vpws-seamless-integration node is configured.";
                      description
                        "EVPN-VPWS Seamless Integration with Legacy VPWS";
                    }  // container vpws-seamless-integration
    
                    container interworking {
                      description
                        "Set attachment circuit interworking";
                      container ipv4 {
                        must "not(../ethernet)";
                        presence
                          "Indicates a ipv4 node is configured.";
                        description
                          "IPv4 interworking";
                      }  // container ipv4
    
                      container ethernet {
                        must "not(../ipv4)";
                        presence
                          "Indicates a ethernet node is configured.";
                        description
                          "Ethernet interworking";
                      }  // container ethernet
                    }  // container interworking
    
                    container backup {
                      if-feature l2vpn_p2p_backup_supported;
                      description
                        "Specify backup to be shared by p2p xconnect segments";
                      list interface {
                        key "interface-name";
                        description
                          "Specify the attachment circuit";
                        leaf interface-name {
                          type xr:Interface-name;
                          description
                            "Specify the attachment circuit";
                        }
                      }  // list interface
                    }  // container backup
    
                    container neighbor {
                      description
                        "Specify the peer to cross connect";
                      container ipv4s {
                        description "IPv4";
                        list ipv4 {
                          key "address pw-id";
                          description "IPv4";
                          leaf address {
                            type inet:ipv4-address-no-zone;
                            description "IPv4";
                          }
    
                          leaf pw-id {
                            type uint32 {
                              range
                                "1..4294967295";
                            }
                            description
                              "Specify the pseudowire id";
                          }
    
                          container backup {
                            description
                              "Backup pseudowire for the cross connect";
                            container neighbors {
                              description
                                "Specify the peer to cross connect";
                              list neighbor {
                                key "address pw-id";
                                description
                                  "Specify the peer to cross connect";
                                leaf address {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "Specify the peer to cross connect";
                                }
    
                                leaf pw-id {
                                  type uint32 {
                                    range
                                      "1..4294967295";
                                  }
                                  description
                                    "Specify the pseudowire id";
                                }
    
                                container mpls {
                                  description
                                    "MPLS L2VPN PW command";
                                  container static {
                                    description
                                      "MPLS L2VPN static settings";
                                    container label {
                                      description
                                        "MPLS L2VPN static labels";
                                      leaf local {
                                        type uint32 {
                                          range
                                            "16..1048575";
                                        }
                                        must
                                          "../remote";
                                        description
                                          "Local pseudowire label";
                                      }
    
                                      leaf remote {
                                        type uint32 {
                                          range
                                            "16..1048575";
                                        }
                                        must
                                          "../local";
                                        description
                                          "Remote pseudowire label";
                                      }
                                    }  // container label
                                  }  // container static
                                }  // container mpls
    
                                leaf pw-class {
                                  type xr:Cisco-ios-xr-string {
                                    length
                                      "1..32";
                                  }
                                  description
                                    "PW class template name to use for the backup PW";
                                }
                              }  // list neighbor
                            }  // container neighbors
                          }  // container backup
    
                          container mpls {
                            description
                              "MPLS L2VPN PW command";
                            container static {
                              description
                                "MPLS L2VPN static settings";
                              container label {
                                description
                                  "MPLS L2VPN static labels";
                                leaf local {
                                  type uint32 {
                                    range
                                      "16..1048575";
                                  }
                                  must
                                    "../remote";
                                  description
                                    "Local pseudowire label";
                                }
    
                                leaf remote {
                                  type uint32 {
                                    range
                                      "16..1048575";
                                  }
                                  must
                                    "../local";
                                  description
                                    "Remote pseudowire label";
                                }
                              }  // container label
                            }  // container static
                          }  // container mpls
    
                          leaf pw-class {
                            type xr:Cisco-ios-xr-string {
                              length "1..32";
                            }
                            description
                              "PW class template name to use for this XC";
                          }
    
                          container tag-impose {
                            description
                              "tag impose mode";
                            leaf vlan {
                              type uint32 {
                                range "1..4094";
                              }
                              description
                                "vlan tagged mode";
                            }
                          }  // container tag-impose
    
                          leaf bandwidth {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "bandwidth";
                          }
    
                          container source {
                            description
                              "Source address of PW";
                            leaf ipv6-address {
                              type inet:ipv6-address-no-zone;
                              description
                                "Source IPv6 address of PW";
                            }
                          }  // container source
    
                          container l2tp {
                            description
                              "L2TP PW";
                            container static {
                              presence
                                "Indicates a static node is configured.";
                              description
                                "L2TP PW static";
                              container local {
                                description
                                  "L2TP PW static local";
                                leaf session {
                                  type uint32 {
                                    range
                                      "1..1023";
                                  }
                                  description
                                    "L2TP PW static local session ID";
                                }
    
                                container cookie {
                                  description
                                    "L2TP PW static local cookie settings";
                                  container size {
                                    description
                                      "L2TP PW static local cookie size settings";
                                    container zero {
                                      presence
                                        "Indicates a zero node is configured.";
                                      description
                                        "The cookie size is zero bytes";
                                    }  // container zero
    
                                    container four {
                                      presence
                                        "Indicates a four node is configured.";
                                      description
                                        "The cookie size is four bytes";
                                      leaf value {
                                        type uint32 {
                                          range
                                            "0..4294967295";
                                        }
                                        mandatory
                                          true;
                                        description
                                          "The value of the cookie";
                                      }
                                    }  // container four
    
                                    container eight {
                                      presence
                                        "Indicates a eight node is configured.";
                                      description
                                        "The cookie size is eight bytes";
                                      leaf value {
                                        type uint32 {
                                          range
                                            "0..4294967295";
                                        }
                                        must
                                          "../higher-4-bytes-value";
                                        mandatory
                                          true;
                                        description
                                          "The value of the cookie";
                                      }
    
                                      leaf higher-4-bytes-value {
                                        type uint32 {
                                          range
                                            "0..4294967295";
                                        }
                                        must
                                          "../value";
                                        mandatory
                                          true;
                                        description
                                          "Higher 4 bytes value";
                                      }
                                    }  // container eight
                                  }  // container size
    
                                  container secondary {
                                    description
                                      "L2TP PW static secondary local cookie settings";
                                    container size {
                                      description
                                        "L2TP PW static local cookie size settings";
                                      container zero {
                                        presence
                                          "Indicates a zero node is configured.";
                                        description
                                          "The cookie size is zero bytes";
                                      }  // container zero
    
                                      container four {
                                        presence
                                          "Indicates a four node is configured.";
                                        description
                                          "The cookie size is four bytes";
                                        leaf value {
                                          type uint32 {
                                            range
                                              "0..4294967295";
                                          }
                                          mandatory
                                            true;
                                          description
                                            "The value of the cookie";
                                        }
                                      }  // container four
    
                                      container eight {
                                        presence
                                          "Indicates a eight node is configured.";
                                        description
                                          "The cookie size is eight bytes";
                                        leaf value {
                                          type uint32 {
                                            range
                                              "0..4294967295";
                                          }
                                          must
                                            "../higher-4-bytes-value";
                                          mandatory
                                            true;
                                          description
                                            "The value of the cookie";
                                        }
    
                                        leaf higher-4-bytes-value {
                                          type uint32 {
                                            range
                                              "0..4294967295";
                                          }
                                          must
                                            "../value";
                                          mandatory
                                            true;
                                          description
                                            "Higher 4 bytes value";
                                        }
                                      }  // container eight
                                    }  // container size
                                  }  // container secondary
                                }  // container cookie
                              }  // container local
    
                              container remote {
                                description
                                  "L2TP PW static remote";
                                leaf session {
                                  type uint32 {
                                    range
                                      "1..1023";
                                  }
                                  description
                                    "L2TP PW static remote session ID";
                                }
    
                                container cookie {
                                  description
                                    "L2TP PW static remote cookie settings";
                                  container size {
                                    description
                                      "L2TP PW static remote cookie size settings";
                                    container zero {
                                      presence
                                        "Indicates a zero node is configured.";
                                      description
                                        "The cookie size is zero bytes";
                                    }  // container zero
    
                                    container four {
                                      presence
                                        "Indicates a four node is configured.";
                                      description
                                        "The cookie size is four bytes";
                                      leaf value {
                                        type uint32 {
                                          range
                                            "0..4294967295";
                                        }
                                        mandatory
                                          true;
                                        description
                                          "The value of the cookie";
                                      }
                                    }  // container four
    
                                    container eight {
                                      presence
                                        "Indicates a eight node is configured.";
                                      description
                                        "The cookie size is eight bytes";
                                      leaf value {
                                        type uint32 {
                                          range
                                            "0..4294967295";
                                        }
                                        must
                                          "../higher-4-bytes-value";
                                        mandatory
                                          true;
                                        description
                                          "The value of the cookie";
                                      }
    
                                      leaf higher-4-bytes-value {
                                        type uint32 {
                                          range
                                            "0..4294967295";
                                        }
                                        must
                                          "../value";
                                        mandatory
                                          true;
                                        description
                                          "Higher 4 bytes value";
                                      }
                                    }  // container eight
                                  }  // container size
                                }  // container cookie
                              }  // container remote
                            }  // container static
                          }  // container l2tp
                        }  // list ipv4
                      }  // container ipv4s
    
                      container ipv6s {
                        description "IPv4";
                        list ipv6 {
                          key "address pw-id";
                          description "IPv6";
                          leaf address {
                            type inet:ipv6-address-no-zone;
                            description "IPv6";
                          }
    
                          leaf pw-id {
                            type uint32 {
                              range
                                "1..4294967295";
                            }
                            description
                              "Specify the pseudowire id";
                          }
    
                          container backup {
                            description
                              "Backup pseudowire for the cross connect";
                            container neighbors {
                              description
                                "Specify the peer to cross connect";
                              list neighbor {
                                key "address pw-id";
                                description
                                  "Specify the peer to cross connect";
                                leaf address {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "Specify the peer to cross connect";
                                }
    
                                leaf pw-id {
                                  type uint32 {
                                    range
                                      "1..4294967295";
                                  }
                                  description
                                    "Specify the pseudowire id";
                                }
    
                                container mpls {
                                  description
                                    "MPLS L2VPN PW command";
                                  container static {
                                    description
                                      "MPLS L2VPN static settings";
                                    container label {
                                      description
                                        "MPLS L2VPN static labels";
                                      leaf local {
                                        type uint32 {
                                          range
                                            "16..1048575";
                                        }
                                        must
                                          "../remote";
                                        description
                                          "Local pseudowire label";
                                      }
    
                                      leaf remote {
                                        type uint32 {
                                          range
                                            "16..1048575";
                                        }
                                        must
                                          "../local";
                                        description
                                          "Remote pseudowire label";
                                      }
                                    }  // container label
                                  }  // container static
                                }  // container mpls
    
                                leaf pw-class {
                                  type xr:Cisco-ios-xr-string {
                                    length
                                      "1..32";
                                  }
                                  description
                                    "PW class template name to use for the backup PW";
                                }
                              }  // list neighbor
                            }  // container neighbors
                          }  // container backup
    
                          container mpls {
                            description
                              "MPLS L2VPN PW command";
                            container static {
                              description
                                "MPLS L2VPN static settings";
                              container label {
                                description
                                  "MPLS L2VPN static labels";
                                leaf local {
                                  type uint32 {
                                    range
                                      "16..1048575";
                                  }
                                  must
                                    "../remote";
                                  description
                                    "Local pseudowire label";
                                }
    
                                leaf remote {
                                  type uint32 {
                                    range
                                      "16..1048575";
                                  }
                                  must
                                    "../local";
                                  description
                                    "Remote pseudowire label";
                                }
                              }  // container label
                            }  // container static
                          }  // container mpls
    
                          leaf pw-class {
                            type xr:Cisco-ios-xr-string {
                              length "1..32";
                            }
                            description
                              "PW class template name to use for this XC";
                          }
    
                          container tag-impose {
                            description
                              "tag impose mode";
                            leaf vlan {
                              type uint32 {
                                range "1..4094";
                              }
                              description
                                "vlan tagged mode";
                            }
                          }  // container tag-impose
    
                          leaf bandwidth {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "bandwidth";
                          }
    
                          container source {
                            description
                              "Source address of PW";
                            leaf ipv6-address {
                              type inet:ipv6-address-no-zone;
                              description
                                "Source IPv6 address of PW";
                            }
                          }  // container source
    
                          container l2tp {
                            description
                              "L2TP PW";
                            container static {
                              presence
                                "Indicates a static node is configured.";
                              description
                                "L2TP PW static";
                              container local {
                                description
                                  "L2TP PW static local";
                                leaf session {
                                  type uint32 {
                                    range
                                      "1..1023";
                                  }
                                  description
                                    "L2TP PW static local session ID";
                                }
    
                                container cookie {
                                  description
                                    "L2TP PW static local cookie settings";
                                  container size {
                                    description
                                      "L2TP PW static local cookie size settings";
                                    container zero {
                                      presence
                                        "Indicates a zero node is configured.";
                                      description
                                        "The cookie size is zero bytes";
                                    }  // container zero
    
                                    container four {
                                      presence
                                        "Indicates a four node is configured.";
                                      description
                                        "The cookie size is four bytes";
                                      leaf value {
                                        type uint32 {
                                          range
                                            "0..4294967295";
                                        }
                                        mandatory
                                          true;
                                        description
                                          "The value of the cookie";
                                      }
                                    }  // container four
    
                                    container eight {
                                      presence
                                        "Indicates a eight node is configured.";
                                      description
                                        "The cookie size is eight bytes";
                                      leaf value {
                                        type uint32 {
                                          range
                                            "0..4294967295";
                                        }
                                        must
                                          "../higher-4-bytes-value";
                                        mandatory
                                          true;
                                        description
                                          "The value of the cookie";
                                      }
    
                                      leaf higher-4-bytes-value {
                                        type uint32 {
                                          range
                                            "0..4294967295";
                                        }
                                        must
                                          "../value";
                                        mandatory
                                          true;
                                        description
                                          "Higher 4 bytes value";
                                      }
                                    }  // container eight
                                  }  // container size
    
                                  container secondary {
                                    description
                                      "L2TP PW static secondary local cookie settings";
                                    container size {
                                      description
                                        "L2TP PW static local cookie size settings";
                                      container zero {
                                        presence
                                          "Indicates a zero node is configured.";
                                        description
                                          "The cookie size is zero bytes";
                                      }  // container zero
    
                                      container four {
                                        presence
                                          "Indicates a four node is configured.";
                                        description
                                          "The cookie size is four bytes";
                                        leaf value {
                                          type uint32 {
                                            range
                                              "0..4294967295";
                                          }
                                          mandatory
                                            true;
                                          description
                                            "The value of the cookie";
                                        }
                                      }  // container four
    
                                      container eight {
                                        presence
                                          "Indicates a eight node is configured.";
                                        description
                                          "The cookie size is eight bytes";
                                        leaf value {
                                          type uint32 {
                                            range
                                              "0..4294967295";
                                          }
                                          must
                                            "../higher-4-bytes-value";
                                          mandatory
                                            true;
                                          description
                                            "The value of the cookie";
                                        }
    
                                        leaf higher-4-bytes-value {
                                          type uint32 {
                                            range
                                              "0..4294967295";
                                          }
                                          must
                                            "../value";
                                          mandatory
                                            true;
                                          description
                                            "Higher 4 bytes value";
                                        }
                                      }  // container eight
                                    }  // container size
                                  }  // container secondary
                                }  // container cookie
                              }  // container local
    
                              container remote {
                                description
                                  "L2TP PW static remote";
                                leaf session {
                                  type uint32 {
                                    range
                                      "1..1023";
                                  }
                                  description
                                    "L2TP PW static remote session ID";
                                }
    
                                container cookie {
                                  description
                                    "L2TP PW static remote cookie settings";
                                  container size {
                                    description
                                      "L2TP PW static remote cookie size settings";
                                    container zero {
                                      presence
                                        "Indicates a zero node is configured.";
                                      description
                                        "The cookie size is zero bytes";
                                    }  // container zero
    
                                    container four {
                                      presence
                                        "Indicates a four node is configured.";
                                      description
                                        "The cookie size is four bytes";
                                      leaf value {
                                        type uint32 {
                                          range
                                            "0..4294967295";
                                        }
                                        mandatory
                                          true;
                                        description
                                          "The value of the cookie";
                                      }
                                    }  // container four
    
                                    container eight {
                                      presence
                                        "Indicates a eight node is configured.";
                                      description
                                        "The cookie size is eight bytes";
                                      leaf value {
                                        type uint32 {
                                          range
                                            "0..4294967295";
                                        }
                                        must
                                          "../higher-4-bytes-value";
                                        mandatory
                                          true;
                                        description
                                          "The value of the cookie";
                                      }
    
                                      leaf higher-4-bytes-value {
                                        type uint32 {
                                          range
                                            "0..4294967295";
                                        }
                                        must
                                          "../value";
                                        mandatory
                                          true;
                                        description
                                          "Higher 4 bytes value";
                                      }
                                    }  // container eight
                                  }  // container size
                                }  // container cookie
                              }  // container remote
                            }  // container static
                          }  // container l2tp
                        }  // list ipv6
                      }  // container ipv6s
    
                      container routeds {
                        description
                          "Specify a routed PW";
                        list routed {
                          key "global-id target-l2-prefix target-ac-id source";
                          description
                            "Specify a routed PW";
                          leaf global-id {
                            type uint32 {
                              range
                                "1..4294967295";
                            }
                            description
                              "Specify a routed PW";
                          }
    
                          leaf target-l2-prefix {
                            type inet:ipv4-address-no-zone;
                            description
                              "Target L2 prefix";
                          }
    
                          leaf target-ac-id {
                            type uint32 {
                              range
                                "1..4294967295";
                            }
                            description
                              "Target AC id";
                          }
    
                          leaf source {
                            type uint32 {
                              range
                                "1..4294967295";
                            }
                            description
                              "Source addresss of the routed PW";
                          }
    
                          leaf pw-class {
                            type xr:Cisco-ios-xr-string {
                              length "1..32";
                            }
                            description
                              "PW class template name to use for this XC";
                          }
    
                          container tag-impose {
                            description
                              "tag impose mode";
                            leaf vlan {
                              type uint32 {
                                range "1..4094";
                              }
                              description
                                "vlan tagged mode";
                            }
                          }  // container tag-impose
                        }  // list routed
                      }  // container routeds
    
                      container evpn {
                        description
                          "Specify the Ethernet VPN";
                        container evi {
                          description
                            "Ethernet VPN Identifier";
                          container targets {
                            description
                              "Specify remote attachment circuit identifier";
                            list target {
                              key "vpn-id remote-ac-id source";
                              description
                                "Specify remote attachment circuit identifier";
                              leaf vpn-id {
                                type uint32 {
                                  range
                                    "1..65534";
                                }
                                description
                                  "Ethernet VPN Identifier";
                              }
    
                              leaf remote-ac-id {
                                type uint32 {
                                  range
                                    "1..4294967294";
                                }
                                description
                                  "Specify remote attachment circuit identifier";
                              }
    
                              leaf source {
                                type uint32 {
                                  range
                                    "1..4294967294";
                                }
                                description
                                  "Specify source attachment circuit identifier";
                              }
    
                              leaf pw-class {
                                type xr:Cisco-ios-xr-string {
                                  length "1..32";
                                }
                                description
                                  "PW class template name to use";
                              }
                            }  // list target
                          }  // container targets
    
                          container services {
                            description
                              "Specify service ID (used as local and remote ac-id)";
                            list service {
                              key "vpn-id service-id";
                              description
                                "Specify service ID (used as local and remote ac-id)";
                              leaf vpn-id {
                                type uint32 {
                                  range
                                    "1..65534";
                                }
                                description
                                  "Ethernet VPN Identifier";
                              }
    
                              leaf service-id {
                                type uint32 {
                                  range
                                    "1..4294967294";
                                }
                                description
                                  "Specify service ID (used as local and remote ac-id)";
                              }
    
                              leaf pw-class {
                                type xr:Cisco-ios-xr-string {
                                  length "1..32";
                                }
                                description
                                  "PW class template name to use";
                              }
                            }  // list service
                          }  // container services
    
                          container segment-routing-targets {
                            description
                              "Specify remote attachment circuit identifier";
                            list target {
                              must
                                "segment-routing/srv6";
                              key "vpn-id remote-ac-id source";
                              description
                                "Specify remote attachment circuit identifier";
                              leaf vpn-id {
                                type uint32 {
                                  range
                                    "1..65534";
                                }
                                description
                                  "Ethernet VPN Identifier";
                              }
    
                              leaf remote-ac-id {
                                type uint32 {
                                  range
                                    "1..4294967294";
                                }
                                description
                                  "Specify remote attachment circuit identifier";
                              }
    
                              leaf source {
                                type uint32 {
                                  range
                                    "1..4294967294";
                                }
                                description
                                  "Specify source attachment circuit identifier";
                              }
    
                              container segment-routing {
                                description
                                  "Configure Segment Routing VPWS Instance";
                                container srv6 {
                                  presence
                                    "Indicates a srv6 node is configured.";
                                  description
                                    "Configure SRv6 VPWS Instance";
                                  leaf locator {
                                    type xr:Cisco-ios-xr-string {
                                      length
                                        "1..58";
                                      pattern
                                        '[a-z0-9A-Z][a-z0-9A-Z_.:]*';
                                    }
                                    description
                                      "PW locator to use for EVPN SID allocation";
                                  }
                                }  // container srv6
                              }  // container segment-routing
                            }  // list target
                          }  // container segment-routing-targets
    
                          container segment-routing-services {
                            description
                              "Specify service ID (used as local and remote ac-id)";
                            list service {
                              must
                                "segment-routing/srv6";
                              key "vpn-id service-id";
                              description
                                "Specify service ID (used as local and remote ac-id)";
                              leaf vpn-id {
                                type uint32 {
                                  range
                                    "1..65534";
                                }
                                description
                                  "Ethernet VPN Identifier";
                              }
    
                              leaf service-id {
                                type uint32 {
                                  range
                                    "1..4294967294";
                                }
                                description
                                  "Specify service ID (used as local and remote ac-id)";
                              }
    
                              container segment-routing {
                                description
                                  "Configure Segment Routing VPWS Instance";
                                container srv6 {
                                  presence
                                    "Indicates a srv6 node is configured.";
                                  description
                                    "Configure SRv6 VPWS Instance";
                                  leaf locator {
                                    type xr:Cisco-ios-xr-string {
                                      length
                                        "1..58";
                                      pattern
                                        '[a-z0-9A-Z][a-z0-9A-Z_.:]*';
                                    }
                                    description
                                      "PW locator to use for EVPN SID allocation";
                                  }
                                }  // container srv6
                              }  // container segment-routing
                            }  // list service
                          }  // container segment-routing-services
                        }  // container evi
                      }  // container evpn
                    }  // container neighbor
    
                    container monitor-sessions {
                      description
                        "Specify the monitor session";
                      list monitor-session {
                        key "monitor-session-name";
                        description
                          "Specify the monitor session";
                        leaf monitor-session-name {
                          type string {
                            length "1..64";
                          }
                          description
                            "Specify the monitor session";
                        }
                      }  // list monitor-session
                    }  // container monitor-sessions
                  }  // list p2p
                }  // container p2ps
    
                container mp2mps {
                  description
                    "Specify the MP2MP instance name";
                  list mp2mp {
                    key "instance-name";
                    description
                      "Specify the MP2MP instance name";
                    leaf instance-name {
                      type xr:Cisco-ios-xr-string {
                        length "1..26";
                      }
                      description
                        "Specify the MP2MP instance name";
                    }
    
                    leaf vpn-id {
                      type uint32 {
                        range "1..4294967295";
                      }
                      description
                        "VPN Identifier (VPN ID)";
                    }
    
                    leaf mtu {
                      type uint32 {
                        range "64..65535";
                      }
                      description
                        "Set maximum transmission unit (payload) for this VPN MP2MP Instance";
                    }
    
                    container shutdown {
                      presence
                        "Indicates a shutdown node is configured.";
                      description
                        "shutdown the L2VPN MP2MP Instance";
                    }  // container shutdown
    
                    leaf l2-encapsulation {
                      type enumeration {
                        enum "vlan" {
                          value 4;
                          description
                            "Ethernet VLAN encapsulation";
                        }
                        enum "ethernet" {
                          value 5;
                          description
                            "Ethernet encapsulation";
                        }
                      }
                      description
                        "Configure the L2 encapsulation for this L2VPN MP2MP Instance";
                    }
    
                    leaf interworking {
                      type enumeration {
                        enum "ethernet" {
                          value 1;
                          description
                            "Ethernet interworking";
                        }
                      }
                      description
                        "Configure the interworking option for this L2VPN MP2MP Instance";
                    }
    
                    container control-word {
                      description
                        "Set control-word option for this VPN MP2MP Instance";
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable control-word";
                      }  // container disable
                    }  // container control-word
    
                    container autodiscovery {
                      description
                        "Enable auto-discovery in this MP2MP";
                      container bgp {
                        presence
                          "Indicates a bgp node is configured.";
                        description
                          "Enable BGP auto-discovery in this MP2MP";
                        container rd {
                          description
                            "route distinguisher";
                          container auto {
                            must
                              "not(../two-byte-as-number or ../four-byte-as-number or ../ipv4-address)";
                            presence
                              "Indicates a auto node is configured.";
                            description
                              "Automatic route distinguisher";
                          }  // container auto
    
                          leaf two-byte-as-number {
                            type uint32 {
                              range "1..65535";
                            }
                            must
                              "not(../four-byte-as-number or ../ipv4-address)";
                            description
                              "Two Byte AS number";
                          }
    
                          leaf two-byte-as-assigned-number {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            must
                              "../two-byte-as-number";
                            description
                              "AS:nn (hex or decimal format)";
                          }
    
                          leaf four-byte-as-number {
                            type uint32 {
                              range
                                "65536..4294967295";
                            }
                            must
                              "not(../two-byte-as-number or ../ipv4-address)";
                            description
                              "Four Byte AS number";
                          }
    
                          leaf four-byte-as-assigned-number {
                            type uint32 {
                              range "0..65535";
                            }
                            must
                              "../four-byte-as-number";
                            description
                              "AS:nn (hex or decimal format)";
                          }
    
                          leaf ipv4-address {
                            type inet:ipv4-address-no-zone;
                            must
                              "not(../two-byte-as-number or ../four-byte-as-number)";
                            description
                              "IP address";
                          }
    
                          leaf ipv4-address-assigned-number {
                            type uint32 {
                              range "0..65535";
                            }
                            must
                              "../ipv4-address";
                            description
                              "IP-address:nn (hex or decimal format)";
                          }
                        }  // container rd
    
                        container route-target {
                          description
                            "Route Target";
                          container import {
                            description
                              "Import Route Target";
                            container two-byte-as-rts {
                              description
                                "Two Byte AS Number Route Target";
                              list two-byte-as-rt {
                                key "two-byte-as-number assigned-number";
                                description
                                  "Two Byte AS Number Route Target";
                                leaf two-byte-as-number {
                                  type uint32 {
                                    range
                                      "1..65535";
                                  }
                                  description
                                    "Two Byte AS Number";
                                }
    
                                leaf assigned-number {
                                  type uint32 {
                                    range
                                      "0..4294967295";
                                  }
                                  description
                                    "AS:nn (hex or decimal format)";
                                }
                              }  // list two-byte-as-rt
                            }  // container two-byte-as-rts
    
                            container four-byte-as-rts {
                              description
                                "Four Byte AS number Route Target";
                              list four-byte-as-rt {
                                key "four-byte-as-number assigned-number";
                                description
                                  "Four Byte AS number Route Target";
                                leaf four-byte-as-number {
                                  type uint32 {
                                    range
                                      "65536..4294967295";
                                  }
                                  description
                                    "Four Byte AS number";
                                }
    
                                leaf assigned-number {
                                  type uint32 {
                                    range
                                      "0..65535";
                                  }
                                  description
                                    "AS:nn (hex or decimal format)";
                                }
                              }  // list four-byte-as-rt
                            }  // container four-byte-as-rts
    
                            container ipv4-address-rts {
                              description
                                "IP address Route Target";
                              list ipv4-address-rt {
                                key "ipv4-address assigned-number";
                                description
                                  "IP address";
                                leaf ipv4-address {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "IP address";
                                }
    
                                leaf assigned-number {
                                  type uint32 {
                                    range
                                      "0..65535";
                                  }
                                  description
                                    "IP-address:nn (hex or decimal format)";
                                }
                              }  // list ipv4-address-rt
                            }  // container ipv4-address-rts
                          }  // container import
    
                          container export {
                            description
                              "Export Route Target";
                            container two-byte-as-rts {
                              description
                                "Two Byte AS Number Route Target";
                              list two-byte-as-rt {
                                key "two-byte-as-number assigned-number";
                                description
                                  "Two Byte AS Number Route Target";
                                leaf two-byte-as-number {
                                  type uint32 {
                                    range
                                      "1..65535";
                                  }
                                  description
                                    "Two Byte AS Number";
                                }
    
                                leaf assigned-number {
                                  type uint32 {
                                    range
                                      "0..4294967295";
                                  }
                                  description
                                    "AS:nn (hex or decimal format)";
                                }
                              }  // list two-byte-as-rt
                            }  // container two-byte-as-rts
    
                            container four-byte-as-rts {
                              description
                                "Four Byte AS number Route Target";
                              list four-byte-as-rt {
                                key "four-byte-as-number assigned-number";
                                description
                                  "Four Byte AS number Route Target";
                                leaf four-byte-as-number {
                                  type uint32 {
                                    range
                                      "65536..4294967295";
                                  }
                                  description
                                    "Four Byte AS number";
                                }
    
                                leaf assigned-number {
                                  type uint32 {
                                    range
                                      "0..65535";
                                  }
                                  description
                                    "AS:nn (hex or decimal format)";
                                }
                              }  // list four-byte-as-rt
                            }  // container four-byte-as-rts
    
                            container ipv4-address-rts {
                              description
                                "IP address Route Target";
                              list ipv4-address-rt {
                                key "ipv4-address assigned-number";
                                description
                                  "IP address";
                                leaf ipv4-address {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "IP address";
                                }
    
                                leaf assigned-number {
                                  type uint32 {
                                    range
                                      "0..65535";
                                  }
                                  description
                                    "IP-address:nn (hex or decimal format)";
                                }
                              }  // list ipv4-address-rt
                            }  // container ipv4-address-rts
                          }  // container export
    
                          container two-byte-as-rts {
                            description
                              "Two Byte AS Number Route Target";
                            list two-byte-as-rt {
                              key "two-byte-as-number assigned-number";
                              description
                                "Two Byte AS Number Route Target";
                              leaf two-byte-as-number {
                                type uint32 {
                                  range
                                    "1..65535";
                                }
                                description
                                  "Two Byte AS Number";
                              }
    
                              leaf assigned-number {
                                type uint32 {
                                  range
                                    "0..4294967295";
                                }
                                description
                                  "AS:nn (hex or decimal format)";
                              }
                            }  // list two-byte-as-rt
                          }  // container two-byte-as-rts
    
                          container four-byte-as-rts {
                            description
                              "Four Byte AS number Route Target";
                            list four-byte-as-rt {
                              key "four-byte-as-number assigned-number";
                              description
                                "Four Byte AS number Route Target";
                              leaf four-byte-as-number {
                                type uint32 {
                                  range
                                    "65536..4294967295";
                                }
                                description
                                  "Four Byte AS number";
                              }
    
                              leaf assigned-number {
                                type uint32 {
                                  range
                                    "0..65535";
                                }
                                description
                                  "AS:nn (hex or decimal format)";
                              }
                            }  // list four-byte-as-rt
                          }  // container four-byte-as-rts
    
                          container ipv4-address-rts {
                            description
                              "IP address Route Target";
                            list ipv4-address-rt {
                              key "ipv4-address assigned-number";
                              description
                                "IP address";
                              leaf ipv4-address {
                                type inet:ipv4-address-no-zone;
                                description
                                  "IP address";
                              }
    
                              leaf assigned-number {
                                type uint32 {
                                  range
                                    "0..65535";
                                }
                                description
                                  "IP-address:nn (hex or decimal format)";
                              }
                            }  // list ipv4-address-rt
                          }  // container ipv4-address-rts
                        }  // container route-target
    
                        container signaling-protocol {
                          description
                            "Enable signaling protocol in this MP2MP";
                          container bgp {
                            presence
                              "Indicates a bgp node is configured.";
                            description
                              "Enable BGP signaling protocol this MP2MP";
                            list ce-id {
                              key "local-ce-id-value";
                              description
                                "Local Customer Edge Identifier (CE ID)";
                              leaf local-ce-id-value {
                                type uint32 {
                                  range
                                    "1..16384";
                                }
                                description
                                  "Local Customer Edge Identifier (CE ID)";
                              }
    
                              list interface {
                                must
                                  "remote-ce-id";
                                key "interface-name";
                                description
                                  "Specify the attachment circuit";
                                leaf interface-name {
                                  type xr:Interface-name;
                                  description
                                    "Specify the attachment circuit";
                                }
    
                                list remote-ce-id {
                                  key "remote-ce-id-value";
                                  description
                                    "Remote Customer Edge Identifier";
                                  leaf remote-ce-id-value {
                                    type uint32 {
                                      range
                                        "1..16384";
                                    }
                                    description
                                      "Remote Customer Edge Identifier";
                                  }
                                }  // list remote-ce-id
                              }  // list interface
    
                              container vpws-seamless-integration {
                                presence
                                  "Indicates a vpws-seamless-integration node is configured.";
                                description
                                  "EVPN-VPWS Seamless Integration with BGP-AD VPWS";
                              }  // container vpws-seamless-integration
                            }  // list ce-id
    
                            leaf ce-range {
                              if-feature l2vpn_is_cli_supported;
                              type uint32 {
                                range "11..100";
                              }
                              description
                                "Local Customer Edge Block Configurable Range";
                            }
    
                            container load-balancing {
                              description
                                "Load Balancing";
                              container flow-label {
                                description
                                  "Flow label based load balancing setting";
                                container transmit {
                                  must
                                    "not(../receive or ../both)";
                                  presence
                                    "Indicates a transmit node is configured.";
                                  description
                                    "Insert Flow label when transmit ";
                                }  // container transmit
    
                                container receive {
                                  must
                                    "not(../transmit or ../both)";
                                  presence
                                    "Indicates a receive node is configured.";
                                  description
                                    "Discard Flow label when receive";
                                }  // container receive
    
                                container both {
                                  must
                                    "not(../transmit or ../receive)";
                                  presence
                                    "Indicates a both node is configured.";
                                  description
                                    "Insert/Discard Flow label when transmit/recceive";
                                }  // container both
                              }  // container flow-label
                            }  // container load-balancing
                          }  // container bgp
                        }  // container signaling-protocol
    
                        container route-policy {
                          description
                            "Apply route policy";
                          leaf export {
                            type xr:Route-policy-name;
                            description
                              "Export route policy";
                          }
                        }  // container route-policy
                      }  // container bgp
                    }  // container autodiscovery
                  }  // list mp2mp
                }  // container mp2mps
              }  // list group
            }  // container groups
          }  // container xconnect
    
          container logging {
            description
              "Configure l2vpn logging commands";
            container pseudowire {
              presence
                "Indicates a pseudowire node is configured.";
              description
                "Enable pseudowire logging";
            }  // container pseudowire
    
            container bridge-domain {
              presence
                "Indicates a bridge-domain node is configured.";
              description
                "Enable bridge-domain logging";
            }  // container bridge-domain
    
            container vfi {
              presence
                "Indicates a vfi node is configured.";
              description "Enable VFI logging";
            }  // container vfi
    
            container nsr {
              presence
                "Indicates a nsr node is configured.";
              description
                "Enable Non-Stop Routing logging";
            }  // container nsr
    
            container pwhe-replication {
              description
                "PWHE replication failure/success logging";
              container disable {
                presence
                  "Indicates a disable node is configured.";
                description
                  "disable PWHE replication failure/success logging";
              }  // container disable
            }  // container pwhe-replication
          }  // container logging
    
          container autodiscovery {
            description
              "Configure global auto-discovery attributes";
            container bgp {
              description
                "auto discovery type bgp";
              container signaling-protocol {
                description
                  "Configure global signaling protocol attributes";
                container bgp {
                  description
                    "signaling protocol type bgp";
                  container mtu {
                    description "mtu";
                    container mismatch {
                      description "mtu mismatch";
                      container ignore {
                        presence
                          "Indicates a ignore node is configured.";
                        description
                          "Ignore MTU mismatch for auto-discovered PWs";
                      }  // container ignore
                    }  // container mismatch
                  }  // container mtu
                }  // container bgp
              }  // container signaling-protocol
            }  // container bgp
          }  // container autodiscovery
    
          container pw-routing {
            description
              "Configure Pseudowire routing attributes";
            leaf global-id {
              type uint32 {
                range "1..4294967295";
              }
              description
                "Configure l2vpn pseudowire routing global id";
            }
    
            container bgp {
              presence
                "Indicates a bgp node is configured.";
              description "Configure BGP";
              container rd {
                description
                  "Set the Route Distinguisher";
                leaf two-byte-as-number {
                  type uint32 {
                    range "1..65535";
                  }
                  must
                    "not(../four-byte-as-number or ../ipv4-address)";
                  description
                    "Two Byte AS Number";
                }
    
                leaf two-byte-as-assigned-number {
                  type uint32 {
                    range "0..4294967295";
                  }
                  must "../two-byte-as-number";
                  description
                    "AS:nn (hex or decimal format)";
                }
    
                leaf four-byte-as-number {
                  type uint32 {
                    range "65536..4294967295";
                  }
                  must
                    "not(../two-byte-as-number or ../ipv4-address)";
                  description
                    "Four Byte AS number";
                }
    
                leaf four-byte-as-assigned-number {
                  type uint32 {
                    range "0..65535";
                  }
                  must "../four-byte-as-number";
                  description
                    "AS:nn (hex or decimal format)";
                }
    
                leaf ipv4-address {
                  type inet:ipv4-address-no-zone;
                  must
                    "not(../two-byte-as-number or ../four-byte-as-number)";
                  description "IP address";
                }
    
                leaf ipv4-address-assigned-number {
                  type uint32 {
                    range "0..65535";
                  }
                  must "../ipv4-address";
                  description
                    "IP-address:nn (hex or decimal format)";
                }
              }  // container rd
            }  // container bgp
          }  // container pw-routing
    
          container snmp {
            description
              "Set SNMP related configuration";
            container mib {
              description
                "Set MIB related configuration";
              container interface {
                description
                  "Set MIB interface related configuration";
                container format {
                  description
                    "Set MIB interface name output format";
                  container external {
                    presence
                      "Indicates a external node is configured.";
                    description
                      "Set MIB interface name output format to external using slash";
                  }  // container external
                }  // container format
              }  // container interface
    
              container pseudowire {
                description
                  "Set MIB pseudowire related configuration";
                container statistics {
                  presence
                    "Indicates a statistics node is configured.";
                  description
                    "Enable MIB pseudowire statistics (for low scale, <16K PWs)";
                }  // container statistics
              }  // container pseudowire
            }  // container mib
          }  // container snmp
        }  // container l2vpn
      }  // module Cisco-IOS-XR-um-l2vpn-cfg
    

© 2023 YumaWorks, Inc. All rights reserved.